Java 如何在minecraft 1.11 forge上注册积木

Java 如何在minecraft 1.11 forge上注册积木,java,minecraft,minecraft-forge,Java,Minecraft,Minecraft Forge,因此,我为名为“BlockTest.java”的块创建了一个类,它扩展了minecraft TNT块,并覆盖了onBlockActivated函数。问题是如何注册块,我只能找到早期版本的教程 我相信对于每个区块,您也需要一个ItemBlock。这就是我目前尝试注册的情况: //(this code is in my main class inside init) public static Block oldTNT; public static ItemBlock oldTNTIB; oldT

因此,我为名为“BlockTest.java”的块创建了一个类,它扩展了minecraft TNT块,并覆盖了onBlockActivated函数。问题是如何注册块,我只能找到早期版本的教程

我相信对于每个区块,您也需要一个ItemBlock。这就是我目前尝试注册的情况:

//(this code is in my main class inside init)
public static Block oldTNT;
public static ItemBlock oldTNTIB;

oldTNT = new blockTest();
oldTNT.setRegistryName("oldTNT");
oldTNT.setUnlocalizedName(oldTNT.getRegistryName().toString());
GameRegistry.register(oldTNT);

oldTNTIB.setRegistryName("oldTNT");
oldTNTIB.setUnlocalizedName(oldTNTIB.getRegistryName().toString());
GameRegistry.register(oldTNTIB);
但这是在破坏游戏,告诉我问题出在注册阶段。这是正确的吗?我也需要实例化itemBlock吗

还有一个问题,我假设像设置创造性标签这样的事情是在我设置了未定位名称的地方完成的


由于我是mod development的新手,所以请友好一些,非常感谢您的帮助。

是的,您需要实例化ItemBlock。这是一种方式:

oldTNTIB = new ItemBlock(oldTNT);
要设置“创意”选项卡,可以使用:

oldTNT.setCreativeTab(<enter tab here>);
oldTNT.setCreativeTab();

是的,您需要实例化ItemBlock。这是一种方式:

oldTNTIB = new ItemBlock(oldTNT);
要设置“创意”选项卡,可以使用:

oldTNT.setCreativeTab(<enter tab here>);
oldTNT.setCreativeTab();

您对两个块(
oldTNT
oldTNTIB
)使用了相同的注册表名
oldTNT
),这将导致崩溃

您需要将第二个块的注册表名更改为与第一个块的注册表名不同的名称

此外,强烈建议在1.11+中,使用所有小写字母表示注册表名等内容。这是因为在1.11+Minecraft的资源包系统中,
ResourceLocation
s强制使用小写。如果在诸如注册表名之类的内容中使用大写字母,这可能会在以后引起混淆


要设置creative选项卡,只需在块实例上使用相应的
CreativeTab
实例调用
setCreativeTab
(所有香草矿车选项卡在
CreativeTab
类中都有静态字段)。

您对两个块使用相同的注册表名
oldTNT
oldTNT
oldTNTIB
)将导致崩溃

您需要将第二个块的注册表名更改为与第一个块的注册表名不同的名称

此外,强烈建议在1.11+中,注册表名等内容使用所有小写字母。这是因为在1.11+中,Minecraft的资源包系统强制
ResourceLocation
s使用小写字母。如果在注册表名等内容中使用大写字母,可能会导致以后的混淆

要设置creative选项卡,只需使用相应的
CreativeTab
实例在块实例上调用
setCreativeTab
(所有香草矿机选项卡在
CreativeTab
类中都有静态字段)