From 2857b710f80da225473953897c9eb97298ccf414 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Thu, 14 Jan 2016 22:13:31 +0100 Subject: [PATCH] Default bucket model is empty, allow bucket model without fluid. This allows capsules, cans, bottles,... to use the same item model for their item variant. Also it's makes much more sense. --- .../client/model/ModelDynBucket.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java index 0e39043e45..47ce051ce7 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java +++ b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java @@ -48,7 +48,7 @@ public class ModelDynBucket implements IModel, IModelCustomData, IRetexturableMo public ModelDynBucket() { - this(null, null, null, FluidRegistry.WATER, false); + this(null, null, null, null, false); } public ModelDynBucket(ResourceLocation baseLocation, ResourceLocation liquidLocation, ResourceLocation coverLocation, Fluid fluid, boolean flipGas) @@ -88,22 +88,26 @@ public class ModelDynBucket implements IModel, IModelCustomData, IRetexturableMo ImmutableMap transformMap = IPerspectiveAwareModel.MapWrapper.getTransforms(state); // if the fluid is a gas wi manipulate the initial state to be rotated 180° to turn it upside down - if (flipGas && fluid.isGaseous()) + if (flipGas && fluid != null && fluid.isGaseous()) { state = new ModelStateComposition(state, TRSRTransformation.blockCenterToCorner(new TRSRTransformation(null, new Quat4f(0, 0, 1, 0), null, null))); } TRSRTransformation transform = state.apply(Optional.absent()).or(TRSRTransformation.identity()); - TextureAtlasSprite fluidSprite = bakedTextureGetter.apply(fluid.getStill()); + TextureAtlasSprite fluidSprite = null; ImmutableList.Builder builder = ImmutableList.builder(); + if(fluid != null) { + fluidSprite = bakedTextureGetter.apply(fluid.getStill()); + } + if (baseLocation != null) { // build base (insidest) IFlexibleBakedModel model = (new ItemLayerModel(ImmutableList.of(baseLocation))).bake(state, format, bakedTextureGetter); builder.addAll(model.getGeneralQuads()); } - if (liquidLocation != null) + if (liquidLocation != null && fluidSprite != null) { TextureAtlasSprite liquid = bakedTextureGetter.apply(liquidLocation); // build liquid layer (inside) @@ -239,7 +243,10 @@ public class ModelDynBucket implements IModel, IModelCustomData, IRetexturableMo // not a fluid item apparently if (fluidStack == null) + { + // empty bucket return this; + } Fluid fluid = fluidStack.getFluid();