CuboidFace.java

net.minecraft.client.resources.model.cuboid.CuboidFace

信息

  • 全限定名:net.minecraft.client.resources.model.cuboid.CuboidFace
  • 类型:public record
  • 包:net.minecraft.client.resources.model.cuboid
  • 源码路径:src/main/java/net/minecraft/client/resources/model/cuboid/CuboidFace.java
  • 起始行号:L18
  • 职责:

    TODO

字段/常量

  • NO_TINT
    • 类型: int
    • 修饰符: public static final
    • 源码定位: L19
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.client.resources.model.cuboid.CuboidFace.Deserializer

    • 类型: class
    • 修饰符: protected static
    • 源码定位: L30
    • 说明:

      TODO

  • net.minecraft.client.resources.model.cuboid.CuboidFace.UVs

    • 类型: record
    • 修饰符: public
    • 源码定位: L81
    • 说明:

      TODO

构造器

方法

下面的方法块按源码顺序生成。

public static float getU(CuboidFace.UVs uvs, Quadrant rotation, int vertex) @ L21

  • 方法名:getU
  • 源码定位:L21
  • 返回类型:float
  • 修饰符:public static

参数:

  • uvs: CuboidFace.UVs
  • rotation: Quadrant
  • vertex: int

说明:

TODO

public static float getV(CuboidFace.UVs uvs, Quadrant rotation, int index) @ L25

  • 方法名:getV
  • 源码定位:L25
  • 返回类型:float
  • 修饰符:public static

参数:

  • uvs: CuboidFace.UVs
  • rotation: Quadrant
  • index: int

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public record CuboidFace(@Nullable Direction cullForDirection, int tintIndex, String texture, CuboidFace.@Nullable UVs uvs, Quadrant rotation) {
    public static final int NO_TINT = -1;
 
    public static float getU(CuboidFace.UVs uvs, Quadrant rotation, int vertex) {
        return uvs.getVertexU(rotation.rotateVertexIndex(vertex)) / 16.0F;
    }
 
    public static float getV(CuboidFace.UVs uvs, Quadrant rotation, int index) {
        return uvs.getVertexV(rotation.rotateVertexIndex(index)) / 16.0F;
    }
 
    @OnlyIn(Dist.CLIENT)
    protected static class Deserializer implements JsonDeserializer<CuboidFace> {
        private static final int DEFAULT_TINT_INDEX = -1;
        private static final int DEFAULT_ROTATION = 0;
 
        public CuboidFace deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
            JsonObject object = json.getAsJsonObject();
            Direction cullDirection = getCullFacing(object);
            int tintIndex = getTintIndex(object);
            String texture = getTexture(object);
            CuboidFace.UVs uvs = getUVs(object);
            Quadrant rotation = getRotation(object);
            return new CuboidFace(cullDirection, tintIndex, texture, uvs, rotation);
        }
 
        private static int getTintIndex(JsonObject object) {
            return GsonHelper.getAsInt(object, "tintindex", -1);
        }
 
        private static String getTexture(JsonObject object) {
            return GsonHelper.getAsString(object, "texture");
        }
 
        private static @Nullable Direction getCullFacing(JsonObject object) {
            String cullFace = GsonHelper.getAsString(object, "cullface", "");
            return Direction.byName(cullFace);
        }
 
        private static Quadrant getRotation(JsonObject object) {
            int rotation = GsonHelper.getAsInt(object, "rotation", 0);
            return Quadrant.parseJson(rotation);
        }
 
        private static CuboidFace.@Nullable UVs getUVs(JsonObject object) {
            if (!object.has("uv")) {
                return null;
            } else {
                JsonArray uvArray = GsonHelper.getAsJsonArray(object, "uv");
                if (uvArray.size() != 4) {
                    throw new JsonParseException("Expected 4 uv values, found: " + uvArray.size());
                } else {
                    float minU = GsonHelper.convertToFloat(uvArray.get(0), "minU");
                    float minV = GsonHelper.convertToFloat(uvArray.get(1), "minV");
                    float maxU = GsonHelper.convertToFloat(uvArray.get(2), "maxU");
                    float maxV = GsonHelper.convertToFloat(uvArray.get(3), "maxV");
                    return new CuboidFace.UVs(minU, minV, maxU, maxV);
                }
            }
        }
    }
 
    @OnlyIn(Dist.CLIENT)
    public record UVs(float minU, float minV, float maxU, float maxV) {
        public float getVertexU(int index) {
            return index != 0 && index != 1 ? this.maxU : this.minU;
        }
 
        public float getVertexV(int index) {
            return index != 0 && index != 3 ? this.maxV : this.minV;
        }
    }
}

引用的其他类

  • Quadrant

    • 引用位置: 参数/方法调用
    • 关联成员: Quadrant.parseJson()
  • Direction

    • 引用位置: 方法调用
    • 关联成员: Direction.byName()
  • GsonHelper

    • 引用位置: 方法调用
    • 关联成员: GsonHelper.convertToFloat(), GsonHelper.getAsInt(), GsonHelper.getAsJsonArray(), GsonHelper.getAsString()