From 70670d70ea2b6f5c5e45d71935024924b472f8c2 Mon Sep 17 00:00:00 2001 From: RainWarrior Date: Sun, 6 Mar 2016 01:31:54 +0300 Subject: [PATCH] Removed generics from IModel subinterfaces, add ed ModelProcessingHelper instead. --- .../client/model/BlockStateLoader.java | 19 ++------- .../client/model/IModelCustomData.java | 4 +- .../client/model/IModelSimpleProperties.java | 6 +-- .../client/model/IRetexturableModel.java | 4 +- .../client/model/ItemLayerModel.java | 2 +- .../client/model/ModelDynBucket.java | 2 +- .../client/model/ModelFluid.java | 2 +- .../client/model/ModelLoader.java | 2 +- .../client/model/ModelProcessingHelper.java | 42 +++++++++++++++++++ .../client/model/MultiLayerModel.java | 2 +- .../client/model/b3d/B3DLoader.java | 2 +- .../client/model/obj/OBJModel.java | 2 +- .../debug/ModelAnimationDebug.java | 11 ++--- 13 files changed, 63 insertions(+), 37 deletions(-) create mode 100644 src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java diff --git a/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java b/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java index 8a0081f6d..65f40be4b 100644 --- a/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java +++ b/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java @@ -148,21 +148,10 @@ public class BlockStateLoader private IModel runModelHooks(IModel base, boolean smooth, boolean gui3d, ImmutableMap textureMap, ImmutableMap customData) { - if (!customData.isEmpty() && base instanceof IModelCustomData) - { - base = ((IModelCustomData)base).process(customData); - } - - if (!textureMap.isEmpty() && base instanceof IRetexturableModel) - { - base = ((IRetexturableModel)base).retexture(textureMap); - } - - if (base instanceof IModelSimpleProperties) - { - base = ((IModelSimpleProperties) base).smoothLighting(smooth).gui3d(gui3d); - } - + base = ModelProcessingHelper.customData(base, customData); + base = ModelProcessingHelper.retexture(base, textureMap); + base = ModelProcessingHelper.smoothLighting(base, smooth); + base = ModelProcessingHelper.gui3d(base, gui3d); return base; } diff --git a/src/main/java/net/minecraftforge/client/model/IModelCustomData.java b/src/main/java/net/minecraftforge/client/model/IModelCustomData.java index ec5471645..76d8e1039 100644 --- a/src/main/java/net/minecraftforge/client/model/IModelCustomData.java +++ b/src/main/java/net/minecraftforge/client/model/IModelCustomData.java @@ -2,12 +2,12 @@ package net.minecraftforge.client.model; import com.google.common.collect.ImmutableMap; -public interface IModelCustomData> extends IModel +public interface IModelCustomData extends IModel { /** * Allows the model to process custom data from the variant definition. * If unknown data is encountered it should be skipped. * @return a new model, with data applied. */ - M process(ImmutableMap customData); + IModel process(ImmutableMap customData); } diff --git a/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java b/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java index 0e963ef05..0c9b7858a 100644 --- a/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java +++ b/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java @@ -3,8 +3,8 @@ package net.minecraftforge.client.model; /** * Implement this if the model can process "smooth_lighting" or "gui3d" attributes from the json. */ -public interface IModelSimpleProperties> extends IModel +public interface IModelSimpleProperties extends IModel { - M smoothLighting(boolean value); - M gui3d(boolean value); + IModel smoothLighting(boolean value); + IModel gui3d(boolean value); } diff --git a/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java b/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java index 98016dcc6..eb6248706 100644 --- a/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java +++ b/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java @@ -2,7 +2,7 @@ package net.minecraftforge.client.model; import com.google.common.collect.ImmutableMap; -public interface IRetexturableModel> extends IModel +public interface IRetexturableModel extends IModel { /** * Applies new textures to the model. @@ -21,5 +21,5 @@ public interface IRetexturableModel> extends IMo * @param textures New * @return Model with textures applied. */ - M retexture(ImmutableMap textures); + IModel retexture(ImmutableMap textures); } diff --git a/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java b/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java index f129e83a5..4bc494ba1 100644 --- a/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java +++ b/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java @@ -29,7 +29,7 @@ import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -public class ItemLayerModel implements IRetexturableModel +public class ItemLayerModel implements IRetexturableModel { public static final ItemLayerModel instance = new ItemLayerModel(ImmutableList.of()); diff --git a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java index 932ebfc53..6dd0d0e94 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java +++ b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java @@ -39,7 +39,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; -public class ModelDynBucket implements IModel, IModelCustomData, IRetexturableModel +public class ModelDynBucket implements IModel, IModelCustomData, IRetexturableModel { public static final ModelResourceLocation LOCATION = new ModelResourceLocation(new ResourceLocation("forge", "dynbucket"), "inventory"); diff --git a/src/main/java/net/minecraftforge/client/model/ModelFluid.java b/src/main/java/net/minecraftforge/client/model/ModelFluid.java index d08f4af9e..67a73e8a2 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelFluid.java +++ b/src/main/java/net/minecraftforge/client/model/ModelFluid.java @@ -43,7 +43,7 @@ import com.google.common.collect.Maps; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -public class ModelFluid implements IModelCustomData +public class ModelFluid implements IModelCustomData { public static final ModelFluid waterModel = new ModelFluid(FluidRegistry.WATER); public static final ModelFluid lavaModel = new ModelFluid(FluidRegistry.LAVA); diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoader.java b/src/main/java/net/minecraftforge/client/model/ModelLoader.java index eb7731776..cac257b47 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoader.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoader.java @@ -409,7 +409,7 @@ public class ModelLoader extends ModelBakery textures.addAll(model.getTextures()); } - private class VanillaModelWrapper implements IRetexturableModel, IModelSimpleProperties, IAnimatedModel + private class VanillaModelWrapper implements IRetexturableModel, IModelSimpleProperties, IAnimatedModel { private final ResourceLocation location; private final ModelBlock model; diff --git a/src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java b/src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java new file mode 100644 index 000000000..a9b9e26e5 --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java @@ -0,0 +1,42 @@ +package net.minecraftforge.client.model; + +import com.google.common.collect.ImmutableMap; + +public class ModelProcessingHelper +{ + public static IModel retexture(IModel model, ImmutableMap textures) + { + if(model instanceof IRetexturableModel) + { + model = ((IRetexturableModel)model).retexture(textures); + } + return model; + } + + public static IModel customData(IModel model, ImmutableMap customData) + { + if(model instanceof IModelCustomData) + { + model = ((IModelCustomData)model).process(customData); + } + return model; + } + + public static IModel smoothLighting(IModel model, boolean smooth) + { + if(model instanceof IModelSimpleProperties) + { + model = ((IModelSimpleProperties)model).smoothLighting(smooth); + } + return model; + } + + public static IModel gui3d(IModel model, boolean gui3d) + { + if(model instanceof IModelSimpleProperties) + { + model = ((IModelSimpleProperties)model).gui3d(gui3d); + } + return model; + } +} diff --git a/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java b/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java index 27423c7a9..c63e5c35b 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java +++ b/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java @@ -32,7 +32,7 @@ import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -public class MultiLayerModel implements IModelCustomData +public class MultiLayerModel implements IModelCustomData { public static final MultiLayerModel instance = new MultiLayerModel(ImmutableMap., ModelResourceLocation>of()); diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java index 271ee9418..5b8ee3628 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java @@ -400,7 +400,7 @@ public class B3DLoader implements ICustomModelLoader } } - public static class ModelWrapper implements IRetexturableModel, IModelCustomData, IModelSimpleProperties, IAnimatedModel + public static class ModelWrapper implements IRetexturableModel, IModelCustomData, IModelSimpleProperties, IAnimatedModel { private final ResourceLocation modelLocation; private final B3DModel model; diff --git a/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java b/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java index 07ab89082..f1c76c892 100644 --- a/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java +++ b/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java @@ -53,7 +53,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -public class OBJModel implements IRetexturableModel, IModelCustomData +public class OBJModel implements IRetexturableModel, IModelCustomData { //private Gson GSON = new GsonBuilder().create(); private MaterialLibrary matLib; diff --git a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java index dd7cf8767..8eab7e65e 100644 --- a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java @@ -33,6 +33,7 @@ import net.minecraftforge.client.model.IModelState; import net.minecraftforge.client.model.IRetexturableModel; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; +import net.minecraftforge.client.model.ModelProcessingHelper; import net.minecraftforge.client.model.MultiModel; import net.minecraftforge.client.model.TRSRTransformation; import net.minecraftforge.client.model.animation.Animation; @@ -212,14 +213,8 @@ public class ModelAnimationDebug "chamber", "blocks/redstone_block", "trunk", "blocks/end_stone" ); - if(base instanceof IRetexturableModel) - { - base = ((IRetexturableModel)base).retexture(textures); - } - if(ring instanceof IRetexturableModel) - { - ring = ((IRetexturableModel)ring).retexture(textures); - } + base = ModelProcessingHelper.retexture(base, textures); + ring = ModelProcessingHelper.retexture(base, textures); IModel model = new MultiModel( new ResourceLocation(ModelAnimationDebug.MODID, "builtin/engine"), ring,