From ced6ab7e8d10a865e846146958ccd668b15e8c8e Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Sat, 5 Oct 2019 14:40:03 +0100 Subject: [PATCH] Use a custom mesh definition instead of registering models for each individual metadata, fixes #256 #256 was partially fixed in 60a6c51; this completes the fix by preventing spell books missing models when different worlds have different spell metadata --- .../wizardry/client/model/WizardryModels.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java index b6066c31..2fd7302c 100644 --- a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java +++ b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java @@ -10,6 +10,7 @@ import electroblob.wizardry.item.ItemCrystal; import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryItems; import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraft.creativetab.CreativeTabs; @@ -300,18 +301,10 @@ public final class WizardryModels { * to the aforementioned method will be whichever one the item is in. */ private static void registerItemModel(Item item){ - - if(item.getHasSubtypes()){ - NonNullList items = NonNullList.create(); - item.getSubItems(item.getCreativeTab(), items); // Client-only method, but we're client-side so this is OK. - for(ItemStack stack : items){ - ModelLoader.setCustomModelResourceLocation(item, stack.getMetadata(), - new ModelResourceLocation(item.getRegistryName(), "inventory")); - } - } // Changing the last parameter from null to "inventory" fixed the item/block model weirdness. No idea why! - ModelLoader.setCustomModelResourceLocation(item, 0, - new ModelResourceLocation(item.getRegistryName(), "inventory")); + ModelBakery.registerItemVariants(item, new ModelResourceLocation(item.getRegistryName(), "inventory")); + // Assigns the model for all metadata values + ModelLoader.setCustomMeshDefinition(item, s -> new ModelResourceLocation(item.getRegistryName(), "inventory")); } /**