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 名称的版本。前者仅在开发环境内部起作用,后者仅在开发环境外部起作用。您遇到的错误与尝试 运行 在开发环境之外进行反混淆构建是一致的。
我在 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 名称的版本。前者仅在开发环境内部起作用,后者仅在开发环境外部起作用。您遇到的错误与尝试 运行 在开发环境之外进行反混淆构建是一致的。