Posted July 10, 20196 yr Hello everyone, I am having an interesting crash that I can't seem to track down, that seems to relate to either my ItemBlock registration, or my creative tab. I however lean towards my ItemBlock registration, as I do not get the crash when I comment out the ItemBlock registration, and I still get the crash with my Creative tab commented out. Any help would be greatly appreciated. Thank you in advance for your time! GitHub with Code: https://github.com/Joshj5hawk/FirstMod Crash Log [23:16:07] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ---- // Shall we play a game? Time: 7/9/19 11:16 PM Description: Initializing game java.lang.NullPointerException: Initializing game at net.minecraft.item.ItemBlock.getCreativeTab(ItemBlock.java:155) at net.minecraft.item.Item.getCreativeTabs(Item.java:821) at net.minecraft.item.Item.isInCreativeTab(Item.java:539) at net.minecraft.item.ItemBlock.getSubItems(ItemBlock.java:163) at net.minecraft.client.Minecraft.populateSearchTreeManager(Minecraft.java:631) at net.minecraft.client.Minecraft.init(Minecraft.java:570) at net.minecraft.client.Minecraft.run(Minecraft.java:416) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace: at net.minecraft.item.ItemBlock.getCreativeTab(ItemBlock.java:155) at net.minecraft.item.Item.getCreativeTabs(Item.java:821) at net.minecraft.item.Item.isInCreativeTab(Item.java:539) at net.minecraft.item.ItemBlock.getSubItems(ItemBlock.java:163) at net.minecraft.client.Minecraft.populateSearchTreeManager(Minecraft.java:631) at net.minecraft.client.Minecraft.init(Minecraft.java:570) -- Initialization -- Details: Stacktrace: at net.minecraft.client.Minecraft.run(Minecraft.java:416) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) -- System Details -- Details: Minecraft Version: 1.12.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_211, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 757398200 bytes (722 MB) / 1245708288 bytes (1188 MB) up to 3801088000 bytes (3625 MB) JVM Flags: 0 total; IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP 9.42 Powered by Forge 14.23.5.2775 10 mods loaded, 10 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored | State | ID | Version | Source | Signature | |:----- |:------------ |:------------ |:-------------------------------------------------- |:--------- | | UCH | minecraft | 1.12.2 | minecraft.jar | None | | UCH | mcp | 9.42 | minecraft.jar | None | | UCH | FML | 8.0.99.99 | forgeSrc-1.12.2-14.23.5.2775-PROJECT(FirstMod).jar | None | | UCH | forge | 14.23.5.2775 | forgeSrc-1.12.2-14.23.5.2775-PROJECT(FirstMod).jar | None | | UCH | pixelmon | 2.7.0 | PixelmonGenerations-1.12.2-2.7.0.jar | None | | UCH | jei | 4.13.1.222 | jei_1.12.2-4.13.1.222.jar | None | | UCH | redstoneflux | 2.0.0 | RedstoneFlux-1.12-2.0.0.1.jar | None | | UCH | theoneprobe | 1.4.14 | TheOneProbe-1.12-1.12-1.4.14-7.jar | None | | UCH | intwheel | 1.2.7 | intwheel-1.12-1.2.7.jar | None | | UCH | firstmod | 0.0.1 | firstmod-0.0.1.jar | None | Loaded coremods (and transformers): GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 419.17' Renderer: 'GeForce GTX 1070/PCIe/SSE2' Launched Version: 1.12.2 LWJGL: 2.9.4 OpenGL: GeForce GTX 1070/PCIe/SSE2 GL version 4.6.0 NVIDIA 419.17, NVIDIA Corporation 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: Yes 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) CPU: 8x Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz [23:16:07] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# D:\MinecraftModding\FirstMod\run\.\crash-reports\crash-2019-07-09_23.16.07-client.txt AL lib: (EE) alc_cleanup: 1 device not closed :runClient FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':runClient'. > Process 'command 'C:\Program Files\Java\jdk1.8.0_211\bin\java.exe'' finished with non-zero exit value -1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 22.016 secs Process 'command 'C:\Program Files\Java\jdk1.8.0_211\bin\java.exe'' finished with non-zero exit value -1 11:16:07 PM: Task execution finished 'runClient'. (I bet I'm overlooking something stupid and I'm not actually setting the registry name )
July 10, 20196 yr Author I have a link to my git repo in the OP, But I suppose relevant files are here PoweredAnvil.java package joshj5hawk.firstmod.poweredAnvil; import joshj5hawk.firstmod.FirstMod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.util.ResourceLocation; public class PoweredAnvil extends Block { public static final ResourceLocation POWEREDANVIL = new ResourceLocation(FirstMod.MODID, "poweredanvil"); public PoweredAnvil() { super(Material.IRON); setRegistryName(POWEREDANVIL); setUnlocalizedName(FirstMod.MODID + ".poweredanvil"); setHarvestLevel("pickaxe", 1); setCreativeTab(FirstMod.tabFirstMod); } } CommonProxy.java package joshj5hawk.firstmod.proxy; import joshj5hawk.firstmod.FirstMod; import joshj5hawk.firstmod.ModBlocks; import joshj5hawk.firstmod.poweredAnvil.PoweredAnvil; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @Mod.EventBusSubscriber public class CommonProxy { public void preInit(FMLPreInitializationEvent event) { } public void init(FMLInitializationEvent event) { } public void postInit(FMLPostInitializationEvent event) { } @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) { event.getRegistry().register(new PoweredAnvil()); } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { event.getRegistry().register(new ItemBlock(ModBlocks.poweredAnvil).setRegistryName(new ResourceLocation(FirstMod.MODID, "poweredanvil"))); } } FirstMod.java (Main mod class) package joshj5hawk.firstmod; import joshj5hawk.firstmod.proxy.CommonProxy; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import org.apache.logging.log4j.Logger; @Mod(modid = FirstMod.MODID, name = FirstMod.MODNAME, version = FirstMod.MODVERSION, dependencies = "required:pixelmon@[2.7.0]", useMetadata = true) public class FirstMod { public static final String MODID = "firstmod"; public static final String MODNAME = "First Mod"; public static final String MODVERSION = "0.0.1"; @SidedProxy(clientSide = "joshj5hawk.firstmod.proxy.ClientProxy", serverSide = "joshj5hawk.firstmod.proxy.ServerProxy") public static CommonProxy proxy; @Mod.Instance public static FirstMod instance; public static Logger logger; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); proxy.preInit(event); } @Mod.EventHandler public void init(FMLInitializationEvent event) { proxy.init(event); } @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { proxy.postInit(event); } public static CreativeTabs tabFirstMod = new CreativeTabs("FirstMod") { @Override public ItemStack getTabIconItem() { return new ItemStack(new ItemBlock(ModBlocks.poweredAnvil)); } }; } ModBlocks.java package joshj5hawk.firstmod; import joshj5hawk.firstmod.poweredAnvil.PoweredAnvil; import net.minecraftforge.fml.common.registry.GameRegistry; public class ModBlocks { @GameRegistry.ObjectHolder("mymod:poweredanvil") public static PoweredAnvil poweredAnvil; }
July 10, 20196 yr Author Welp. Josh is an idiot everyone. Make sure you use the same capitalization methods throughout your mod -.-
July 10, 20196 yr Just now, JoshJ5Hawk said: Welp. Josh is an idiot everyone. Make sure you use the same capitalization methods throughout your mod -.- just realized that XD
July 10, 20196 yr Author Just now, ProPane865 said: just realized that XD Thanks for attempting to help, it means a lot I see you helping out like, everyone right now lol. Keep up the good work.
July 10, 20196 yr Just now, JoshJ5Hawk said: Thanks for attempting to help, it means a lot I see you helping out like, everyone right now lol. Keep up the good work. Thx dude, really means a lot to me
July 10, 20196 yr Author I suppose I'll ask this while its here instead of making a new post, semi related I guess. Does anything that I've shown jump out and say "This is why your textures aren't loading"?
July 10, 20196 yr 1 hour ago, JoshJ5Hawk said: I suppose I'll ask this while its here instead of making a new post, semi related I guess. Does anything that I've shown jump out and say "This is why your textures aren't loading"? Please post your log. No longer needed. 1. Using your proxy as the event subscriber is a bad practice, as the one and only purpose is to run code on one dedicated side. Consider using another class for item/block registration instead of the proxies. 2. (Main issue) You have to subscribe to the ModelRegistryEvent and register your items there. An example would be ModelLoader.setCustomModelResourceLocation(yourItem, metadata, new ModelResourceLocation(yourItem.getRegistryName(), "inventory")); Edited July 10, 20196 yr by DavidM Some tips: Spoiler Modder Support: Spoiler 1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code. 2. Always post your code. 3. Never copy and paste code. You won't learn anything from doing that. 4. Quote Programming via Eclipse's hotfixes will get you nowhere 5. Learn to use your IDE, especially the debugger. 6. Quote The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it. Support & Bug Reports: Spoiler 1. Read the EAQ before asking for help. Remember to provide the appropriate log(s). 2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.
July 10, 20196 yr Author 41 minutes ago, DavidM said: Please post your log. No longer needed. 1. Using your proxy as the event subscriber is a bad practice, as the one and only purpose is to run code on one dedicated side. Consider using another class for item/block registration instead of the proxies. 2. (Main issue) You have to subscribe to the ModelRegistryEvent and register your items there. An example would be ModelLoader.setCustomModelResourceLocation(yourItem, metadata, new ModelResourceLocation(yourItem.getRegistryName(), "inventory")); So I did actually add that a bit later, hopefully I called it correctly. I subscribed to it in my PoweredAnvil.java, the main class for the block itself, as such: package joshj5hawk.firstmod.poweredAnvil; import joshj5hawk.firstmod.FirstMod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.Side; public class PoweredAnvil extends Block { public static final ResourceLocation POWEREDANVIL = new ResourceLocation(FirstMod.MODID, "poweredanvil"); public PoweredAnvil() { super(Material.IRON); setRegistryName(new ResourceLocation(FirstMod.MODID, "poweredanvil")); setUnlocalizedName(FirstMod.MODID + ".poweredanvil"); setHarvestLevel("pickaxe", 1); setCreativeTab(FirstMod.tabFirstMod); } @SideOnly(Side.CLIENT) public void initModel() { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), 0, new ModelResourceLocation(getRegistryName(), "inventory")); } } And I have then called it in my ModBlocks.java package joshj5hawk.firstmod; import joshj5hawk.firstmod.poweredAnvil.PoweredAnvil; import net.minecraftforge.fml.common.registry.GameRegistry; public class ModBlocks { @GameRegistry.ObjectHolder("firstmod:poweredanvil") public static PoweredAnvil poweredanvil; public static void initModels() { @SubscribeEvent poweredanvil.initModel(); } } But I'm wondering if I just have a silly typo somewhere again. My block is showing up, albeit untextured and rather large in the player's hand lol, as well as the item as well. Is this the wrong place. Additionally I've committed these changes to my git ( https://github.com/Joshj5hawk/FirstMod ) as well, if you can see anything else that jumps out at you. Once I get this texture bit figured out, I'll look into getting those subscriber events elsewhere. Any suggestions there? Been following along with McJty's 1.12 tuts, but I'm always willing to learn better practices Again, I appreciate the help. The last time I wrote a mod it was for ModLoader lol
July 10, 20196 yr Your model registering code is not in your event subscriber for the ModelRegistryEvent, thus your code is not being called at all. You need an event subscriber for the ModelRegistryEvent in your event subscriber bus (the CommonProxy in your case). A typical event subscriber looks like this: @SubscribeEvent public static void someEventSubscriber(EventClass event) { // ... } Some tips: Spoiler Modder Support: Spoiler 1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code. 2. Always post your code. 3. Never copy and paste code. You won't learn anything from doing that. 4. Quote Programming via Eclipse's hotfixes will get you nowhere 5. Learn to use your IDE, especially the debugger. 6. Quote The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it. Support & Bug Reports: Spoiler 1. Read the EAQ before asking for help. Remember to provide the appropriate log(s). 2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.
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.