You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fabric 1.20.1中用@Accessor访问@Unique字段的问题求助

Minecraft Fabric 1.20.1 模组开发:@Accessor访问@Unique字段的Mixin加载错误解决

核心问题分析

错误日志明确指出两个关键问题:

  1. Accessor类未在bettercampfires.mixins.json中注册,Fabric无法识别并加载它
  2. Accessor的目标错误指向了自定义的CampfireBlockEntityMixin,而非被注入的原始类CampfireBlockEntity——@Unique标记的字段最终是注入到CampfireBlockEntity实例中的,Mixin类仅作为字段定义的载体

修复步骤

1. 修正Accessor的目标类

将CampfireBlockEntityAccessor的@Mixin目标改为原始的CampfireBlockEntity类,而非自定义Mixin:

@Mixin(CampfireBlockEntity.class)
public interface CampfireBlockEntityAccessor {

    @Accessor(value = "campfireBurntime", remap = false)
    int getCampfireBurntime();

    @Accessor(value = "campfireBurntime", remap = false)
    void setCampfireBurntime(int burnTime);
}

2. 在mixins.json中注册Accessor

编辑src/main/resources/bettercampfires.mixins.json,将Accessor类的全限定名添加到mixins数组中:

{
  "required": true,
  "package": "com.trongthang.bettercampfires.mixin",
  "compatibilityLevel": "JAVA_17",
  "mixins": [
    "CampfireBlockEntityMixin",
    "CampfireBlockFuel",
    "CampfireBlockEntityAccessor"
  ],
  "injectors": {
    "defaultRequire": 1
  }
}

3. 验证现有逻辑

CampfireBlockFuel中的类型转换逻辑无需修改,只要确保CampfireBlockEntityMixin已在mixins.json中注册(你当前的代码已满足),campfireBurntime字段就能被正确访问。


关键注意事项

  • @Unique字段名必须和Accessor中的value参数完全一致,大小写敏感
  • remap = false必须保留,因为这是自定义字段,无需映射到Minecraft的中间名称

内容的提问来源于stack exchange,提问作者Trong Thang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:18:09