Posted April 19, 20169 yr Hey everyone, First let me say that I'm fairly nervous/intimidated posting this as C# is my day job language and JAVA is just something I tinker with. That said I love Minecraft and the many brilliant mods that have come out over the years! Anyhow - my apologies if I'm posting this in the wrong area or my level of Minecraft modding skills are not sufficient enough to ask a question like this! So ... after watching some tutorials I've gotten a basic Tutorial "Custom Block" mod working in 1.9 with one problem ... the ItemBlock isn't registering correctly (if at all) because the texture doesn't map to the inventory/item in the player's hand. My assumption is that since the tutorials I've been referencing are for 1.8 they don't use what looks like a new way to register Block and ItemBlock as mentioned here: 1.8.9 to 1.9 quick primer (i.e. "Blocks and their ItemBlock forms are no longer registered together ..."). I've pasted the main java class from my tutorial below to show where it's at. Again, the custom block works great in game and the texture shows up when placed fine. However the item is not textured in the player's hand or in the inventory view. My theory is it's because my handling of ItemBlock registration below isn't working ... but if my situation sounds like something else is to blame please point me in that direction. Any help would be greatly appreciated! Java code: package com.em3r50n.tutorialmod.init; import com.em3r50n.tutorialmod.Reference; import com.em3r50n.tutorialmod.blocks.TutorialModBlock; import com.em3r50n.tutorialmod.itemblocks.TutorialModItemBlock; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraftforge.fml.common.registry.GameRegistry; public class TutorialModBlocks { public static Block testblock; public static ItemBlock testblock_itemblock; public static void init(){ testblock = new TutorialModBlock(Material.grass) .setRegistryName("testblock"); testblock_itemblock = (ItemBlock) new ItemBlock(testblock) .setRegistryName("testblock"); } public static void register(){ GameRegistry.register(testblock); GameRegistry.register(testblock_itemblock); } public static void registerRenders(){ registerRender(testblock); } public static void registerRender(Block block){ Item item = Item.getItemFromBlock(block); Minecraft.getMinecraft() .getRenderItem().getItemModelMesher() .register(item, 0, new ModelResourceLocation( Reference.MOD_ID + ":" + item.getRegistryName().toString().substring(5), "inventory")); } } Screenshots: GitHub Profile | MinecraftForum.net Profile
April 19, 20169 yr item.getRegistryName returns a string I believe. In addition, it returns it in the format modid:itemName. Or you could use a name that you set in the constructor and then add the modId in that code. It is trying to find a model at modid:modid:itemName, which doesn't exist.
April 19, 20169 yr Author ...It is trying to find a model at modid:modid:itemName, which doesn't exist. DUDE! Thank you! That was it! I changed the register call (below) and the item texture started showing up in the Inventory/Player Hand! Guess it wasn't my ItemBlock handling after all. Thank you so much again! Really appreciate it. Code Change: Before: Minecraft.getMinecraft() .getRenderItem().getItemModelMesher() .register(item, 0, new ModelResourceLocation( Reference.MOD_ID + ":" + item.getRegistryName().toString().substring(5), "inventory")); After: Minecraft.getMinecraft() .getRenderItem().getItemModelMesher() .register(item, 0, new ModelResourceLocation( item.getRegistryName(), "inventory")); Screenshot: GitHub Profile | MinecraftForum.net Profile
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.