armor?!
|
@ -0,0 +1,85 @@
|
|||
package at.petrak.hexcasting.client.model.armor;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.minecraft.client.model.HumanoidModel;
|
||||
import net.minecraft.client.model.geom.ModelPart;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||
|
||||
// https://github.com/VazkiiMods/Botania/blob/1.19.x/Xplat/src/main/java/vazkii/botania/client/model/armor/ArmorModel.java
|
||||
public class MyOwnArmorModelWithBlackjackAndHookers extends HumanoidModel<LivingEntity> {
|
||||
protected final EquipmentSlot slot;
|
||||
|
||||
public MyOwnArmorModelWithBlackjackAndHookers(ModelPart root, EquipmentSlot slot) {
|
||||
super(root);
|
||||
this.slot = slot;
|
||||
}
|
||||
|
||||
// [VanillaCopy] ArmorStandArmorModel.setupAnim because armor stands are dumb
|
||||
// This fixes the armor "breathing" and helmets always facing south on armor stands
|
||||
@Override
|
||||
public void setupAnim(LivingEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks,
|
||||
float netHeadYaw, float headPitch) {
|
||||
if (!(entity instanceof ArmorStand entityIn)) {
|
||||
super.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch);
|
||||
return;
|
||||
}
|
||||
|
||||
this.head.xRot = ((float) Math.PI / 180F) * entityIn.getHeadPose().getX();
|
||||
this.head.yRot = ((float) Math.PI / 180F) * entityIn.getHeadPose().getY();
|
||||
this.head.zRot = ((float) Math.PI / 180F) * entityIn.getHeadPose().getZ();
|
||||
this.head.setPos(0.0F, 1.0F, 0.0F);
|
||||
this.body.xRot = ((float) Math.PI / 180F) * entityIn.getBodyPose().getX();
|
||||
this.body.yRot = ((float) Math.PI / 180F) * entityIn.getBodyPose().getY();
|
||||
this.body.zRot = ((float) Math.PI / 180F) * entityIn.getBodyPose().getZ();
|
||||
this.leftArm.xRot = ((float) Math.PI / 180F) * entityIn.getLeftArmPose().getX();
|
||||
this.leftArm.yRot = ((float) Math.PI / 180F) * entityIn.getLeftArmPose().getY();
|
||||
this.leftArm.zRot = ((float) Math.PI / 180F) * entityIn.getLeftArmPose().getZ();
|
||||
this.rightArm.xRot = ((float) Math.PI / 180F) * entityIn.getRightArmPose().getX();
|
||||
this.rightArm.yRot = ((float) Math.PI / 180F) * entityIn.getRightArmPose().getY();
|
||||
this.rightArm.zRot = ((float) Math.PI / 180F) * entityIn.getRightArmPose().getZ();
|
||||
this.leftLeg.xRot = ((float) Math.PI / 180F) * entityIn.getLeftLegPose().getX();
|
||||
this.leftLeg.yRot = ((float) Math.PI / 180F) * entityIn.getLeftLegPose().getY();
|
||||
this.leftLeg.zRot = ((float) Math.PI / 180F) * entityIn.getLeftLegPose().getZ();
|
||||
this.leftLeg.setPos(1.9F, 11.0F, 0.0F);
|
||||
this.rightLeg.xRot = ((float) Math.PI / 180F) * entityIn.getRightLegPose().getX();
|
||||
this.rightLeg.yRot = ((float) Math.PI / 180F) * entityIn.getRightLegPose().getY();
|
||||
this.rightLeg.zRot = ((float) Math.PI / 180F) * entityIn.getRightLegPose().getZ();
|
||||
this.rightLeg.setPos(-1.9F, 11.0F, 0.0F);
|
||||
this.hat.copyFrom(this.head);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderToBuffer(PoseStack ms, VertexConsumer buffer, int light, int overlay, float r, float g, float b
|
||||
, float a) {
|
||||
setPartVisibility(slot);
|
||||
super.renderToBuffer(ms, buffer, light, overlay, r, g, b, a);
|
||||
}
|
||||
|
||||
// [VanillaCopy] HumanoidArmorLayer
|
||||
private void setPartVisibility(EquipmentSlot slot) {
|
||||
setAllVisible(false);
|
||||
switch (slot) {
|
||||
case HEAD -> {
|
||||
head.visible = true;
|
||||
hat.visible = true;
|
||||
}
|
||||
case CHEST -> {
|
||||
body.visible = true;
|
||||
rightArm.visible = true;
|
||||
leftArm.visible = true;
|
||||
}
|
||||
case LEGS -> {
|
||||
body.visible = true;
|
||||
rightLeg.visible = true;
|
||||
leftLeg.visible = true;
|
||||
}
|
||||
case FEET -> {
|
||||
rightLeg.visible = true;
|
||||
leftLeg.visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 807 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 259 B |
After Width: | Height: | Size: 379 B |
After Width: | Height: | Size: 468 B |
After Width: | Height: | Size: 368 B |
After Width: | Height: | Size: 315 B |
After Width: | Height: | Size: 403 B |
After Width: | Height: | Size: 430 B |
After Width: | Height: | Size: 259 B |
After Width: | Height: | Size: 305 B |
After Width: | Height: | Size: 446 B |
After Width: | Height: | Size: 460 B |
After Width: | Height: | Size: 248 B |