Jump to content

ARuther

Members
  • Posts

    4
  • Joined

  • Last visited

ARuther's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. This fixed things! Thanks so much! Here's what ModItems looked like when it finished in case someone else runs into the same problem. @Mod.EventBusSubscriber public class ModItems { public static List<Item> itemsToReg; public static ItemBase ingotCopper; public static ItemCornSeed cornSeed; public static ItemBase corn; public static void init() { itemsToReg = new ArrayList<Item>(); ingotCopper = register(new ItemBase("ingot_copper").setCreativeTab(CreativeTabs.MATERIALS)); cornSeed = register(new ItemCornSeed()); corn = register(new ItemBase("corn").setCreativeTab(CreativeTabs.FOOD)); } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { for (Item item : itemsToReg.toArray(new Item[0])) { event.getRegistry().register(item); } } @SubscribeEvent public static void registerItemModels(ModelRegistryEvent event) { for (Item item : itemsToReg.toArray(new Item[0])) { if (item instanceof ItemModelProvider) { ((ItemModelProvider)item).registerItemModel(item); } } } private static <T extends Item> T register(T item) { itemsToReg.add(item); return item; } }
  2. I'm not sure I follow, I'm assigning those three instantiations to three different objects. How do you mean I'm "bypassing" ItemCornSeed? How would I rewrite this to fix what problem you see? Most of the other things you mentioned are just me following the tutorial. I know about I-prefixes for interfaces, Java is not at all new to me. I can make sense of the rest of your changes, but I'm just trying to follow the tutorial as best as I can until I'm finished with it. Afterwards I'll fix any "best practices" problems. But I appreciate the input. As far as "corn" vs "corn_seed", those actually are two separate objects, so I don't actually think I'm telling it to look in the wrong place, though I do agree with not passing an explicit name and just using getRegistryName.
  3. That is a very good point, my bad. I believe this is written exactly as in the tutorial, but perhaps things changed in 1.12 public class ClientProxy extends CommonProxy { @Override public void registerItemRenderer(Item item, int meta, String id) { ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(Variables.MOD_ID + ":" + id, "inventory")); } } And here's CommonProxy for good measure public class CommonProxy { @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { } @Mod.EventHandler public void init(FMLInitializationEvent event) { } @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { } public void registerItemRenderer(Item item, int meta, String id) { } }
  4. Hey, I'm trying to teach myself Forge, and I've been doing my best to follow Shadowfacts' tutorial and change what I need to to work in 1.12, but I'm running into some issues. I've followed the tutorial along to adding in Corn, but my items are either being given the wrong texture (eg. Copper Ingot with Corn texture), or no texture at all. This affects both Items and ItemBlocks, though Blocks always have the correct texture once placed in the environment. If I don't assign a renderer to my Items, then my ItemBlocks work just fine, so I think the problem lies there. Here are the files I think are relevant, I can post whatever I need to if asked, though, or I can make a git. I'd also appreciate any advice on other tutorials worth looking into, especially those that have been updated for 1.12. @Mod.EventBusSubscriber public class ModItems { public static List<Item> itemsToReg; public static ItemBase ingotCopper; public static ItemCornSeed cornSeed; public static ItemBase corn; public static void init() { } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { itemsToReg = new ArrayList<Item>(); ingotCopper = register(new ItemBase("ingot_copper").setCreativeTab(CreativeTabs.MATERIALS)); cornSeed = register(new ItemCornSeed()); corn = register(new ItemBase("corn").setCreativeTab(CreativeTabs.FOOD)); event.getRegistry().registerAll(itemsToReg.toArray(new Item[0])); } private static <T extends Item> T register(T item) { itemsToReg.add(item); if (item instanceof ItemModelProvider) { ((ItemModelProvider)item).registerItemModel(item); } return item; } } public class ItemBase extends Item implements ItemModelProvider { protected String name; public ItemBase(String name) { this.name = name; setUnlocalizedName(name); setRegistryName(name); } @Override public void registerItemModel(Item item) { TestMod.proxy.registerItemRenderer(item, 0, name); } @Override public ItemBase setCreativeTab(CreativeTabs tab) { super.setCreativeTab(tab); return this; } } public class ItemCornSeed extends ItemSeeds implements ItemModelProvider { public ItemCornSeed() { super(ModBlocks.cropCorn, Blocks.FARMLAND); setUnlocalizedName("corn_seed"); setRegistryName("corn_seed"); } @Override public void registerItemModel(Item item) { TestMod.proxy.registerItemRenderer(item, 0, "corn_seed"); } } public interface ItemModelProvider { void registerItemModel(Item item); } @Mod.EventBusSubscriber public class ModBlocks { public static List<Block> blocksToReg; public static List<Item> itemBlocksToReg; public static BlockOre oreCopper; public static BlockCropCorn cropCorn; public static void init() { } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { event.getRegistry().registerAll(itemBlocksToReg.toArray(new Item[0])); } @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) { blocksToReg = new ArrayList<Block>(); itemBlocksToReg = new ArrayList<Item>(); oreCopper = register(new BlockOre("ore_copper").setCreativeTab(CreativeTabs.MISC)); cropCorn = register(new BlockCropCorn(), null); event.getRegistry().registerAll(blocksToReg.toArray(new Block[0])); } private static <T extends Block> T register(T block, ItemBlock itemBlock) { blocksToReg.add(block); if (itemBlock != null) { itemBlocksToReg.add(itemBlock); } if (block instanceof ItemModelProvider) { ((ItemModelProvider)block).registerItemModel(itemBlock); } return block; } private static <T extends Block> T register(T block) { ItemBlock itemBlock = new ItemBlock(block); itemBlock.setRegistryName(block.getRegistryName()); return register(block, itemBlock); } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.