mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-08-27 07:52:18 +00:00
Fixed turtle tool upgrades not rendering in GUI.
This commit is contained in:
parent
e4ad8bc117
commit
264dbc570f
@ -14,8 +14,8 @@ import net.minecraft.client.render.VertexFormat;
|
||||
import net.minecraft.client.render.VertexFormatElement;
|
||||
import net.minecraft.client.render.VertexFormats;
|
||||
import net.minecraft.client.render.model.BakedQuad;
|
||||
import net.minecraft.client.util.math.Vector4f;
|
||||
import net.minecraft.util.math.Matrix4f;
|
||||
import net.minecraft.util.math.Quaternion;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
@ -50,41 +50,31 @@ public final class ModelTransformer {
|
||||
}
|
||||
|
||||
private static BakedQuad doTransformQuad(VertexFormat format, BakedQuad quad, Matrix4f transform) {
|
||||
int[] vertexData = quad.getVertexData()
|
||||
.clone();
|
||||
int offset = 0;
|
||||
int[] vertexData = quad.getVertexData().clone();
|
||||
BakedQuad copy = new BakedQuad(vertexData, -1, quad.getFace(), ((BakedQuadAccess)quad).getSprite(), true);
|
||||
for (int i = 0; i < format.getElements()
|
||||
.size(); ++i) // For each vertex element
|
||||
{
|
||||
VertexFormatElement element = format.getElements()
|
||||
.get(i);
|
||||
if (element.getType() == VertexFormatElement.Type.POSITION && element.getFormat() == VertexFormatElement.Format.FLOAT && element.getSize() == 3) // When we find a position
|
||||
// element
|
||||
|
||||
int offsetBytes = 0;
|
||||
for (int v = 0; v < 4; ++v) {
|
||||
for (VertexFormatElement element : format.getElements()) // For each vertex element
|
||||
{
|
||||
for (int j = 0; j < 4; ++j) // For each corner of the quad
|
||||
int start = offsetBytes / Integer.BYTES;
|
||||
if (element.getType() == VertexFormatElement.Type.POSITION && element.getFormat() == VertexFormatElement.Format.FLOAT) // When we find a position element
|
||||
{
|
||||
int start = offset + j * format.getVertexSize();
|
||||
if ((start % 4) == 0) {
|
||||
start = start / 4;
|
||||
Vector4f pos = new Vector4f(Float.intBitsToFloat(vertexData[start]),
|
||||
Float.intBitsToFloat(vertexData[start+1]),
|
||||
Float.intBitsToFloat(vertexData[start+2]),
|
||||
1);
|
||||
|
||||
// Extract the position
|
||||
Quaternion pos = new Quaternion(Float.intBitsToFloat(vertexData[start]),
|
||||
Float.intBitsToFloat(vertexData[start + 1]),
|
||||
Float.intBitsToFloat(vertexData[start + 2]),
|
||||
1);
|
||||
// Transform the position
|
||||
pos.transform(transform);
|
||||
|
||||
// Transform the position
|
||||
transform.multiply(pos);
|
||||
|
||||
// Insert the position
|
||||
vertexData[start] = Float.floatToRawIntBits(pos.getX());
|
||||
vertexData[start + 1] = Float.floatToRawIntBits(pos.getY());
|
||||
vertexData[start + 2] = Float.floatToRawIntBits(pos.getZ());
|
||||
}
|
||||
// Insert the position
|
||||
vertexData[start] = Float.floatToRawIntBits(pos.getX());
|
||||
vertexData[start+1] = Float.floatToRawIntBits(pos.getY());
|
||||
vertexData[start+2] = Float.floatToRawIntBits(pos.getZ());
|
||||
}
|
||||
offsetBytes += element.getSize();
|
||||
}
|
||||
offset += element.getSize();
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
|
@ -78,9 +78,10 @@ public class TurtleSmartItemModel implements BakedModel {
|
||||
Identifier overlay = turtle.getOverlay(stack);
|
||||
boolean christmas = HolidayUtil.getCurrentHoliday() == Holiday.CHRISTMAS;
|
||||
String label = turtle.getLabel(stack);
|
||||
boolean flip = label != null && (label.equals("Dinnerbone") || label.equals("Grumm"));
|
||||
// TODO Make TurtleTool render for turtle items again.
|
||||
TurtleModelCombination combo = new TurtleModelCombination(colour != -1, !(leftUpgrade instanceof TurtleTool) ? leftUpgrade : null, !(rightUpgrade instanceof TurtleTool) ? rightUpgrade : null, overlay, christmas, flip);
|
||||
// TODO make upside down turtle items render properly (currently inivisible)
|
||||
//boolean flip = label != null && (label.equals("Dinnerbone") || label.equals("Grumm"));
|
||||
boolean flip = false;
|
||||
TurtleModelCombination combo = new TurtleModelCombination(colour != -1, leftUpgrade, rightUpgrade, overlay, christmas, flip);
|
||||
|
||||
BakedModel model = TurtleSmartItemModel.this.m_cachedModels.get(combo);
|
||||
if (model == null) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user