BlockModelRotation.java

net.minecraft.client.renderer.block.dispatch.BlockModelRotation

信息

  • 全限定名:net.minecraft.client.renderer.block.dispatch.BlockModelRotation
  • 类型:public class
  • 包:net.minecraft.client.renderer.block.dispatch
  • 源码路径:src/main/java/net/minecraft/client/renderer/block/dispatch/BlockModelRotation.java
  • 起始行号:L16
  • 实现:ModelState
  • 职责:

    TODO

字段/常量

  • BY_GROUP_ORDINAL

    • 类型: Map<OctahedralGroup,BlockModelRotation>
    • 修饰符: private static final
    • 源码定位: L17
    • 说明:

      TODO

  • IDENTITY

    • 类型: BlockModelRotation
    • 修饰符: public static final
    • 源码定位: L18
    • 说明:

      TODO

  • orientation

    • 类型: OctahedralGroup
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

  • transformation

    • 类型: Transformation
    • 修饰符: private final
    • 源码定位: L20
    • 说明:

      TODO

  • faceMapping

    • 类型: Map<Direction,Matrix4fc>
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • inverseFaceMapping

    • 类型: Map<Direction,Matrix4fc>
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • withUvLock

    • 类型: BlockModelRotation.WithUvLock
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.client.renderer.block.dispatch.BlockModelRotation.WithUvLock
    • 类型: record
    • 修饰符: private
    • 源码定位: L59
    • 说明:

      TODO

构造器

private BlockModelRotation(OctahedralGroup orientation) @ L25

  • 构造器名:BlockModelRotation
  • 源码定位:L25
  • 修饰符:private

参数:

  • orientation: OctahedralGroup

说明:

TODO

方法

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

public Transformation transformation() @ L40

  • 方法名:transformation
  • 源码定位:L40
  • 返回类型:Transformation
  • 修饰符:public

参数:

说明:

TODO

public static BlockModelRotation get(OctahedralGroup group) @ L45

  • 方法名:get
  • 源码定位:L45
  • 返回类型:BlockModelRotation
  • 修饰符:public static

参数:

  • group: OctahedralGroup

说明:

TODO

public ModelState withUvLock() @ L49

  • 方法名:withUvLock
  • 源码定位:L49
  • 返回类型:ModelState
  • 修饰符:public

参数:

说明:

TODO

public String toString() @ L53

  • 方法名:toString
  • 源码定位:L53
  • 返回类型:String
  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class BlockModelRotation implements ModelState {
    private static final Map<OctahedralGroup, BlockModelRotation> BY_GROUP_ORDINAL = Util.makeEnumMap(OctahedralGroup.class, BlockModelRotation::new);
    public static final BlockModelRotation IDENTITY = get(OctahedralGroup.IDENTITY);
    private final OctahedralGroup orientation;
    private final Transformation transformation;
    private final Map<Direction, Matrix4fc> faceMapping = new EnumMap<>(Direction.class);
    private final Map<Direction, Matrix4fc> inverseFaceMapping = new EnumMap<>(Direction.class);
    private final BlockModelRotation.WithUvLock withUvLock = new BlockModelRotation.WithUvLock(this);
 
    private BlockModelRotation(OctahedralGroup orientation) {
        this.orientation = orientation;
        if (orientation != OctahedralGroup.IDENTITY) {
            this.transformation = new Transformation(new Matrix4f(orientation.transformation()));
        } else {
            this.transformation = Transformation.IDENTITY;
        }
 
        for (Direction face : Direction.values()) {
            Matrix4fc faceTransform = BlockMath.getFaceTransformation(this.transformation, face).getMatrix();
            this.faceMapping.put(face, faceTransform);
            this.inverseFaceMapping.put(face, faceTransform.invertAffine(new Matrix4f()));
        }
    }
 
    @Override
    public Transformation transformation() {
        return this.transformation;
    }
 
    public static BlockModelRotation get(OctahedralGroup group) {
        return BY_GROUP_ORDINAL.get(group);
    }
 
    public ModelState withUvLock() {
        return this.withUvLock;
    }
 
    @Override
    public String toString() {
        return "simple[" + this.orientation.getSerializedName() + "]";
    }
 
    @OnlyIn(Dist.CLIENT)
    private record WithUvLock(BlockModelRotation parent) implements ModelState {
        @Override
        public Transformation transformation() {
            return this.parent.transformation;
        }
 
        @Override
        public Matrix4fc faceTransformation(Direction face) {
            return this.parent.faceMapping.getOrDefault(face, NO_TRANSFORM);
        }
 
        @Override
        public Matrix4fc inverseFaceTransformation(Direction face) {
            return this.parent.inverseFaceMapping.getOrDefault(face, NO_TRANSFORM);
        }
 
        @Override
        public String toString() {
            return "uvLocked[" + this.parent.orientation.getSerializedName() + "]";
        }
    }
}

引用的其他类

  • OctahedralGroup

    • 引用位置: 参数/字段
  • Transformation

    • 引用位置: 字段/构造调用/返回值
    • 关联成员: Transformation()
  • ModelState

    • 引用位置: 实现/返回值
  • BlockMath

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

    • 引用位置: 字段/方法调用
    • 关联成员: Direction.values()
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.makeEnumMap()