package com.pam.harvestcraft.blocks; import com.pam.harvestcraft.blocks.blocks.BlockBaseGarden; import com.pam.harvestcraft.blocks.growables.BlockPamCrop; import com.pam.harvestcraft.blocks.growables.BlockPamFruit; import com.pam.harvestcraft.blocks.growables.BlockPamFruitLog; import com.pam.harvestcraft.blocks.growables.BlockPamSapling; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class ItemModels { private static final HashMap<Item, ItemModelList> models = new HashMap<Item, ItemModelList>(); public static void preInit() { defineItemModels(); prepareModels(); } public static void init() { registerModels(); } private static void defineItemModels() { for (BlockBaseGarden garden : BlockRegistry.gardens.values()) { registerItemModels(getItem(garden), new ItemModelList("gardens/") .add(0, garden.getName())); } for (BlockPamCrop crop : CropRegistry.getCrops().values()) { registerItemModels(getItem(crop), new ItemModelList("crops/") .add(0, crop.getStageId(0)) .add(1, crop.getStageId(1)) .add(2, crop.getStageId(2)) .add(3, crop.getStageId(3))); } for (BlockPamSapling sapling : FruitRegistry.getSaplings()) { registerItemModels(getItem(sapling), new ItemModelList("saplings/") .add(0, sapling.getName())); } for (BlockPamFruit fruit : FruitRegistry.fruits) { registerItemModels(getItem(fruit), new ItemModelList("fruits/") .add(0, fruit.getStageId(0)) .add(1, fruit.getStageId(1)) .add(2, fruit.getStageId(2))); } for (BlockPamFruitLog fruit : FruitRegistry.logs.values()) { registerItemModels(getItem(fruit), new ItemModelList("fruits/") .add(0, fruit.getStageId(0)) .add(1, fruit.getStageId(1)) .add(2, fruit.getStageId(2))); } } private static void registerItemModels(Item item, ItemModelList list) { models.put(item, list); } private static void prepareModels() { for (Map.Entry<Item, ItemModelList> entry : models.entrySet()) { Item item = entry.getKey(); Collection<String> registrations = entry.getValue().getRegistrations().values(); for (String registration : registrations) { if (item == null || registration == null) continue; ModelBakery.registerItemVariants(item, new ResourceLocation(registration)); } } } private static void registerModels() { for (HashMap.Entry<Item, ItemModelList> entry : models.entrySet()) { Item item = entry.getKey(); HashMap<Integer, String> registrations = entry.getValue().getRegistrations(); for (Map.Entry<Integer, String> registration : registrations.entrySet()) { int meta = registration.getKey(); String path = registration.getValue(); ModelResourceLocation resource = new ModelResourceLocation(path, "inventory"); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, resource); } } } private static Item getItem(Block block) { return Item.getItemFromBlock(block); } }