
Deleranax
Members-
Posts
2 -
Joined
-
Last visited
Deleranax's Achievements

Tree Puncher (2/8)
0
Reputation
-
@Draco18s Thanks for all the advice! I will take all this into account and reorganize my mod.
-
Deleranax joined the community
-
Hello everyone! I'd like to apologize in advance because I'm new to mod creation and my problem may be trivial. Minecraft crashes at startup and after some research, it seems that the problem comes from the ItemBlock Registration. it seems that the `ItemBlock`s `block` variable is null and therefore when using `ItemBlock#getCreativeTab()` it throws an NPE. However, I couldn't find the problem after several hours of searching (but there's a good chance it's a stupid mistake...). Here is the repo : https://github.com/Dwight-Studio/Deepworld (The awarded files will be directly quoted below). Time: 8/30/20 2:50 PM Description: Initializing game java.lang.NullPointerException: Initializing game at net.minecraft.item.ItemBlock.getCreativeTab(ItemBlock.java:142) at net.minecraft.item.Item.getCreativeTabs(Item.java:691) at net.minecraft.item.Item.isInCreativeTab(Item.java:416) at net.minecraft.item.ItemBlock.getSubItems(ItemBlock.java:147) at net.minecraft.client.Minecraft.populateSearchTreeManager(Minecraft.java:587) at net.minecraft.client.Minecraft.init(Minecraft.java:529) at net.minecraft.client.Minecraft.run(Minecraft.java:378) 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.legacydev.Main.start(Main.java:86) at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29) Or when I use ItemBlock#getBlock() Time: 8/30/20 9:05 PM Description: Initializing game java.lang.NullPointerException: Initializing game at fr.dwightstudio.deepworld.common.DeepworldItems.prepareItemBlock(DeepworldItems.java:52) at fr.dwightstudio.deepworld.common.DeepworldItems.registerItemBlocks(DeepworldItems.java:39) at fr.dwightstudio.deepworld.common.Deepworld.registerItems(Deepworld.java:70) at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_6_Deepworld_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:144) at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) at net.minecraftforge.registries.GameData.fireRegistryEvents(GameData.java:852) at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:630) at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:252) at net.minecraft.client.Minecraft.init(Minecraft.java:467) at net.minecraft.client.Minecraft.run(Minecraft.java:378) 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.legacydev.Main.start(Main.java:86) at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29) Deepworld.java package fr.dwightstudio.deepworld.common; import fr.dwightstudio.deepworld.common.tile.TileEntityWoodenFrame; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; 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; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.oredict.OreDictionary; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @Mod(modid = Deepworld.MOD_ID) @Mod.EventBusSubscriber() public class Deepworld { // Mod info public static final String MOD_ID = "deepworld"; public static final String MOD_NAME = "The Deep World"; public static final String LOG_PREFIX = MOD_NAME; public static CreativeTabs creativeTab = new CreativeTabDeepworld(); public static Logger logger = LogManager.getLogger(LOG_PREFIX); // This is the instance of your mod as created by Forge. It will never be null. @Mod.Instance(MOD_ID) public static Deepworld INSTANCE; /** * This is the first initialization event. Register tile entities here. * The registry events below will have fired prior to entry to this method. */ @Mod.EventHandler public void preinit(FMLPreInitializationEvent event) { registerTileEntity(); } // This is the second initialization event. Register custom recipes @Mod.EventHandler public void init(FMLInitializationEvent event) { logger.info("Joining the stage..."); } // This is the final initialization event. Register actions from other mods here @Mod.EventHandler public void postinit(FMLPostInitializationEvent event) {} // Blocks registration @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) { // Register blocks and tile entities logger.debug("Registering blocks..."); DeepworldBlocks.registerBlocks(event.getRegistry()); logger.debug("Done!"); } // Items and itemBlocks registration @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { // Items and itemBlocks registration logger.debug("Registering items..."); DeepworldItems.registerItems(event.getRegistry()); DeepworldItems.registerItemBlocks(event.getRegistry()); // OreDictionnary registration OreDictionary.registerOre("frameWood", DeepworldItems.WOODEN_FRAME); OreDictionary.registerOre("frameIron", DeepworldItems.IRON_FRAME); OreDictionary.registerOre("frameSteel", DeepworldItems.STEEL_FRAME); OreDictionary.registerOre("frameObsidianSteel", DeepworldItems.OBSIDIAN_INFUSED_STEEL_FRAME); logger.debug("Done!"); } // TileEntities registration public static void registerTileEntity() { logger.debug("Registering tileEntities..."); GameRegistry.registerTileEntity(TileEntityWoodenFrame.class, new ResourceLocation(Deepworld.MOD_ID, "wooden_frame")); logger.debug("Done!"); } } DeepworldItems.java package fr.dwightstudio.deepworld.common; import fr.dwightstudio.deepworld.common.item.ItemSimplePressingChamber; import fr.dwightstudio.deepworld.common.item.ItemWoodenCasePanel; import fr.dwightstudio.deepworld.common.item.ItemWoodenCrank; import fr.dwightstudio.deepworld.common.item.ItemWoodenGearbox; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.registries.IForgeRegistry; @GameRegistry.ObjectHolder(Deepworld.MOD_ID) public class DeepworldItems { // Items initialization public static final Item WOODEN_CASE_PANEL = new ItemWoodenCasePanel(); public static final Item SIMPLE_PRESSING_CHAMBER = new ItemSimplePressingChamber(); public static final Item WOODEN_GEARBOX = new ItemWoodenGearbox(); public static final Item WOODEN_CRANK = new ItemWoodenCrank(); // Itemblocks initialization public static final Item WOODEN_FRAME = new ItemBlock(DeepworldBlocks.WOODEN_FRAME); public static final Item WOODEN_PRESS = new ItemBlock(DeepworldBlocks.WOODEN_PRESS); public static final Item IRON_FRAME = new ItemBlock(DeepworldBlocks.IRON_FRAME); public static final Item STEEL_FRAME = new ItemBlock(DeepworldBlocks.STEEL_FRAME); public static final Item OBSIDIAN_INFUSED_STEEL_FRAME = new ItemBlock(DeepworldBlocks.OBSIDIAN_INFUSED_STEEL_FRAME); // Items registration public static void registerItems(IForgeRegistry<Item> registry) { registry.register(prepare(WOODEN_CASE_PANEL, "wooden_case_panel")); registry.register(prepare(SIMPLE_PRESSING_CHAMBER, "simple_pressing_chamber")); registry.register(prepare(WOODEN_GEARBOX, "wooden_gearbox")); registry.register(prepare(WOODEN_CRANK, "wooden_crank")); } // Itemblocks public static void registerItemBlocks(IForgeRegistry<Item> registry) { registry.register(DeepworldItems.prepare(WOODEN_FRAME, "wooden_frame")); registry.register(DeepworldItems.prepare(WOODEN_PRESS, "wooden_press")); registry.register(DeepworldItems.prepare(IRON_FRAME, "iron_frame")); registry.register(DeepworldItems.prepare(STEEL_FRAME, "steel_frame")); registry.register(DeepworldItems.prepare(OBSIDIAN_INFUSED_STEEL_FRAME, "obsidian_infused_steel_frame")); } // Prepare items public static Item prepare(Item item, String name) { return item.setTranslationKey(name).setRegistryName(new ResourceLocation(Deepworld.MOD_ID, name)); } } DeepworldBlocks.java package fr.dwightstudio.deepworld.common; import fr.dwightstudio.deepworld.common.block.*; import net.minecraft.block.Block; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.registries.IForgeRegistry; @GameRegistry.ObjectHolder(Deepworld.MOD_ID) public class DeepworldBlocks { // Blocks initialization public static final Block WOODEN_FRAME = new BlockWoodenFrame(); public static final Block WOODEN_PRESS = new BlockWoodenPress(); public static final Block IRON_FRAME = new BlockIronFrame(); public static final Block STEEL_FRAME = new BlockSteelFrame(); public static final Block OBSIDIAN_INFUSED_STEEL_FRAME = new BlockObsidianInfusedSteelFrame(); // Blocks registration public static void registerBlocks(IForgeRegistry<Block> registry) { registry.register(prepareBlock(WOODEN_FRAME, "wooden_frame")); registry.register(prepareBlock(WOODEN_PRESS, "wooden_press")); registry.register(prepareBlock(IRON_FRAME, "iron_frame")); registry.register(prepareBlock(STEEL_FRAME, "steel_frame")); registry.register(prepareBlock(OBSIDIAN_INFUSED_STEEL_FRAME, "obsidian_infused_steel_frame")); } // Prepare block public static Block prepareBlock(Block block, String name) { return block.setTranslationKey(name).setRegistryName(new ResourceLocation(Deepworld.MOD_ID, name)); } } Thank you in advance!