From bc6b00836476c8f79e0c0b53d72c36bec1d8189d Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 4 Aug 2016 18:37:59 -0500 Subject: [PATCH] Fix Vertex Transformer for breaking models (#3132) * Add setTexture to IVertexConsumer and propagate it. --- .../client/model/pipeline/IVertexConsumer.java | 3 ++- .../client/model/pipeline/LightUtil.java | 8 ++++++++ .../client/model/pipeline/UnpackedBakedQuad.java | 8 ++++++++ .../client/model/pipeline/VertexBufferConsumer.java | 2 ++ .../client/model/pipeline/VertexLighterFlat.java | 2 ++ .../client/model/pipeline/VertexTransformer.java | 13 +++++++++++++ 6 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java b/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java index edcc02e4b9..d57ab26718 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java @@ -19,6 +19,7 @@ package net.minecraftforge.client.model.pipeline; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.EnumFacing; @@ -37,6 +38,6 @@ public interface IVertexConsumer void setQuadTint(int tint); void setQuadOrientation(EnumFacing orientation); void setApplyDiffuseLighting(boolean diffuse); - + void setTexture(TextureAtlasSprite texture); void put(int element, float... data); } diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java b/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java index 071e2fed5f..e81d28e1ae 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java @@ -102,6 +102,14 @@ public class LightUtil public static void putBakedQuad(IVertexConsumer consumer, BakedQuad quad) { + try + { + consumer.setTexture(quad.getSprite()); + } + catch(AbstractMethodError e) + { + // catch missing method errors caused by change to IVertexConsumer + } consumer.setQuadOrientation(quad.getFace()); if(quad.hasTintIndex()) { diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java b/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java index e1cbc694f2..159f7e7c3d 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java @@ -66,6 +66,14 @@ public class UnpackedBakedQuad extends BakedQuad { consumer.setQuadTint(getTintIndex()); } + try + { + consumer.setTexture(sprite); + } + catch(AbstractMethodError e) + { + // catch missing method errors caused by change to IVertexConsumer + } consumer.setQuadOrientation(getFace()); for(int v = 0; v < 4; v++) { diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java b/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java index 48460b8f92..7752ad55a7 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java @@ -20,6 +20,7 @@ package net.minecraftforge.client.model.pipeline; import net.minecraft.client.renderer.VertexBuffer; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement.EnumUsage; import net.minecraft.util.math.BlockPos; @@ -77,4 +78,5 @@ public class VertexBufferConsumer implements IVertexConsumer public void setQuadTint(int tint) {} public void setQuadOrientation(EnumFacing orientation) {} public void setApplyDiffuseLighting(boolean diffuse) {} + public void setTexture(TextureAtlasSprite texture ) {} } diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java b/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java index f86aee8d18..1749b959e3 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java @@ -24,6 +24,7 @@ import javax.vecmath.Vector3f; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.color.BlockColors; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.util.EnumFacing; @@ -262,6 +263,7 @@ public class VertexLighterFlat extends QuadGatheringTransformer } public void setQuadOrientation(EnumFacing orientation) {} public void setQuadCulled() {} + public void setTexture( TextureAtlasSprite texture ) {} public void setApplyDiffuseLighting(boolean diffuse) { this.diffuse = diffuse; diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java b/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java index 7ac21a33e4..c549ebcb95 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java @@ -19,6 +19,7 @@ package net.minecraftforge.client.model.pipeline; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.EnumFacing; @@ -41,6 +42,18 @@ public class VertexTransformer implements IVertexConsumer parent.setQuadTint(tint); } + public void setTexture(TextureAtlasSprite texture) + { + try + { + parent.setTexture(texture); + } + catch(AbstractMethodError e) + { + // catch missing method errors caused by change to IVertexConsumer + } + } + public void setQuadOrientation(EnumFacing orientation) { parent.setQuadOrientation(orientation);