BabyModelTransform.java

net.minecraft.client.model.BabyModelTransform

信息

  • 全限定名:net.minecraft.client.model.BabyModelTransform
  • 类型:public record
  • 包:net.minecraft.client.model
  • 源码路径:src/main/java/net/minecraft/client/model/BabyModelTransform.java
  • 起始行号:L14
  • 实现:MeshTransformer
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

public BabyModelTransform(Set<String> headParts) @ L17

  • 构造器名:BabyModelTransform
  • 源码定位:L17
  • 修饰符:public

参数:

  • headParts: Set

说明:

TODO

public BabyModelTransform(boolean scaleHead, float babyYHeadOffset, float babyZHeadOffset, Set<String> headParts) @ L21

  • 构造器名:BabyModelTransform
  • 源码定位:L21
  • 修饰符:public

参数:

  • scaleHead: boolean
  • babyYHeadOffset: float
  • babyZHeadOffset: float
  • headParts: Set

说明:

TODO

方法

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

public MeshDefinition apply(MeshDefinition mesh) @ L25

  • 方法名:apply
  • 源码定位:L25
  • 返回类型:MeshDefinition
  • 修饰符:public

参数:

  • mesh: MeshDefinition

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public record BabyModelTransform(
    boolean scaleHead, float babyYHeadOffset, float babyZHeadOffset, float babyHeadScale, float babyBodyScale, float bodyYOffset, Set<String> headParts
) implements MeshTransformer {
    public BabyModelTransform(Set<String> headParts) {
        this(false, 5.0F, 2.0F, headParts);
    }
 
    public BabyModelTransform(boolean scaleHead, float babyYHeadOffset, float babyZHeadOffset, Set<String> headParts) {
        this(scaleHead, babyYHeadOffset, babyZHeadOffset, 2.0F, 2.0F, 24.0F, headParts);
    }
 
    @Override
    public MeshDefinition apply(MeshDefinition mesh) {
        float headScale = this.scaleHead ? 1.5F / this.babyHeadScale : 1.0F;
        float bodyScale = 1.0F / this.babyBodyScale;
        UnaryOperator<PartPose> headTransform = p -> p.translated(0.0F, this.babyYHeadOffset, this.babyZHeadOffset).scaled(headScale);
        UnaryOperator<PartPose> bodyTransform = p -> p.translated(0.0F, this.bodyYOffset, 0.0F).scaled(bodyScale);
        MeshDefinition babyMesh = new MeshDefinition();
 
        for (Entry<String, PartDefinition> entry : mesh.getRoot().getChildren()) {
            String name = entry.getKey();
            PartDefinition part = entry.getValue();
            babyMesh.getRoot().addOrReplaceChild(name, part.transformed(this.headParts.contains(name) ? headTransform : bodyTransform));
        }
 
        return babyMesh;
    }
}

引用的其他类