PlayerModel.java
net.minecraft.client.model.player.PlayerModel
信息
- 全限定名:net.minecraft.client.model.player.PlayerModel
- 类型:public class
- 包:net.minecraft.client.model.player
- 源码路径:src/main/java/net/minecraft/client/model/player/PlayerModel.java
- 起始行号:L22
- 继承:HumanoidModel
- 职责:
TODO
字段/常量
-
LEFT_SLEEVE- 类型:
String - 修饰符:
protected static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
RIGHT_SLEEVE- 类型:
String - 修饰符:
protected static final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
LEFT_PANTS- 类型:
String - 修饰符:
protected static final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
RIGHT_PANTS- 类型:
String - 修饰符:
protected static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
bodyParts- 类型:
List<ModelPart> - 修饰符:
private final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
leftSleeve- 类型:
ModelPart - 修饰符:
public final - 源码定位:
L28 - 说明:
TODO
- 类型:
-
rightSleeve- 类型:
ModelPart - 修饰符:
public final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
leftPants- 类型:
ModelPart - 修饰符:
public final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
rightPants- 类型:
ModelPart - 修饰符:
public final - 源码定位:
L31 - 说明:
TODO
- 类型:
-
jacket- 类型:
ModelPart - 修饰符:
public final - 源码定位:
L32 - 说明:
TODO
- 类型:
-
slim- 类型:
boolean - 修饰符:
private final - 源码定位:
L33 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public PlayerModel(ModelPart root, boolean slim) @ L35
- 构造器名:PlayerModel
- 源码定位:L35
- 修饰符:public
参数:
- root: ModelPart
- slim: boolean
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static MeshDefinition createMesh(CubeDeformation scale, boolean slim) @ L46
- 方法名:createMesh
- 源码定位:L46
- 返回类型:MeshDefinition
- 修饰符:public static
参数:
- scale: CubeDeformation
- slim: boolean
说明:
TODO
public static ArmorModelSet<MeshDefinition> createArmorMeshSet(CubeDeformation innerDeformation, CubeDeformation outerDeformation) @ L93
- 方法名:createArmorMeshSet
- 源码定位:L93
- 返回类型:ArmorModelSet
- 修饰符:public static
参数:
- innerDeformation: CubeDeformation
- outerDeformation: CubeDeformation
说明:
TODO
public void setupAnim(AvatarRenderState state) @ L110
- 方法名:setupAnim
- 源码定位:L110
- 返回类型:void
- 修饰符:public
参数:
- state: AvatarRenderState
说明:
TODO
public void translateToHand(AvatarRenderState state, HumanoidArm arm, PoseStack poseStack) @ L126
- 方法名:translateToHand
- 源码定位:L126
- 返回类型:void
- 修饰符:public
参数:
- state: AvatarRenderState
- arm: HumanoidArm
- poseStack: PoseStack
说明:
TODO
public ModelPart getRandomBodyPart(RandomSource random) @ L139
- 方法名:getRandomBodyPart
- 源码定位:L139
- 返回类型:ModelPart
- 修饰符:public
参数:
- random: RandomSource
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class PlayerModel extends HumanoidModel<AvatarRenderState> {
protected static final String LEFT_SLEEVE = "left_sleeve";
protected static final String RIGHT_SLEEVE = "right_sleeve";
protected static final String LEFT_PANTS = "left_pants";
protected static final String RIGHT_PANTS = "right_pants";
private final List<ModelPart> bodyParts;
public final ModelPart leftSleeve;
public final ModelPart rightSleeve;
public final ModelPart leftPants;
public final ModelPart rightPants;
public final ModelPart jacket;
private final boolean slim;
public PlayerModel(ModelPart root, boolean slim) {
super(root, RenderTypes::entityTranslucent);
this.slim = slim;
this.leftSleeve = this.leftArm.getChild("left_sleeve");
this.rightSleeve = this.rightArm.getChild("right_sleeve");
this.leftPants = this.leftLeg.getChild("left_pants");
this.rightPants = this.rightLeg.getChild("right_pants");
this.jacket = this.body.getChild("jacket");
this.bodyParts = List.of(this.head, this.body, this.leftArm, this.rightArm, this.leftLeg, this.rightLeg);
}
public static MeshDefinition createMesh(CubeDeformation scale, boolean slim) {
MeshDefinition mesh = HumanoidModel.createMesh(scale, 0.0F);
PartDefinition root = mesh.getRoot();
float overlayScale = 0.25F;
if (slim) {
PartDefinition leftArm = root.addOrReplaceChild(
"left_arm", CubeListBuilder.create().texOffs(32, 48).addBox(-1.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, scale), PartPose.offset(5.0F, 2.0F, 0.0F)
);
PartDefinition rightArm = root.addOrReplaceChild(
"right_arm", CubeListBuilder.create().texOffs(40, 16).addBox(-2.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, scale), PartPose.offset(-5.0F, 2.0F, 0.0F)
);
leftArm.addOrReplaceChild(
"left_sleeve", CubeListBuilder.create().texOffs(48, 48).addBox(-1.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
rightArm.addOrReplaceChild(
"right_sleeve", CubeListBuilder.create().texOffs(40, 32).addBox(-2.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
} else {
PartDefinition leftArm = root.addOrReplaceChild(
"left_arm", CubeListBuilder.create().texOffs(32, 48).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale), PartPose.offset(5.0F, 2.0F, 0.0F)
);
PartDefinition rightArm = root.getChild("right_arm");
leftArm.addOrReplaceChild(
"left_sleeve", CubeListBuilder.create().texOffs(48, 48).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
rightArm.addOrReplaceChild(
"right_sleeve", CubeListBuilder.create().texOffs(40, 32).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
}
PartDefinition leftLeg = root.addOrReplaceChild(
"left_leg", CubeListBuilder.create().texOffs(16, 48).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale), PartPose.offset(1.9F, 12.0F, 0.0F)
);
PartDefinition rightLeg = root.getChild("right_leg");
leftLeg.addOrReplaceChild(
"left_pants", CubeListBuilder.create().texOffs(0, 48).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
rightLeg.addOrReplaceChild(
"right_pants", CubeListBuilder.create().texOffs(0, 32).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
PartDefinition body = root.getChild("body");
body.addOrReplaceChild(
"jacket", CubeListBuilder.create().texOffs(16, 32).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, scale.extend(0.25F)), PartPose.ZERO
);
return mesh;
}
public static ArmorModelSet<MeshDefinition> createArmorMeshSet(CubeDeformation innerDeformation, CubeDeformation outerDeformation) {
return HumanoidModel.createArmorMeshSet(innerDeformation, outerDeformation).map(mesh -> {
PartDefinition root = mesh.getRoot();
PartDefinition leftArm = root.getChild("left_arm");
PartDefinition rightArm = root.getChild("right_arm");
leftArm.addOrReplaceChild("left_sleeve", CubeListBuilder.create(), PartPose.ZERO);
rightArm.addOrReplaceChild("right_sleeve", CubeListBuilder.create(), PartPose.ZERO);
PartDefinition leftLeg = root.getChild("left_leg");
PartDefinition rightLeg = root.getChild("right_leg");
leftLeg.addOrReplaceChild("left_pants", CubeListBuilder.create(), PartPose.ZERO);
rightLeg.addOrReplaceChild("right_pants", CubeListBuilder.create(), PartPose.ZERO);
PartDefinition body = root.getChild("body");
body.addOrReplaceChild("jacket", CubeListBuilder.create(), PartPose.ZERO);
return (MeshDefinition)mesh;
});
}
public void setupAnim(AvatarRenderState state) {
boolean showBody = !state.isSpectator;
this.body.visible = showBody;
this.rightArm.visible = showBody;
this.leftArm.visible = showBody;
this.rightLeg.visible = showBody;
this.leftLeg.visible = showBody;
this.hat.visible = state.showHat;
this.jacket.visible = state.showJacket;
this.leftPants.visible = state.showLeftPants;
this.rightPants.visible = state.showRightPants;
this.leftSleeve.visible = state.showLeftSleeve;
this.rightSleeve.visible = state.showRightSleeve;
super.setupAnim(state);
}
public void translateToHand(AvatarRenderState state, HumanoidArm arm, PoseStack poseStack) {
this.root().translateAndRotate(poseStack);
ModelPart part = this.getArm(arm);
if (this.slim) {
float offset = 0.5F * (arm == HumanoidArm.RIGHT ? 1 : -1);
part.x += offset;
part.translateAndRotate(poseStack);
part.x -= offset;
} else {
part.translateAndRotate(poseStack);
}
}
public ModelPart getRandomBodyPart(RandomSource random) {
return Util.getRandom(this.bodyParts, random);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用/继承 - 关联成员:
HumanoidModel.createArmorMeshSet(), HumanoidModel.createMesh()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
PartPose.offset()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CubeListBuilder.create()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.getRandom()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: