BatModel.java

net.minecraft.client.model.ambient.BatModel

信息

  • 全限定名:net.minecraft.client.model.ambient.BatModel
  • 类型:public class
  • 包:net.minecraft.client.model.ambient
  • 源码路径:src/main/java/net/minecraft/client/model/ambient/BatModel.java
  • 起始行号:L18
  • 继承:EntityModel
  • 职责:

    TODO

字段/常量

  • head

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

      TODO

  • body

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

      TODO

  • rightWing

    • 类型: ModelPart
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • leftWing

    • 类型: ModelPart
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • rightWingTip

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

      TODO

  • leftWingTip

    • 类型: ModelPart
    • 修饰符: private final
    • 源码定位: L24
    • 说明:

      TODO

  • feet

    • 类型: ModelPart
    • 修饰符: private final
    • 源码定位: L25
    • 说明:

      TODO

  • flyingAnimation

    • 类型: KeyframeAnimation
    • 修饰符: private final
    • 源码定位: L26
    • 说明:

      TODO

  • restingAnimation

    • 类型: KeyframeAnimation
    • 修饰符: private final
    • 源码定位: L27
    • 说明:

      TODO

内部类/嵌套类型

构造器

public BatModel(ModelPart root) @ L29

  • 构造器名:BatModel
  • 源码定位:L29
  • 修饰符:public

参数:

  • root: ModelPart

说明:

TODO

方法

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

public static LayerDefinition createBodyLayer() @ L42

  • 方法名:createBodyLayer
  • 源码定位:L42
  • 返回类型:LayerDefinition
  • 修饰符:public static

参数:

说明:

TODO

public void setupAnim(BatRenderState state) @ L73

  • 方法名:setupAnim
  • 源码定位:L73
  • 返回类型:void
  • 修饰符:public

参数:

  • state: BatRenderState

说明:

TODO

private void applyHeadRotation(float yRot) @ L83

  • 方法名:applyHeadRotation
  • 源码定位:L83
  • 返回类型:void
  • 修饰符:private

参数:

  • yRot: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class BatModel extends EntityModel<BatRenderState> {
    private final ModelPart head;
    private final ModelPart body;
    private final ModelPart rightWing;
    private final ModelPart leftWing;
    private final ModelPart rightWingTip;
    private final ModelPart leftWingTip;
    private final ModelPart feet;
    private final KeyframeAnimation flyingAnimation;
    private final KeyframeAnimation restingAnimation;
 
    public BatModel(ModelPart root) {
        super(root, RenderTypes::entityCutoutCull);
        this.body = root.getChild("body");
        this.head = root.getChild("head");
        this.rightWing = this.body.getChild("right_wing");
        this.rightWingTip = this.rightWing.getChild("right_wing_tip");
        this.leftWing = this.body.getChild("left_wing");
        this.leftWingTip = this.leftWing.getChild("left_wing_tip");
        this.feet = this.body.getChild("feet");
        this.flyingAnimation = BatAnimation.BAT_FLYING.bake(root);
        this.restingAnimation = BatAnimation.BAT_RESTING.bake(root);
    }
 
    public static LayerDefinition createBodyLayer() {
        MeshDefinition meshdefinition = new MeshDefinition();
        PartDefinition partdefinition = meshdefinition.getRoot();
        PartDefinition body = partdefinition.addOrReplaceChild(
            "body", CubeListBuilder.create().texOffs(0, 0).addBox(-1.5F, 0.0F, -1.0F, 3.0F, 5.0F, 2.0F), PartPose.offset(0.0F, 17.0F, 0.0F)
        );
        PartDefinition head = partdefinition.addOrReplaceChild(
            "head", CubeListBuilder.create().texOffs(0, 7).addBox(-2.0F, -3.0F, -1.0F, 4.0F, 3.0F, 2.0F), PartPose.offset(0.0F, 17.0F, 0.0F)
        );
        head.addOrReplaceChild(
            "right_ear", CubeListBuilder.create().texOffs(1, 15).addBox(-2.5F, -4.0F, 0.0F, 3.0F, 5.0F, 0.0F), PartPose.offset(-1.5F, -2.0F, 0.0F)
        );
        head.addOrReplaceChild(
            "left_ear", CubeListBuilder.create().texOffs(8, 15).addBox(-0.1F, -3.0F, 0.0F, 3.0F, 5.0F, 0.0F), PartPose.offset(1.1F, -3.0F, 0.0F)
        );
        PartDefinition rightWing = body.addOrReplaceChild(
            "right_wing", CubeListBuilder.create().texOffs(12, 0).addBox(-2.0F, -2.0F, 0.0F, 2.0F, 7.0F, 0.0F), PartPose.offset(-1.5F, 0.0F, 0.0F)
        );
        rightWing.addOrReplaceChild(
            "right_wing_tip", CubeListBuilder.create().texOffs(16, 0).addBox(-6.0F, -2.0F, 0.0F, 6.0F, 8.0F, 0.0F), PartPose.offset(-2.0F, 0.0F, 0.0F)
        );
        PartDefinition leftWing = body.addOrReplaceChild(
            "left_wing", CubeListBuilder.create().texOffs(12, 7).addBox(0.0F, -2.0F, 0.0F, 2.0F, 7.0F, 0.0F), PartPose.offset(1.5F, 0.0F, 0.0F)
        );
        leftWing.addOrReplaceChild(
            "left_wing_tip", CubeListBuilder.create().texOffs(16, 8).addBox(0.0F, -2.0F, 0.0F, 6.0F, 8.0F, 0.0F), PartPose.offset(2.0F, 0.0F, 0.0F)
        );
        body.addOrReplaceChild("feet", CubeListBuilder.create().texOffs(16, 16).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 2.0F, 0.0F), PartPose.offset(0.0F, 5.0F, 0.0F));
        return LayerDefinition.create(meshdefinition, 32, 32);
    }
 
    public void setupAnim(BatRenderState state) {
        super.setupAnim(state);
        if (state.isResting) {
            this.applyHeadRotation(state.yRot);
        }
 
        this.flyingAnimation.apply(state.flyAnimationState, state.ageInTicks);
        this.restingAnimation.apply(state.restAnimationState, state.ageInTicks);
    }
 
    private void applyHeadRotation(float yRot) {
        this.head.yRot = yRot * (float) (Math.PI / 180.0);
    }
}

引用的其他类