diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoader.java b/src/main/java/net/minecraftforge/client/model/ModelLoader.java index f0b4850b9a..b4c8dc5f20 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoader.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoader.java @@ -225,18 +225,7 @@ public class ModelLoader extends ModelBakery try { IModel model = ModelLoaderRegistry.getModel(location); - for (ResourceLocation dep : model.getDependencies()) - { - if(dep instanceof ModelResourceLocation) - { - loadVariants(ImmutableList.of((ModelResourceLocation)dep)); - } - else - { - getModel(dep); - } - } - textures.addAll(model.getTextures()); + resolveDependencies(model); } finally { @@ -244,6 +233,22 @@ public class ModelLoader extends ModelBakery } } + private void resolveDependencies(IModel model) throws IOException + { + for (ResourceLocation dep : model.getDependencies()) + { + if(dep instanceof ModelResourceLocation) + { + loadVariants(ImmutableList.of((ModelResourceLocation)dep)); + } + else + { + getModel(dep); + } + } + textures.addAll(model.getTextures()); + } + private class VanillaModelWrapper implements IRetexturableModel { private final ResourceLocation location; @@ -563,6 +568,14 @@ public class ModelLoader extends ModelBakery if (v instanceof ISmartVariant) { model = ((ISmartVariant)v).process(model, ModelLoader.this); + try + { + resolveDependencies(model); + } + catch (IOException e) + { + FMLLog.getLogger().error("Exception resolving indirect dependencies for model" + loc, e); + } textures.addAll(model.getTextures()); // Kick this, just in case. }