FoxModel.java

net.minecraft.client.model.animal.fox.FoxModel

信息

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

    TODO

字段/常量

  • head

    • 类型: ModelPart
    • 修饰符: public final
    • 源码定位: L12
    • 说明:

      TODO

  • body

    • 类型: ModelPart
    • 修饰符: protected final
    • 源码定位: L13
    • 说明:

      TODO

  • rightHindLeg

    • 类型: ModelPart
    • 修饰符: protected final
    • 源码定位: L14
    • 说明:

      TODO

  • leftHindLeg

    • 类型: ModelPart
    • 修饰符: protected final
    • 源码定位: L15
    • 说明:

      TODO

  • rightFrontLeg

    • 类型: ModelPart
    • 修饰符: protected final
    • 源码定位: L16
    • 说明:

      TODO

  • leftFrontLeg

    • 类型: ModelPart
    • 修饰符: protected final
    • 源码定位: L17
    • 说明:

      TODO

  • tail

    • 类型: ModelPart
    • 修饰符: protected final
    • 源码定位: L18
    • 说明:

      TODO

  • legMotionPos

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

      TODO

内部类/嵌套类型

构造器

public FoxModel(ModelPart root) @ L21

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

参数:

  • root: ModelPart

说明:

TODO

方法

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

public void setupAnim(FoxRenderState state) @ L32

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

参数:

  • state: FoxRenderState

说明:

TODO

protected void setSittingPose(FoxRenderState state) @ L68

  • 方法名:setSittingPose
  • 源码定位:L68
  • 返回类型:void
  • 修饰符:protected

参数:

  • state: FoxRenderState

说明:

TODO

protected void setSleepingPose(FoxRenderState state) @ L73

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

参数:

  • state: FoxRenderState

说明:

TODO

protected void setWalkingPose(FoxRenderState state) @ L80

  • 方法名:setWalkingPose
  • 源码定位:L80
  • 返回类型:void
  • 修饰符:protected

参数:

  • state: FoxRenderState

说明:

TODO

protected void setCrouchingPose(FoxRenderState state) @ L88

  • 方法名:setCrouchingPose
  • 源码定位:L88
  • 返回类型:void
  • 修饰符:protected

参数:

  • state: FoxRenderState

说明:

TODO

protected void setPouncingPose(FoxRenderState state) @ L99

  • 方法名:setPouncingPose
  • 源码定位:L99
  • 返回类型:void
  • 修饰符:protected

参数:

  • state: FoxRenderState

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public abstract class FoxModel extends EntityModel<FoxRenderState> {
    public final ModelPart head;
    protected final ModelPart body;
    protected final ModelPart rightHindLeg;
    protected final ModelPart leftHindLeg;
    protected final ModelPart rightFrontLeg;
    protected final ModelPart leftFrontLeg;
    protected final ModelPart tail;
    private float legMotionPos;
 
    public FoxModel(ModelPart root) {
        super(root);
        this.head = root.getChild("head");
        this.body = root.getChild("body");
        this.rightHindLeg = root.getChild("right_hind_leg");
        this.leftHindLeg = root.getChild("left_hind_leg");
        this.rightFrontLeg = root.getChild("right_front_leg");
        this.leftFrontLeg = root.getChild("left_front_leg");
        this.tail = this.body.getChild("tail");
    }
 
    public void setupAnim(FoxRenderState state) {
        super.setupAnim(state);
        this.setWalkingPose(state);
        if (state.isCrouching) {
            this.setCrouchingPose(state);
        } else if (state.isSleeping) {
            this.setSleepingPose(state);
        } else if (state.isSitting) {
            this.setSittingPose(state);
        }
 
        if (state.isPouncing) {
            this.setPouncingPose(state);
        }
 
        if (!state.isSleeping && !state.isFaceplanted && !state.isCrouching) {
            this.head.xRot = state.xRot * (float) (Math.PI / 180.0);
            this.head.yRot = state.yRot * (float) (Math.PI / 180.0);
        }
 
        if (state.isSleeping) {
            this.head.xRot = 0.0F;
            this.head.yRot = (float) (-Math.PI * 2.0 / 3.0);
            this.head.zRot = Mth.cos(state.ageInTicks * 0.027F) / 22.0F;
        }
 
        if (state.isFaceplanted) {
            float legMoveFactor = 0.1F;
            this.legMotionPos += 0.67F;
            this.rightHindLeg.xRot = Mth.cos(this.legMotionPos * 0.4662F) * 0.1F;
            this.leftHindLeg.xRot = Mth.cos(this.legMotionPos * 0.4662F + (float) Math.PI) * 0.1F;
            this.rightFrontLeg.xRot = Mth.cos(this.legMotionPos * 0.4662F + (float) Math.PI) * 0.1F;
            this.leftFrontLeg.xRot = Mth.cos(this.legMotionPos * 0.4662F) * 0.1F;
        }
    }
 
    protected void setSittingPose(FoxRenderState state) {
        this.head.xRot = 0.0F;
        this.head.yRot = 0.0F;
    }
 
    protected void setSleepingPose(FoxRenderState state) {
        this.rightHindLeg.visible = false;
        this.leftHindLeg.visible = false;
        this.rightFrontLeg.visible = false;
        this.leftFrontLeg.visible = false;
    }
 
    protected void setWalkingPose(FoxRenderState state) {
        this.head.zRot = state.headRollAngle;
        this.rightHindLeg.visible = true;
        this.leftHindLeg.visible = true;
        this.rightFrontLeg.visible = true;
        this.leftFrontLeg.visible = true;
    }
 
    protected void setCrouchingPose(FoxRenderState state) {
        this.body.xRot += 0.10471976F;
        this.head.y = this.head.y + state.crouchAmount * state.ageScale;
        float wiggleAmount = Mth.cos(state.ageInTicks) * 0.05F;
        this.body.yRot = wiggleAmount;
        this.rightHindLeg.zRot = wiggleAmount;
        this.leftHindLeg.zRot = wiggleAmount;
        this.rightFrontLeg.zRot = wiggleAmount / 2.0F;
        this.leftFrontLeg.zRot = wiggleAmount / 2.0F;
    }
 
    protected void setPouncingPose(FoxRenderState state) {
    }
}

引用的其他类