Cerandior Posted November 9, 2015 Posted November 9, 2015 For about some time now i have started a 1.8 mod project. I have started it mostly like a test project to learn more about the way Forge 1.8 works but depending on the way it turns out this project may be published. So today i found some time and started working. I am getting a little bit confused over the rendering. I saw a simple tutorial and then tried to recreate the thing my own way. After i finished it seemed that i had done the most part of simple rendering for items and block using .json however everytime i start the game it just crashes on PreInit phase if i am not mistaken. Maybe i am derping and this is an obvious error, but this is the first time for me working on 1.8 so excuse the non-efficient coding(if there is any). Here is the crash-report: ---- Minecraft Crash Report ---- // Hey, that tickles! Hehehe! Time: 15-11-09 10.41.MD Description: Initializing game java.lang.NullPointerException: Initializing game at com.asolin.client.ItemRenderer.registerItemRenderer(ItemRenderer.java:20) at com.asolin.client.ItemRenderer.registerItemRender(ItemRenderer.java:12) at com.asolin.main.clientProxy.registerRenderInfo(clientProxy.java:11) at com.asolin.main.Asolin.Init(Asolin.java:105) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119) at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:550) at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:248) at net.minecraft.client.Minecraft.startGame(Minecraft.java:446) at net.minecraft.client.Minecraft.run(Minecraft.java:356) at net.minecraft.client.main.Main.main(Main.java:117) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at com.asolin.client.ItemRenderer.registerItemRenderer(ItemRenderer.java:20) at com.asolin.client.ItemRenderer.registerItemRender(ItemRenderer.java:12) at com.asolin.main.clientProxy.registerRenderInfo(clientProxy.java:11) at com.asolin.main.Asolin.Init(Asolin.java:105) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119) at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:550) at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:248) at net.minecraft.client.Minecraft.startGame(Minecraft.java:446) -- Initialization -- Details: Stacktrace: at net.minecraft.client.Minecraft.run(Minecraft.java:356) at net.minecraft.client.main.Main.main(Main.java:117) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) -- System Details -- Details: Minecraft Version: 1.8 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.8.0_65, Oracle Corporation Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 954310200 bytes (910 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.3.1450 4 mods loaded, 4 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) UCH FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8-11.14.3.1450.jar) UCH Forge{11.14.3.1450} [Minecraft Forge] (forgeSrc-1.8-11.14.3.1450.jar) UCE asolin{1.0} [Asolin] (bin) Loaded coremods (and transformers): GL info: ' Vendor: 'ATI Technologies Inc.' Version: '3.3.11672 Compatibility Profile Context' Renderer: 'ATI Radeon HD 3400 Series' Launched Version: 1.8 LWJGL: 2.9.1 OpenGL: ATI Radeon HD 3400 Series GL version 3.3.11672 Compatibility Profile Context, ATI Technologies Inc. GL Caps: Using GL 1.3 multitexturing. Using GL 1.3 texture combiners. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Shaders are available because OpenGL 2.1 is supported. VBOs are available because OpenGL 1.5 is supported. Using VBOs: No Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Packs: [] Current Language: English (US) Profiler Position: N/A (disabled) Here is the code: Main Class: package com.asolin.main; import com.asolin.client.ItemRenderer; import com.asolin.proxies.proxylib; import com.asolin.tools.flintAxe; import com.asolin.tools.flintHoe; import com.asolin.tools.flintSword; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemSword; import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; @Mod(modid = Asolin.MODID, name = Asolin.NAME, version = Asolin.VERSION) public class Asolin { public static final String MODID = "asolin"; public static final String NAME = "Asolin"; public static final String VERSION = "1.0"; @Instance public static Asolin instance; @SidedProxy(clientSide = proxylib.CLIENTSIDE, serverSide = proxylib.SERVERSIDE) public static serverProxy proxy; //Creative Tab public static CreativeTabs asolinTab = new asolinTab(CreativeTabs.getNextID(), "Asolin"); //Armor Material //Tool Material public static Item.ToolMaterial flintMat = EnumHelper.addToolMaterial("flintMat", 1, 95, 3.0F, 0.5F, 10); //Items //Blocks //Tools public static ItemAxe flintAxe; public static ItemSword flintSword; public static ItemSpade flintShovel; public static ItemPickaxe flintPickaxe; public static ItemHoe flintHoe; //Misc @EventHandler public void preInit(FMLPreInitializationEvent event) { ItemRenderer.registerItemRender(); //Items //Blocks //Tools flintAxe = new flintAxe(); flintSword = new flintSword(); flintShovel = new com.asolin.tools.flintShovel(); flintPickaxe = new com.asolin.tools.flintPickaxe(); flintHoe = new flintHoe(); //Machine //Misc //Registering Items //Registering Blocks //Registering Tools GameRegistry.registerItem(flintAxe, flintAxe.getUnlocalizedName().substring(5)); GameRegistry.registerItem(flintSword, flintSword.getUnlocalizedName().substring(5)); GameRegistry.registerItem(flintShovel, flintSword.getUnlocalizedName().substring(5)); GameRegistry.registerItem(flintPickaxe, flintSword.getUnlocalizedName().substring(5)); GameRegistry.registerItem(flintHoe, flintSword.getUnlocalizedName().substring(5)); //Registering Misc } @EventHandler public void Init(FMLPreInitializationEvent event) { proxy.registerRenderInfo(); } @EventHandler public void postInit(FMLPreInitializationEvent event) { } } Proxy Library: package com.asolin.proxies; public class proxylib { public static final String CLIENTSIDE = "com.asolin.main.clientProxy"; public static final String SERVERSIDE = "com.asolin.main.serverProxy"; } Client Proxy: package com.asolin.main; import com.asolin.client.ItemRenderer; import net.minecraft.item.Item; public class clientProxy extends serverProxy{ @Override public void registerRenderInfo(){ ItemRenderer.registerItemRender(); } } ServerProxy: package com.asolin.main; public class serverProxy { public void registerRenderInfo(){ } } ItemRenderer Class ( Custom ) : package com.asolin.client; import com.asolin.main.Asolin; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; public class ItemRenderer { public static void registerItemRender(){ registerItemRenderer(Asolin.flintAxe); registerItemRenderer(Asolin.flintSword); registerItemRenderer(Asolin.flintPickaxe); registerItemRenderer(Asolin.flintHoe); } public static void registerItemRenderer(Item item){ Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Asolin.MODID + ":" + item.getUnlocalizedName().substring(5), "inventory")); } } Quote
AlexIIL Posted November 9, 2015 Posted November 9, 2015 I think the issue here is that Minecraft's RenderItem instance is initialised after init and before post-init. So, to make it would you would need to move the item rendering registration to post init. Quote
Cerandior Posted November 9, 2015 Author Posted November 9, 2015 That didn't work. The error is a null-pointer exception so i am assuming, at some part of the rendering or renderer code is returning null somewhere. Quote
AlexIIL Posted November 9, 2015 Posted November 9, 2015 Do you get the exact same error? What may help would be to put a new line between each function call (so Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Asolin.MODID + ":" + item.getUnlocalizedName().substring(5), "inventory")); would become: Minecraft.getMinecraft() .getRenderItem() .getItemModelMesher() .register(item, 0, new ModelResourceLocation(Asolin.MODID + ":" + item. getUnlocalizedName(). substring(5), "inventory")); So you can see which function call is throwing an error, rather than just "somewhere in the entire line". Quote
Choonster Posted November 9, 2015 Posted November 9, 2015 Your Init and postInit methods are both handling FMLPreInitializationEvent instead of handling FMLInitializationEvent and FMLPostInitializationEvent . The RenderItem instance is created between preInit and init, so it's still null when you try to register your item models in the preInit phase. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
Cerandior Posted November 10, 2015 Author Posted November 10, 2015 Yeah that,s derpy. I probably copy pasted that for the two others from pre init and forgot to change the event names for the others. Well thank you for the help. Quote
jeffryfisher Posted November 10, 2015 Posted November 10, 2015 All things for rendering (e.g.meshing and renderers) are client-only. The server doesn't do display. Quote The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
Cerandior Posted November 10, 2015 Author Posted November 10, 2015 Yes i know. Thats why i am registering it at clientProxy Quote
jeffryfisher Posted November 12, 2015 Posted November 12, 2015 Sorry, I saw the word "renderer" in the main class and commented. My own style is to call proxy.init (or preInit) and not have any mention of client-only features until inside my client proxy. In my own code, calls like ItemRenderer.registerItemRender() and proxy.registerRenderInfo() would be red flags. Incidentally, your ItemRenderer class has "import net.minecraft.client.Minecraft". Isn't that a client-only class (hence "client" in its path)? Quote The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
Cerandior Posted November 12, 2015 Author Posted November 12, 2015 That is not incidentally imported. Minecraft.getMinecraft uses it. And minecraft.getMinecraft it's client only Quote
jeffryfisher Posted November 12, 2015 Posted November 12, 2015 That is not incidentally imported. Minecraft.getMinecraft uses it. And minecraft.getMinecraft it's client only I'm glad you found the error. Quote The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.