From 509cc79112674c70ad8ef9e508de8d2dc01d0bd0 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Tue, 29 Dec 2015 13:20:36 +0100 Subject: [PATCH] Fix bucket replacement not loading the bucket model by itself if replacing buckets. This happens when no other mod that uses the bucket model is present. Also added a simple method for registering the bucket model, should give modders an idea on how to use the general model. --- .../client/model/ModelLoader.java | 25 ++++++++++++++++++- .../minecraftforge/debug/DynBucketTest.java | 10 +------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoader.java b/src/main/java/net/minecraftforge/client/model/ModelLoader.java index c8edb57a53..6dec67520b 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoader.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoader.java @@ -213,6 +213,14 @@ public class ModelLoader extends ModelBakery // replace vanilla bucket models if desired. done afterwards for performance reasons if(ForgeModContainer.replaceVanillaBucketModel) { + // ensure the bucket model is loaded + if(!stateModels.containsKey(ModelDynBucket.LOCATION)) + { + // load forges blockstate json for it + ModelResourceLocation memory = getInventoryVariant("forge:dynbucket"); + registerVariant(getModelBlockDefinition(memory), memory); + } + // empty bucket for(String s : getVariantNames(Items.bucket)) { @@ -269,7 +277,10 @@ public class ModelLoader extends ModelBakery { ModelResourceLocation memory = getInventoryVariant(s); IModel model = stateModels.get(ModelDynBucket.LOCATION); - stateModels.put(memory, model); + if(model != null) + { + stateModels.put(memory, model); + } } } @@ -902,6 +913,18 @@ public class ModelLoader extends ModelBakery customMeshDefinitions.put(item.delegate, meshDefinition); } + public static void setBucketModelDefinition(Item item) { + ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() + { + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) + { + return ModelDynBucket.LOCATION; + } + }); + ModelBakery.registerItemVariants(item, ModelDynBucket.LOCATION); + } + public static void onRegisterItems(ItemModelMesher mesher) { for (Map.Entry, ItemMeshDefinition> e : customMeshDefinitions.entrySet()) diff --git a/src/test/java/net/minecraftforge/debug/DynBucketTest.java b/src/test/java/net/minecraftforge/debug/DynBucketTest.java index 593cb79fc9..06e88db3c7 100644 --- a/src/test/java/net/minecraftforge/debug/DynBucketTest.java +++ b/src/test/java/net/minecraftforge/debug/DynBucketTest.java @@ -47,15 +47,7 @@ public class DynBucketTest @Override void setupModels() { - ModelLoader.setCustomMeshDefinition(dynBucket, new ItemMeshDefinition() - { - @Override - public ModelResourceLocation getModelLocation(ItemStack stack) - { - return ModelDynBucket.LOCATION; - } - }); - ModelBakery.registerItemVariants(dynBucket, new ResourceLocation("forge", "dynbucket")); + ModelLoader.setBucketModelDefinition(dynBucket); final ModelResourceLocation bottle = new ModelResourceLocation(new ResourceLocation("forge", "dynbottle"), "inventory"); ModelLoader.setCustomMeshDefinition(dynBottle, new ItemMeshDefinition()