Error in minecraft mod: java.lang.NoSuchFieldError: rock

Error in minecraft mod: java.lang.NoSuchFieldError: rock

我在 Idea 中为 MC 1.7.10 编译和使用 mod 没有问题。 将我的 mod 放入项目后:AltLauncher 中的“暗物质”显示错误 java.lang.NoSuchFieldError: rock

在块class中我写了这个构造函数

    public MyModBlock() {
        super(Material.rock);
        setBlockName(blockName);
        setCreativeTab(CreativeTabs.tabBlock);
        GameRegistry.registerBlock(this, blockName);
        GameRegistry.registerTileEntity(MyModTile.class, mymod.MODID + "-MyModTile");
    }

我认为 class Material.rock 在我的开发区和“暗物质”中有不同的版本,想尝试读取 class 字段和 select 一些变体在枚举中。

还有问题:我可以枚举 class fileld

package net.minecraft.block.material;

public class Material {
    public static final Material air;
    public static final Material grass;
    public static final Material ground;
    public static final Material wood;
    public static final Material rock;
    public static final Material iron;
    public static final Material anvil;
    public static final Material water;
    public static final Material lava;
    public static final Material leaves;
...

类似的东西:

foreach (Material m in Material){
   if (m.name == 'rock' or m.name == 'stone' ) { myBlock = new MyModBlock(m) }
}

当您编译 Minecraft mod 时,您可以通过执行 ./gradlew jar 来制作具有反混淆 MCP 名称的版本,或者通过执行 ./gradlew build 来制作具有混淆 SRG 名称的版本。前者仅在开发环境内部起作用,后者仅在开发环境外部起作用。您遇到的错误与尝试 运行 在开发环境之外进行反混淆构建是一致的。