关于minecraft1.20及以上版本fabricMod可能遇到的问题
我在评论区看到一个评论表示ItemGroupEvents.modifyEntriesEvent方法的参数报错,原本想直接回复的,结果我发了两次解答,B站全给我吞了,搞不懂B站的屏蔽词,无奈发一个专栏。

实际上是因为minecraft1.20的代码更新了,1.19版本的modifyEntriesEvent方法需要的ItemGroup对象,1.20需要一个RegistryKey<ItemGroup>对象,所以很简单,我们新建一个RegistryKey<ItemGroup>对象就好了。
以下是我的ModItemGroup类的代码,仅供参考,写法可能与BV1Vj411S71d的略有不同
public class ModItemGroup{
public static final RegistryKey<ItemGroup> ITEM_GROUP = RegistryKey.of(RegistryKeys.ITEM_GROUP, new Identifier(ModEntryMain.MOD_ID, "example"));//前面填自己mod名字,后面的参数随便写,不影响
public static void registerModGroup(){
ModEntryMain.LOGGER.info("注册物品组");
Registry.register(Registries.ITEM_GROUP, ITEM_GROUP,
FabricItemGroup.builder().displayName(Text.translatable("测试mod"))//组名
.icon(()->new ItemStack(ModItem.CITRINE))//设置组的图标
.build());
}
}
对应的,我们把方法的传递参数也改为RegistryKey<ItemGroup>,比如
registerBlockItem(String name, Block block, ItemGroup group)
==============》
registerBlockItem(String name, Block block, RegistryKey<ItemGroup> group),
最后在onInitialize()方法里调用ModItemGroup.registerModGroup()方法就可以了
如果有什么遗漏或错误的地方,请评论告诉我