Register model location for book of teleport
Closed this issue ยท 1 comments
Stacktrace
After #286, initialization fails with:
java.lang.NullPointerException: Initializing game
at bassebombecraft.proxy.ClientProxy.registerItemForRendering(ClientProxy.java:51)
at bassebombecraft.item.book.GenericRightClickedBook.<init>(GenericRightClickedBook.java:60)
at bassebombecraft.item.book.TeleportBook.<init>(TeleportBook.java:16)
at bassebombecraft.item.ItemRegistryEventHandler.registerItems(ItemRegistryEventHandler.java:18)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_4_ItemRegistryEventHandler_registerItems_Register.invoke(.dynamic)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus$1.invoke(EventBus.java:143)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179)
at net.minecraftforge.registries.GameData.fireRegistryEvents(GameData.java:741)
at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:604)
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
at net.minecraft.client.Minecraft.init(Minecraft.java:513)
at net.minecraft.client.Minecraft.run(Minecraft.java:421)
The null pointer exception happens in the ClientProxyregisterItemForRendering() where the getItemModelMesher() returns null:
@Override
public void registerItemForRendering(Item item) {
RenderItem renderItem = Minecraft.getMinecraft().getRenderItem();
ModelResourceLocation location;
location = new ModelResourceLocation(MODID + ":" + item.getUnlocalizedName().substring(5), "inventory");
renderItem.getItemModelMesher().register(item, 0, location);
}
Solution
Use the ModelRegistryEvent in 12.1:
https://suppergerrie2.com/minecraft-1-12-modding-with-forge-3-custom-item/
https://github.com/suppergerrie2/ForgeTutorial/blob/master/per%20part/part%203/src/main/java/com/suppergerrie2/tutorial/init/ModItems.java
http://www.minecraftforge.net/forum/topic/58997-112-registering-blocks-and-itemblocks-the-new-way/
Class ItemRegistryEventHandler is introduced to implement events for registration of items.
Closed by commit b6fd0d2.