diff --git a/src/main/java/net/minecraftforge/client/model/Attributes.java b/src/main/java/net/minecraftforge/client/model/Attributes.java index 4544930184..056b981153 100644 --- a/src/main/java/net/minecraftforge/client/model/Attributes.java +++ b/src/main/java/net/minecraftforge/client/model/Attributes.java @@ -120,17 +120,21 @@ public class Attributes throw new IllegalArgumentException("can only transform float position"); } int[] data = Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length); - float[] pos = new float[] { 0f, 0f, 0f, 1f }; - for (int i = 0; i < Math.min(4, e.getElementCount()); i++) + int shift = data.length / 4; + for(int v = 0; v < 4; v++) { - pos[i] = Float.intBitsToFloat(data[e.getOffset() / 4 + i]); - } - Vector4f vec = new Vector4f(pos); - transform.getMatrix().transform(vec); - vec.get(pos); - for (int i = 0; i < Math.min(4, e.getElementCount()); i++) - { - data[e.getOffset() / 4 + i] = Float.floatToRawIntBits(pos[i]); + float[] pos = new float[] { 0f, 0f, 0f, 1f }; + for (int i = 0; i < Math.min(4, e.getElementCount()); i++) + { + pos[i] = Float.intBitsToFloat(data[shift * v + e.getOffset() / 4 + i]); + } + Vector4f vec = new Vector4f(pos); + transform.getMatrix().transform(vec); + vec.get(pos); + for (int i = 0; i < Math.min(4, e.getElementCount()); i++) + { + data[shift * v + e.getOffset() / 4 + i] = Float.floatToRawIntBits(pos[i]); + } } return new BakedQuad(data, quad.getTintIndex(), quad.getFace()); }