package eiteam.esteemedinnovation.firearms; import eiteam.esteemedinnovation.api.book.*; import eiteam.esteemedinnovation.api.enhancement.Enhancement; import eiteam.esteemedinnovation.api.enhancement.EnhancementRegistry; import eiteam.esteemedinnovation.api.enhancement.Rocket; import eiteam.esteemedinnovation.api.enhancement.UtilEnhancements; import eiteam.esteemedinnovation.api.entity.EntityRocket; import eiteam.esteemedinnovation.api.research.ResearchRecipe; import eiteam.esteemedinnovation.api.research.ShapelessResearchRecipe; import eiteam.esteemedinnovation.commons.Config; import eiteam.esteemedinnovation.commons.EsteemedInnovation; import eiteam.esteemedinnovation.commons.init.ContentModule; import eiteam.esteemedinnovation.firearms.flintlock.FlintlockBookCategory; import eiteam.esteemedinnovation.firearms.flintlock.ItemFirearm; import eiteam.esteemedinnovation.firearms.flintlock.enhancements.*; import eiteam.esteemedinnovation.firearms.rocket.ItemRocketLauncher; import eiteam.esteemedinnovation.firearms.rocket.ammo.ItemRocketBasic; import eiteam.esteemedinnovation.firearms.rocket.ammo.ItemRocketConcussive; import eiteam.esteemedinnovation.firearms.rocket.ammo.ItemRocketMining; import eiteam.esteemedinnovation.firearms.rocket.ammo.RenderRocket; import eiteam.esteemedinnovation.firearms.rocket.enhancements.ItemEnhancementAirStrike; import eiteam.esteemedinnovation.firearms.rocket.enhancements.ItemEnhancementAmmo; import eiteam.esteemedinnovation.firearms.rocket.enhancements.ItemEnhancementFastRockets; import eiteam.esteemedinnovation.steamsafety.SafetyModule; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; import java.util.List; import java.util.stream.Collectors; import static eiteam.esteemedinnovation.commons.EsteemedInnovation.GADGET_SECTION; import static eiteam.esteemedinnovation.commons.OreDictEntries.*; import static eiteam.esteemedinnovation.misc.ItemCraftingComponent.Types.*; import static eiteam.esteemedinnovation.misc.MiscellaneousModule.COMPONENT; import static net.minecraft.init.Blocks.SAND; import static net.minecraft.init.Blocks.WOOL; import static net.minecraft.init.Items.*; public class FirearmModule extends ContentModule { public static Item MUSKET; public static Item PISTOL; public static Item ROCKET_LAUNCHER; public static Item BLUNDERBUSS; public static Item MUSKET_CARTRIDGE; public static Item ROCKET; public static Item CONCUSSIVE_ROCKET; public static Item MINING_ROCKET; public static Item BLAZE_BARREL; public static Item REVOLVER_CHAMBER; public static Item BREECH; public static Item MAKESHIFT_SUPPRESSOR; public static Item RECOIL_PAD; public static Item BOLT_ACTION; public static Item SPYGLASS; public static Item STREAMLINED_BARREL; public static Item AIR_STRIKE_CONVERSION_KIT; public static Item EXTENDED_MAGAZINE; @Override public void create(Side side) { MUSKET = setup(new ItemFirearm(Config.musketDamage, 84, 0.2F, 5.0F, false, 1, INGOT_IRON), "musket"); PISTOL = setup(new ItemFirearm(Config.pistolDamage, 42, 0.5F, 2.0F, false, 1, INGOT_IRON), "pistol"); ROCKET_LAUNCHER = setup(new ItemRocketLauncher(2.0F, 95, 10, 3.5F, 4, INGOT_IRON), "rocket_launcher"); BLUNDERBUSS = setup(new ItemFirearm(Config.blunderbussDamage, 95, 3.5F, 7.5F, true, 1, INGOT_BRASS), "blunderbuss"); MUSKET_CARTRIDGE = setup(new Item(), "musket_cartridge"); ROCKET = setup(new ItemRocketBasic(), "rocket"); EnhancementRegistry.registerRocket((Rocket) ROCKET); CONCUSSIVE_ROCKET = setup(new ItemRocketConcussive(), "rocket_concussive"); EnhancementRegistry.registerRocket((Rocket) CONCUSSIVE_ROCKET); MINING_ROCKET = setup(new ItemRocketMining(), "rocket_miner"); EnhancementRegistry.registerRocket((Rocket) MINING_ROCKET); BLAZE_BARREL = setup(new ItemEnhancementFireMusket(), "enhancement_blaze"); EnhancementRegistry.registerEnhancement((Enhancement) BLAZE_BARREL); REVOLVER_CHAMBER = setup(new ItemEnhancementRevolver(), "enhancement_revolver"); EnhancementRegistry.registerEnhancement((Enhancement) REVOLVER_CHAMBER); BREECH = setup(new ItemEnhancementSpeedloader(), "enhancement_speedloader"); EnhancementRegistry.registerEnhancement((Enhancement) BREECH); MAKESHIFT_SUPPRESSOR = setup(new ItemEnhancementSilencer(), "enhancement_silencer"); EnhancementRegistry.registerEnhancement((Enhancement) MAKESHIFT_SUPPRESSOR); RECOIL_PAD = setup(new ItemEnhancementRecoil(), "enhancement_recoil"); EnhancementRegistry.registerEnhancement((Enhancement) RECOIL_PAD); BOLT_ACTION = setup(new ItemEnhancementSpeedy(), "enhancement_speedy"); EnhancementRegistry.registerEnhancement((Enhancement) BOLT_ACTION); SPYGLASS = setup(new ItemSpyglass(), "spyglass"); EnhancementRegistry.registerEnhancement((Enhancement) SPYGLASS); STREAMLINED_BARREL = setup(new ItemEnhancementFastRockets(), "enhancement_fast_rockets"); EnhancementRegistry.registerEnhancement((Enhancement) STREAMLINED_BARREL); AIR_STRIKE_CONVERSION_KIT = setup(new ItemEnhancementAirStrike(), "enhancement_air_strike"); EnhancementRegistry.registerEnhancement((Enhancement) AIR_STRIKE_CONVERSION_KIT); EXTENDED_MAGAZINE = setup(new ItemEnhancementAmmo(), "enhancement_ammo"); EnhancementRegistry.registerEnhancement((Enhancement) EXTENDED_MAGAZINE); EntityRegistry.registerModEntity(EntityRocket.class, "Rocket", 3, EsteemedInnovation.instance, 64, 20, true); } @Override public void recipes(Side side) { if (Config.enableRL) { addRocketLauncherRecipe("rocket1", PLATE_THIN_BRASS, PLATE_THIN_COPPER); addRocketLauncherRecipe("rocket2", INGOT_BRASS, PLATE_THIN_COPPER); addRocketLauncherRecipe("rocket3", PLATE_THIN_BRASS, INGOT_COPPER); addRocketLauncherRecipe("rocket4", INGOT_BRASS, INGOT_COPPER); if (Config.enableRocket) { BookRecipeRegistry.addRecipe("normalRocket1", new ShapedOreRecipe(ROCKET, " i ", "igi", 'i', INGOT_IRON, 'g', GUNPOWDER )); BookRecipeRegistry.addRecipe("normalRocket2", new ShapedOreRecipe(ROCKET, " i ", "igi", 'i', PLATE_THIN_IRON, 'g', GUNPOWDER )); } if (Config.enableRocketConcussive) { if (Config.enableRocket) { BookRecipeRegistry.addRecipe("concussiveRocket", new ShapelessOreRecipe(CONCUSSIVE_ROCKET, ROCKET, SAND)); } else { BookRecipeRegistry.addRecipe("concussiveRocket1", new ShapedOreRecipe(CONCUSSIVE_ROCKET, " i ", "igi", 'i', INGOT_IRON, 'g', GUNPOWDER )); BookRecipeRegistry.addRecipe("concussiveRocket2", new ShapedOreRecipe(CONCUSSIVE_ROCKET, " i ", "igi", 'i', PLATE_THIN_IRON, 'g', GUNPOWDER )); } } if (Config.enableRocketMining) { if (Config.enableRocket) { BookRecipeRegistry.addRecipe("miningRocket", new ShapelessOreRecipe(MINING_ROCKET, ROCKET, STRING, STRING, GUNPOWDER )); } else { BookRecipeRegistry.addRecipe("miningRocket", new ShapelessOreRecipe(MINING_ROCKET, CONCUSSIVE_ROCKET, STRING, STRING, GUNPOWDER )); } } if (Config.enableEnhancementFastRockets) { BookRecipeRegistry.addRecipe("fastRockets", new ShapedOreRecipe(STREAMLINED_BARREL, "b ", "gid", " i", 'b', new ItemStack(COMPONENT, 1, BLUNDERBUSS_BARREL.getMetadata()), 'g', SafetyModule.STEAM_GAUGE, 'i', new ItemStack(COMPONENT, 1, IRON_BARREL.getMetadata()), 'd', SafetyModule.RUPTURE_DISC )); } if (Config.enableEnhancementAirStrike) { BookRecipeRegistry.addRecipe("airStrike1", new ShapelessOreRecipe(AIR_STRIKE_CONVERSION_KIT, INGOT_IRON, INGOT_IRON, PLANK_WOOD, PLANK_WOOD, new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()))); BookRecipeRegistry.addRecipe("airStrike2", new ShapelessOreRecipe(AIR_STRIKE_CONVERSION_KIT, PLATE_THIN_IRON, PLATE_THIN_IRON, PLANK_WOOD, PLANK_WOOD, new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()))); } if (Config.enableEnhancementAmmo) { BookRecipeRegistry.addRecipe("ammo1", new ShapedOreRecipe(EXTENDED_MAGAZINE, "icc", "icc", "cc ", 'i', NUGGET_IRON, 'c', INGOT_COPPER )); BookRecipeRegistry.addRecipe("ammo2", new ShapedOreRecipe(EXTENDED_MAGAZINE, "icc", "icc", "cc ", 'i', NUGGET_IRON, 'c', PLATE_THIN_COPPER )); } } if (Config.enableFirearms) { BookRecipeRegistry.addRecipe("musket", new ResearchRecipe(new ItemStack(MUSKET), "category.Musket.name", "b ", " bf", " s", 'b', new ItemStack(COMPONENT, 1, IRON_BARREL.getMetadata()), 'f', new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()), 's', new ItemStack(COMPONENT, 1, GUN_STOCK.getMetadata()) )); BookRecipeRegistry.addRecipe("pistol", new ResearchRecipe(new ItemStack(PISTOL), "category.Pistol.name", "b ", " pf", " p ", 'b', new ItemStack(COMPONENT, 1, IRON_BARREL.getMetadata()), 'p', PLANK_WOOD, 'f', new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()) )); BookRecipeRegistry.addRecipe("blunderbuss", new ResearchRecipe(new ItemStack(BLUNDERBUSS), "category.Blunderbuss.name", "b ", " bf", " s", 'b', new ItemStack(COMPONENT, 1, BLUNDERBUSS_BARREL.getMetadata()), 'f', new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()), 's', new ItemStack(COMPONENT, 1, GUN_STOCK.getMetadata()) )); // TODO: ShapelessResearchRecipe String[] ores = { NUGGET_IRON, NUGGET_LEAD, NUGGET_STEEL, NUGGET_SILVER }; if (Config.expensiveMusketRecipes) { int i = 1; for (String ore : ores) { BookRecipeRegistry.addRecipe("cartridge" + i, new ShapelessResearchRecipe(new ItemStack(MUSKET_CARTRIDGE), "category.Musket.name", ore, PAPER, GUNPOWDER)); i++; } } else { int i = 1; for (String ore : ores) { BookRecipeRegistry.addRecipe("cartridge" + i, new ShapelessResearchRecipe(new ItemStack(MUSKET_CARTRIDGE, 2, 0), "category.Musket.name", ore, ore, PAPER, PAPER, GUNPOWDER)); i++; } } if (Config.enableEnhancementAblaze) { BookRecipeRegistry.addRecipe("ablaze", new ShapedOreRecipe(BLAZE_BARREL, "rp ", "pbp", " pr", 'r', BLAZE_ROD, 'p', BLAZE_POWDER, 'b', new ItemStack(COMPONENT, 1, IRON_BARREL.getMetadata()) )); } if (Config.enableEnhancementRevolver) { BookRecipeRegistry.addRecipe("revolver", new ShapedOreRecipe(REVOLVER_CHAMBER, "ni ", "iii", " in", 'n', NUGGET_IRON, 'i', INGOT_IRON )); } if (Config.enableEnhancementSpeedy) { BookRecipeRegistry.addRecipe("speedy", new ShapedOreRecipe(BREECH, "iii", "iii", " n ", 'i', INGOT_IRON, 'n', NUGGET_IRON )); } if (Config.enableEnhancementSilencer) { BookRecipeRegistry.addRecipe("silencer", new ShapedOreRecipe(MAKESHIFT_SUPPRESSOR, "wls", "lll", "slw", 'l', LEATHER, 'w', WOOL, 's', STRING )); } if (Config.enableEnhancementRecoil) { BookRecipeRegistry.addRecipe("recoil", new ShapedOreRecipe(RECOIL_PAD, "ss ", " ss", "ss ", 's', SLIMEBALL_ORE )); } if (Config.enableEnhancementSpeedloader) { BookRecipeRegistry.addRecipe("speedloader1", new ShapedOreRecipe(BOLT_ACTION, " n", "iii", "iri", 'n', NUGGET_IRON, 'i', INGOT_IRON, 'r', DUST_REDSTONE )); BookRecipeRegistry.addRecipe("speedloader2", new ShapedOreRecipe(BOLT_ACTION, " n", "iii", "iri", 'n', NUGGET_IRON, 'i', PLATE_THIN_IRON, 'r', DUST_REDSTONE )); } } if (Config.enableSpyglass) { BookRecipeRegistry.addRecipe("spyglass1", new ShapedOreRecipe(SPYGLASS, "gb ", "bgb", " bb", 'b', INGOT_BRASS, 'g', PANE_GLASS_COLORLESS )); BookRecipeRegistry.addRecipe("spyglass2", new ShapedOreRecipe(SPYGLASS, "gb ", "bgb", " bb", 'b', PLATE_THIN_BRASS, 'g', PANE_GLASS_COLORLESS )); } MinecraftForge.EVENT_BUS.register(new FlintlockBookCategory.EventHandler()); } private static void addRocketLauncherRecipe(String name, String brassOre, String copperOre) { BookRecipeRegistry.addRecipe(name, new ShapedOreRecipe(ROCKET_LAUNCHER, "bx ", "fic", " pi", 'i', new ItemStack(COMPONENT, 1, IRON_BARREL.getMetadata()), 'x', brassOre, 'c', copperOre, 'p', PLANK_WOOD, 'b', new ItemStack(COMPONENT, 1, BLUNDERBUSS_BARREL.getMetadata()), 'f', new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()) )); } @Override public void finish(Side side) { if (!Config.enableFirearms && !Config.enableRL) { return; } BookPageRegistry.addCategoryToSection(EsteemedInnovation.FLINTLOCK_SECTION, new BookCategory("category.Parts.name", new BookEntry("research.Parts.name", new BookPageItem("research.Parts.name", "research.Parts.0", new ItemStack(COMPONENT, 1, BLUNDERBUSS_BARREL.getMetadata()), new ItemStack(COMPONENT, 1, FLINTLOCK.getMetadata()), new ItemStack(COMPONENT, 1, GUN_STOCK.getMetadata()), new ItemStack(COMPONENT, 1, IRON_BARREL.getMetadata())), new BookPageCrafting("", "stock"), new BookPageCrafting("", "barrel1", "barrel2"), new BookPageCrafting("", "blunderBarrel1", "blunderBarrel2"), new BookPageCrafting("", "flintlock1", "flintlock2")))); if (Config.enableFirearms) { BookCategory musketCategory = new FlintlockBookCategory("category.Musket.name", new BookEntry("research.Musket.name", new BookPageItem("research.Musket.name", "research.Musket.0", new ItemStack(MUSKET)), new BookPageCrafting("", "cartridge1", "cartridge2", "cartridge3", "cartridge4"), new BookPageCrafting("", "musket"))); BookCategory blunderbussCategory = new FlintlockBookCategory("category.Blunderbuss.name", new BookEntry("research.Blunderbuss.name", new BookPageItem("research.Blunderbuss.name", "research.Blunderbuss.0", new ItemStack(BLUNDERBUSS)), new BookPageCrafting("", "blunderbuss"))); if (Config.enableSpyglass) { musketCategory.appendEntries(new BookEntry("research.EnhancementSpyglass.name", new BookPageItem("research.EnhancementSpyglass.name", "research.EnhancementSpyglass.0", true, new ItemStack(SPYGLASS)))); } if (Config.enableEnhancementAblaze) { BookPageCrafting ablazeCraft = new BookPageCrafting("", "ablaze"); musketCategory.appendEntries(new BookEntry("research.EnhancementAblaze.name", new BookPageItem("research.EnhancementAblaze.name", "research.EnhancementAblaze.0", true, new ItemStack(BLAZE_BARREL)), ablazeCraft)); blunderbussCategory.appendEntries(new BookEntry("research.EnhancementAblaze2.name", new BookPageItem("research.EnhancementAblaze2.name", "research.EnhancementAblaze2.0", true, new ItemStack(BLAZE_BARREL)), ablazeCraft)); } if (Config.enableEnhancementSpeedloader) { BookPageCrafting speedloaderCraft = new BookPageCrafting("", "speedloader1", "speedloader2"); musketCategory.appendEntries(new BookEntry("research.EnhancementSpeedloader.name", new BookPageItem("research.EnhancementSpeedloader.name", "research.EnhancementSpeedloader.0", true, new ItemStack(BOLT_ACTION)), speedloaderCraft)); blunderbussCategory.appendEntries(new BookEntry("research.EnhancementSpeedloader2.name", new BookPageItem("research.EnhancementSpeedloader2.name", "research.EnhancementSpeedloader2.0", true, new ItemStack(BOLT_ACTION)), speedloaderCraft)); } if (Config.enableEnhancementRecoil) { blunderbussCategory.appendEntries(new BookEntry("research.EnhancementRecoil.name", new BookPageItem("research.EnhancementRecoil.name", "research.EnhancementRecoil.0", true, new ItemStack(RECOIL_PAD)), new BookPageCrafting("", "recoil"))); } BookCategory pistolCategory = new FlintlockBookCategory("category.Pistol.name", new BookEntry("research.Pistol.name", new BookPageItem("research.Pistol.name", "research.Pistol.0", new ItemStack(PISTOL)), new BookPageCrafting("", "pistol"))); if (Config.enableEnhancementRevolver) { pistolCategory.appendEntries(new BookEntry("research.EnhancementRevolver.name", new BookPageItem("research.EnhancementRevolver.name", "research.EnhancementRevolver.0", true, new ItemStack(REVOLVER_CHAMBER)), new BookPageCrafting("", "revolver"))); } if (Config.enableEnhancementSilencer) { pistolCategory.appendEntries(new BookEntry("research.EnhancementSilencer.name", new BookPageItem("research.EnhancementSilencer.name", "research.EnhancementSilencer.0", true, new ItemStack(MAKESHIFT_SUPPRESSOR)), new BookPageCrafting("", "silencer"))); } if (Config.enableEnhancementSpeedy) { pistolCategory.appendEntries(new BookEntry("research.EnhancementSpeedy.name", new BookPageItem("research.EnhancementSpeedy.name", "research.EnhancementSpeedy.0", true, new ItemStack(BREECH)), new BookPageCrafting("", "speedy"))); } BookPageRegistry.addCategoryToSection(EsteemedInnovation.FLINTLOCK_SECTION, musketCategory); BookPageRegistry.addCategoryToSection(EsteemedInnovation.FLINTLOCK_SECTION, blunderbussCategory); BookPageRegistry.addCategoryToSection(EsteemedInnovation.FLINTLOCK_SECTION, pistolCategory); } if (Config.enableRL) { BookCategory rocketLauncherCategory = new BookCategory("category.RocketLauncher.name", new BookEntry("research.RocketLauncher.name", new BookPageItem("research.RocketLauncher.name", "research.RocketLauncher.0", new ItemStack(ROCKET_LAUNCHER)), new BookPageCrafting("", "rocket1", "rocket2", "rocket3", "rocket4"))); if (Config.enableEnhancementFastRockets) { rocketLauncherCategory.appendEntries(new BookEntry("research.EnhancementFastRockets.name", new BookPageItem("research.EnhancementFastRockets.name", "research.EnhancementFastRockets.0", true, new ItemStack(STREAMLINED_BARREL)), new BookPageCrafting("", "fastRockets"))); } if (Config.enableEnhancementAmmo) { rocketLauncherCategory.appendEntries(new BookEntry("research.EnhancementAmmo.name", new BookPageItem("research.EnhancementAmmo.name", "research.EnhancementAmmo.0", true, new ItemStack(EXTENDED_MAGAZINE)), new BookPageCrafting("", "ammo1", "ammo2"))); } if (Config.enableEnhancementAirStrike) { rocketLauncherCategory.appendEntries(new BookEntry("research.EnhancemenAirStrike.name", new BookPageItem("research.EnhancementAirStrike.name", "research.EnhancementAirStrike.0", true, new ItemStack(AIR_STRIKE_CONVERSION_KIT)), new BookPageCrafting("", "airStrike1", "airStrike2"))); } BookCategory rocketsCategory = new BookCategory("category.Rockets.name"); if (Config.enableRocket) { rocketsCategory.appendEntries(new BookEntry("research.Rocket.name", new BookPageItem("research.Rocket.name", "research.Rocket.0", true, new ItemStack(ROCKET)), new BookPageCrafting("", "normalRocket1", "normalRocket2"))); } if (Config.enableRocketConcussive) { BookPageCrafting crafting = Config.enableRocket ? new BookPageCrafting("", "concussiveRocket") : new BookPageCrafting("", "concussiveRocket1", "concussiveRocket2"); rocketsCategory.appendEntries(new BookEntry("research.RocketConcussive.name", new BookPageItem("research.RocketConcussive.name", "research.RocketConcussive.0", true, new ItemStack(CONCUSSIVE_ROCKET)), crafting)); } if (Config.enableRocketMining) { rocketsCategory.appendEntries(new BookEntry("research.RocketMining.name", new BookPageItem("research.RocketMining.name", "research.RocketMining.0", true, new ItemStack(MINING_ROCKET)), new BookPageCrafting("", "miningRocket"))); } BookPageRegistry.addCategoryToSection(EsteemedInnovation.FLINTLOCK_SECTION, rocketLauncherCategory); BookPageRegistry.addCategoryToSection(EsteemedInnovation.FLINTLOCK_SECTION, rocketsCategory); } if (Config.enableSpyglass) { BookPageRegistry.addCategoryToSection(GADGET_SECTION, 1, new BookCategory("category.Spyglass.name", new BookEntry("research.Spyglass.name", new BookPageItem("research.Spyglass.name", "research.Spyglass.0", new ItemStack(SPYGLASS)), new BookPageCrafting("", "spyglass1", "spyglass2")))); } } @SideOnly(Side.CLIENT) @Override public void preInitClient() { registerModel(SPYGLASS); registerModel(MUSKET_CARTRIDGE); registerModel(ROCKET); registerModel(CONCUSSIVE_ROCKET); registerModel(MINING_ROCKET); registerModel(BLAZE_BARREL); registerModel(REVOLVER_CHAMBER); registerModel(BREECH); registerModel(MAKESHIFT_SUPPRESSOR); registerModel(RECOIL_PAD); registerModel(BOLT_ACTION); registerModel(SPYGLASS); registerModel(STREAMLINED_BARREL); registerModel(AIR_STRIKE_CONVERSION_KIT); registerModel(EXTENDED_MAGAZINE); registerFirearmModel(ROCKET_LAUNCHER); registerFirearmModel(PISTOL); registerFirearmModel(MUSKET); registerFirearmModel(BLUNDERBUSS); } private void registerFirearmModel(Item firearm) { List<ModelResourceLocation> locations = UtilEnhancements.registerEnhancementsForItem(firearm) .stream() .map(r -> new ModelResourceLocation(r, "inventory")) .collect(Collectors.toList()); // No enhancement. locations.add(new ModelResourceLocation(firearm.getRegistryName(), "inventory")); ModelBakery.registerItemVariants(firearm, locations.toArray(new ModelResourceLocation[locations.size()])); ModelLoader.setCustomMeshDefinition(firearm, stack -> { ResourceLocation loc = UtilEnhancements.getIconFromEnhancement(stack); if (loc == null) { loc = stack.getItem().getRegistryName(); } return new ModelResourceLocation(loc, "inventory"); }); } @SideOnly(Side.CLIENT) @Override public void initClient() { RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, RenderRocket::new); } }