關(guān)于minecraft1.20及以上版本fabricMod可能遇到的問題
我在評論區(qū)看到一個評論表示ItemGroupEvents.modifyEntriesEvent方法的參數(shù)報錯,原本想直接回復(fù)的,結(jié)果我發(fā)了兩次解答,B站全給我吞了,搞不懂B站的屏蔽詞,無奈發(fā)一個專欄。

實際上是因為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名字,后面的參數(shù)隨便寫,不影響
? ?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))//設(shè)置組的圖標
? ? ? ? ? ? ? ? ? ? ? ?.build());
? ?}
}
對應(yīng)的,我們把方法的傳遞參數(shù)也改為RegistryKey<ItemGroup>,比如
registerBlockItem(String name,?Block block,?ItemGroup group)
==============》
registerBlockItem(String name, Block block, RegistryKey<ItemGroup> group),
最后在onInitialize()方法里調(diào)用ModItemGroup.registerModGroup()方法就可以了
如果有什么遺漏或錯誤的地方,請評論告訴我