diff --git a/src/main/java/cn/teampancake/theaurorian/client/model/AurorianSteelArmorModel.java b/src/main/java/cn/teampancake/theaurorian/client/model/AurorianSteelArmorModel.java new file mode 100644 index 00000000..2edaddf0 --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/client/model/AurorianSteelArmorModel.java @@ -0,0 +1,56 @@ +package cn.teampancake.theaurorian.client.model; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.LivingEntity; + +public class AurorianSteelArmorModel extends HumanoidModel { + + public AurorianSteelArmorModel(ModelPart root) { + super(root); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition partDefinition = meshDefinition.getRoot(); + PartDefinition bipedHead = partDefinition.addOrReplaceChild("head", CubeListBuilder.create() + .texOffs(96, 112).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.52F)) + .texOffs(0, 32).addBox(-1.0F, -9.25F, -5.25F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedHead.addOrReplaceChild("head_r1", CubeListBuilder.create().texOffs(9, 37).addBox(-2.0F, -3.125F, 0.0F, 2.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.5F, -3.0F, -4.515F, 0.0F, 0.5236F, 0.0F)); + bipedHead.addOrReplaceChild("head_r2", CubeListBuilder.create().texOffs(9, 37).mirror().addBox(0.0F, -3.125F, 0.0F, 2.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.5F, -3.0F, -4.515F, 0.0F, -0.5236F, 0.0F)); + partDefinition.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition bipedBody = partDefinition.addOrReplaceChild("body", CubeListBuilder.create() + .texOffs(104, 112).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(0, 57).addBox(-4.0F, 9.5F, -2.0F, 8.0F, 2.0F, 4.0F, new CubeDeformation(0.31F)) + .texOffs(25, 57).addBox(-2.5F, 9.5F, -2.625F, 5.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedBody.addOrReplaceChild("cube_r1", CubeListBuilder.create() + .texOffs(38, 53).addBox(-0.15F, 1.5F, -2.55F, 3.0F, 5.0F, 5.0F, new CubeDeformation(-0.003F)) + .texOffs(38, 53).addBox(-0.4F, -1.5F, -2.55F, 3.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.5F, 10.5F, 0.0F, 0.0F, 0.0F, 0.1309F)); + bipedBody.addOrReplaceChild("cube_r2", CubeListBuilder.create() + .texOffs(38, 53).mirror().addBox(-2.85F, 1.5F, -2.55F, 3.0F, 5.0F, 5.0F, new CubeDeformation(-0.003F)).mirror(false) + .texOffs(38, 53).mirror().addBox(-2.6F, -1.5F, -2.55F, 3.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.5F, 10.5F, 0.0F, 0.0F, 0.0F, -0.1309F)); + bipedBody.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(55, 55).addBox(-3.0F, -0.25F, 0.15F, 6.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 9.5F, 2.325F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bipedRightArm = partDefinition.addOrReplaceChild("right_arm", CubeListBuilder.create() + .texOffs(112, 112).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(40, 16).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)), PartPose.offset(-5.0F, 2.0F, 0.0F)); + bipedRightArm.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(0, 43).addBox(-2.5F, -4.0F, -3.0F, 4.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-2.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.1745F)); + PartDefinition bipedLeftArm = partDefinition.addOrReplaceChild("left_arm", CubeListBuilder.create() + .texOffs(112, 112).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(40, 16).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(5.0F, 2.0F, 0.0F)); + bipedLeftArm.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(0, 43).mirror().addBox(-1.5F, -4.0F, -3.0F, 4.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(2.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.1745F)); + partDefinition.addOrReplaceChild("right_leg", CubeListBuilder.create() + .texOffs(112, 112).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)) + .texOffs(16, 33).addBox(-2.0F, -0.25F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.54F)), PartPose.offset(-1.9F, 12.0F, 0.0F)); + partDefinition.addOrReplaceChild("left_leg", CubeListBuilder.create() + .texOffs(112, 112).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 16).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false) + .texOffs(16, 33).mirror().addBox(-2.0F, -0.25F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.54F)).mirror(false), PartPose.offset(1.9F, 12.0F, 0.0F)); + return LayerDefinition.create(meshDefinition, 128, 128); + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/client/model/CeruleanArmorModel.java b/src/main/java/cn/teampancake/theaurorian/client/model/CeruleanArmorModel.java new file mode 100644 index 00000000..1423e5f2 --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/client/model/CeruleanArmorModel.java @@ -0,0 +1,58 @@ +package cn.teampancake.theaurorian.client.model; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.LivingEntity; + +public class CeruleanArmorModel extends HumanoidModel { + + public CeruleanArmorModel(ModelPart root) { + super(root); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition partDefinition = meshDefinition.getRoot(); + PartDefinition bipedHead = partDefinition.addOrReplaceChild("head", CubeListBuilder.create() + .texOffs(96, 112).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.52F)) + .texOffs(56, 19).addBox(-3.26F, 0.625F, -4.39F, 2.0F, 1.0F, 1.0F, new CubeDeformation(0.13F)) + .texOffs(56, 19).mirror().addBox(1.26F, 0.625F, -4.39F, 2.0F, 1.0F, 1.0F, new CubeDeformation(0.13F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedHead.addOrReplaceChild("head_r1", CubeListBuilder.create().texOffs(56, 23).addBox(-1.0F, -3.0F, -0.4F, 2.0F, 3.0F, 7.0F, new CubeDeformation(0.125F)), PartPose.offsetAndRotation(0.0F, -8.5F, -4.0F, -0.2182F, 0.0F, 0.0F)); + partDefinition.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition bipedBody = partDefinition.addOrReplaceChild("body", CubeListBuilder.create() + .texOffs(104, 112).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(0, 45).addBox(-4.0F, 9.5F, -2.0F, 8.0F, 2.0F, 4.0F, new CubeDeformation(0.31F)) + .texOffs(19, 58).addBox(-3.0F, 8.8F, 2.4F, 6.0F, 9.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(19, 68).addBox(-2.5F, 9.55F, -2.35F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedBody.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 52).mirror().addBox(-2.25F, -2.0F, -2.5F, 4.0F, 10.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.0F, 11.0F, 0.0F, 0.0F, 0.0F, 0.1309F)); + bipedBody.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 52).addBox(-1.75F, -2.0F, -2.5F, 4.0F, 10.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.0F, 11.0F, 0.0F, 0.0F, 0.0F, -0.1309F)); + bipedBody.addOrReplaceChild("body_r1", CubeListBuilder.create().texOffs(75, 21).mirror().addBox(-0.5F, -4.0F, -3.0F, 2.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.0F, 2.5F, 0.0F, 0.0F, 0.0F, 0.1309F)); + bipedBody.addOrReplaceChild("body_r2", CubeListBuilder.create().texOffs(75, 21).addBox(-1.5F, -4.0F, -3.0F, 2.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, 2.5F, 0.0F, 0.0F, 0.0F, -0.1309F)); + PartDefinition bipedRightArm = partDefinition.addOrReplaceChild("right_arm", CubeListBuilder.create() + .texOffs(112, 112).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(40, 16).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)), PartPose.offset(-5.0F, 2.0F, 0.0F)); + bipedRightArm.addOrReplaceChild("right_arm_r1", CubeListBuilder.create().texOffs(17, 37) + .addBox(-5.5F, -3.0F, 0.0F, 4.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(0, 33).addBox(-1.5F, -3.0F, -2.5F, 3.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-2.0F, -1.0F, 0.0F, 0.0F, 0.0F, 0.2182F)); + PartDefinition bipedLeftArm = partDefinition.addOrReplaceChild("left_arm", CubeListBuilder.create() + .texOffs(112, 112).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(40, 16).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(5.0F, 2.0F, 0.0F)); + bipedLeftArm.addOrReplaceChild("left_arm_r1", CubeListBuilder.create() + .texOffs(17, 37).mirror().addBox(1.5F, -3.0F, 0.0F, 4.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 33).mirror().addBox(-1.5F, -3.0F, -2.5F, 3.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(2.0F, -1.0F, 0.0F, 0.0F, 0.0F, -0.2182F)); + partDefinition.addOrReplaceChild("right_leg", CubeListBuilder.create() + .texOffs(112, 112).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)) + .texOffs(32, 53).addBox(-2.0F, 3.75F, -2.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.45F)), PartPose.offset(-1.9F, 12.0F, 0.0F)); + partDefinition.addOrReplaceChild("left_leg", CubeListBuilder.create() + .texOffs(32, 53).mirror().addBox(-2.0F, 3.75F, -2.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.45F)).mirror(false) + .texOffs(112, 112).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 16).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(1.9F, 12.0F, 0.0F)); + return LayerDefinition.create(meshDefinition, 128, 128); + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/client/model/KnightArmorModel.java b/src/main/java/cn/teampancake/theaurorian/client/model/KnightArmorModel.java new file mode 100644 index 00000000..54cc1ca0 --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/client/model/KnightArmorModel.java @@ -0,0 +1,56 @@ +package cn.teampancake.theaurorian.client.model; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.LivingEntity; + +public class KnightArmorModel extends HumanoidModel { + + public KnightArmorModel(ModelPart root) { + super(root); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition partDefinition = meshDefinition.getRoot(); + PartDefinition bipedHead = partDefinition.addOrReplaceChild("head", CubeListBuilder.create() + .texOffs(96, 112).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.52F)) + .texOffs(0, 37).addBox(-0.5F, -13.0F, -4.25F, 1.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(0, 36).addBox(0.0F, -13.0F, -4.25F, 0.0F, 8.0F, 11.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedHead.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 33).addBox(-4.0F, -3.0F, 0.0F, 8.0F, 3.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -8.0F, -4.25F, -0.4363F, 0.0F, 0.0F)); + partDefinition.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition bipedBody = partDefinition.addOrReplaceChild("body", CubeListBuilder.create() + .texOffs(104, 112).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(23, 46).addBox(-4.0F, 10.0F, -2.0F, 8.0F, 2.0F, 4.0F, new CubeDeformation(0.31F)) + .texOffs(48, 56).mirror().addBox(-1.5F, 9.75F, 1.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(84, 50).mirror().addBox(-2.5F, 10.75F, 2.475F, 5.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(48, 56).mirror().addBox(-1.5F, 9.75F, -2.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedBody.addOrReplaceChild("body_r1", CubeListBuilder.create().texOffs(57, 18).addBox(-4.0F, -4.0F, -1.25F, 8.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 5.0F, -2.0F, -0.1309F, 0.0F, 0.0F)); + bipedBody.addOrReplaceChild("body_r2", CubeListBuilder.create().texOffs(65, 45).mirror().addBox(-3.25F, -1.25F, -2.5F, 4.0F, 13.0F, 5.0F, new CubeDeformation(-0.005F)).mirror(false), PartPose.offsetAndRotation(4.0F, 11.0F, 0.0F, 0.0F, 0.0F, -0.1309F)); + bipedBody.addOrReplaceChild("body_r3", CubeListBuilder.create().texOffs(48, 45).mirror().addBox(-1.75F, -2.25F, -2.5F, 3.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.0F, 11.0F, 0.0F, 0.0F, 0.0F, -0.3491F)); + bipedBody.addOrReplaceChild("body_r4", CubeListBuilder.create().texOffs(65, 45).addBox(-0.75F, -1.25F, -2.5F, 4.0F, 13.0F, 5.0F, new CubeDeformation(-0.005F)), PartPose.offsetAndRotation(-4.0F, 11.0F, 0.0F, 0.0F, 0.0F, 0.1309F)); + bipedBody.addOrReplaceChild("body_r5", CubeListBuilder.create().texOffs(48, 45).addBox(-1.25F, -2.25F, -2.5F, 3.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, 11.0F, 0.0F, 0.0F, 0.0F, 0.3491F)); + PartDefinition bipedRightArm = partDefinition.addOrReplaceChild("right_arm", CubeListBuilder.create() + .texOffs(112, 112).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(40, 16).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)), PartPose.offset(-5.0F, 2.0F, 0.0F)); + bipedRightArm.addOrReplaceChild("right_arm_r1", CubeListBuilder.create().texOffs(16, 32).addBox(-4.0F, -3.5F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.3491F)); + bipedRightArm.addOrReplaceChild("right_arm_r2", CubeListBuilder.create().texOffs(37, 32).addBox(-1.75F, -2.75F, -2.5F, 3.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.75F, 7.0F, 0.0F, 0.0F, 0.0F, -0.0873F)); + PartDefinition bipedLeftArm = partDefinition.addOrReplaceChild("left_arm", CubeListBuilder.create() + .texOffs(112, 112).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(40, 16).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(5.0F, 2.0F, 0.0F)); + bipedLeftArm.addOrReplaceChild("left_arm_r1", CubeListBuilder.create().texOffs(16, 32).mirror().addBox(-1.0F, -3.5F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.3491F)); + bipedLeftArm.addOrReplaceChild("left_arm_r2", CubeListBuilder.create().texOffs(37, 32).mirror().addBox(-1.25F, -2.75F, -2.5F, 3.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.75F, 7.0F, 0.0F, 0.0F, 0.0F, 0.0873F)); + partDefinition.addOrReplaceChild("right_leg", CubeListBuilder.create() + .texOffs(112, 112).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)), PartPose.offset(-1.9F, 12.0F, 0.0F)); + partDefinition.addOrReplaceChild("left_leg", CubeListBuilder.create() + .texOffs(112, 112).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 16).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(1.9F, 12.0F, 0.0F)); + return LayerDefinition.create(meshDefinition, 128, 128); + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/client/model/RunestoneKeeperModel.java b/src/main/java/cn/teampancake/theaurorian/client/model/RunestoneKeeperModel.java index 47c8dcc8..fdfb5817 100644 --- a/src/main/java/cn/teampancake/theaurorian/client/model/RunestoneKeeperModel.java +++ b/src/main/java/cn/teampancake/theaurorian/client/model/RunestoneKeeperModel.java @@ -28,9 +28,11 @@ public static LayerDefinition createBodyLayer() { PartDefinition partDefinition = meshDefinition.getRoot(); PartDefinition all2 = partDefinition.addOrReplaceChild("all2", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); PartDefinition all = all2.addOrReplaceChild("all", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); - all.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(74, 16).addBox(-1.0F, -2.0F, -1.0F, 2.0F, 14.0F, 2.0F, new CubeDeformation(0.0F)) + all.addOrReplaceChild("right_leg", CubeListBuilder.create() + .texOffs(74, 16).addBox(-1.0F, -2.0F, -1.0F, 2.0F, 14.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(20, 32).addBox(-1.5F, 6.5F, -1.5F, 3.0F, 6.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(-2.0F, -12.5F, 0.0F)); - all.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(74, 16).addBox(-1.0F, -2.0F, -1.0F, 2.0F, 14.0F, 2.0F, new CubeDeformation(0.0F)) + all.addOrReplaceChild("left_leg", CubeListBuilder.create() + .texOffs(74, 16).addBox(-1.0F, -2.0F, -1.0F, 2.0F, 14.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(20, 32).addBox(-1.5F, 6.5F, -1.5F, 3.0F, 6.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(2.0F, -12.5F, 0.0F)); PartDefinition body_all = all.addOrReplaceChild("body_all", CubeListBuilder.create(), PartPose.offset(0.0F, -15.0F, 0.0F)); PartDefinition body = body_all.addOrReplaceChild("body", CubeListBuilder.create() @@ -44,47 +46,32 @@ public static LayerDefinition createBodyLayer() { PartDefinition left_arm = body_all.addOrReplaceChild("left_arm", CubeListBuilder.create() .texOffs(42, 18).addBox(0.0F, -1.0F, -1.0F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(92, 11).addBox(-0.5F, 8.0F, -1.5F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(4.0F, -10.5F, 0.0F)); - PartDefinition shield = left_arm.addOrReplaceChild("shield", CubeListBuilder.create().texOffs(74, 0).addBox(0.5F, -4.0F, -4.0F, 1.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), - PartPose.offset(1.5F, 9.0F, 0.0F)); + PartDefinition shield = left_arm.addOrReplaceChild("shield", CubeListBuilder.create().texOffs(74, 0).addBox(0.5F, -4.0F, -4.0F, 1.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(1.5F, 9.0F, 0.0F)); PartDefinition shield2 = shield.addOrReplaceChild("shield2", CubeListBuilder.create(), PartPose.offset(1.7F, 0.0F, 0.0F)); - shield2.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(56, 48).addBox(0.0F, -3.0F, -3.0F, 0.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.3491F, 0.0F, 0.0F)); + shield2.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(56, 48).addBox(0.0F, -3.0F, -3.0F, 0.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.3491F, 0.0F, 0.0F)); PartDefinition right_arm = body_all.addOrReplaceChild("right_arm", CubeListBuilder.create() .texOffs(42, 18).addBox(-2.0F, -1.0F, -1.0F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(46, 36).addBox(-2.5F, 6.0F, -1.5F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, -10.5F, 0.0F)); - right_arm.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(32, 34).addBox(-0.8F, -1.0F, -0.2F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(-1.5F, 4.0F, 0.0F, -0.0873F, -1.0036F, -0.1745F)); + right_arm.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(32, 34).addBox(-0.8F, -1.0F, -0.2F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.5F, 4.0F, 0.0F, -0.0873F, -1.0036F, -0.1745F)); PartDefinition wand = right_arm.addOrReplaceChild("wand", CubeListBuilder.create() .texOffs(0, 49).addBox(-0.5F, -0.5F, -11.0F, 1.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)) .texOffs(48, 61).addBox(-0.5F, -0.5F, -13.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(30, 60).addBox(-1.5F, -1.5F, -10.0F, 3.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(34, 60).addBox(-2.5F, 0.0F, -13.5F, 5.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, 9.5F, 0.0F)); - wand.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(34, 60).addBox(-2.5F, 0.0F, -2.0F, 5.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 0.0F, -11.5F, 0.0F, 0.0F, 1.5708F)); + wand.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(34, 60).addBox(-2.5F, 0.0F, -2.0F, 5.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, -11.5F, 0.0F, 0.0F, 1.5708F)); PartDefinition wand_1 = wand.addOrReplaceChild("wand_1", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, -11.0F)); - wand_1.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(53, 42).addBox(-0.5F, -2.5F, -5.0F, 4.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(-1.5F, -2.0F, 0.0F, 1.5708F, 0.0F, 0.0F)); + wand_1.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(53, 42).addBox(-0.5F, -2.5F, -5.0F, 4.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.5F, -2.0F, 0.0F, 1.5708F, 0.0F, 0.0F)); PartDefinition wand_2 = wand.addOrReplaceChild("wand_2", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, -12.0F)); - wand_2.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(53, 42).addBox(-2.0F, -2.5F, -3.0F, 4.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 1.5708F, 0.0F, 1.5708F)); - PartDefinition head = body_all.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -7.5F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), - PartPose.offset(0.0F, -12.0F, 0.0F)); - head.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(32, 34).addBox(0.0F, -1.0F, -2.5F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(-4.0F, -4.0F, 3.0F, -0.6545F, -0.5236F, 0.48F)); - head.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(32, 34).addBox(-1.0F, -1.0F, -1.5F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(-4.0F, -4.0F, 3.0F, 0.0F, -1.1345F, 0.3491F)); - head.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 33).addBox(-3.0F, -3.0F, -4.0F, 6.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(5.0F, -3.5F, -2.0F, 0.0F, 0.5672F, -0.1309F)); - PartDefinition hat = head.addOrReplaceChild("hat", CubeListBuilder.create().texOffs(72, 49).addBox(-7.0F, 0.0F, -7.0F, 14.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -7.5F, 0.0F, -0.1745F, 0.0F, 0.0873F)); - hat.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(112, 14).addBox(-2.0F, -5.0F, -2.0F, 4.0F, 6.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -7.0F, 3.0F, -0.7854F, 0.0F, 0.0F)); - hat.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(104, 24).addBox(-3.0F, -2.3F, -2.0F, 6.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -5.5F, 0.0F, -0.3491F, 0.0F, 0.0F)); - hat.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(88, 35).addBox(-5.0F, -4.0F, -5.0F, 10.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 0.5F, 0.0F, -0.0873F, 0.0F, 0.0F)); - head.addOrReplaceChild("head_2", CubeListBuilder.create().texOffs(56, 60).addBox(-5.0F, -6.0F, -4.5F, 4.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), - PartPose.offset(0.0F, 0.0F, 0.0F)); + wand_2.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(53, 42).addBox(-2.0F, -2.5F, -3.0F, 4.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 1.5708F, 0.0F, 1.5708F)); + PartDefinition head = body_all.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -7.5F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -12.0F, 0.0F)); + head.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(32, 34).addBox(0.0F, -1.0F, -2.5F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, -4.0F, 3.0F, -0.6545F, -0.5236F, 0.48F)); + head.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(32, 34).addBox(-1.0F, -1.0F, -1.5F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, -4.0F, 3.0F, 0.0F, -1.1345F, 0.3491F)); + head.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 33).addBox(-3.0F, -3.0F, -4.0F, 6.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(5.0F, -3.5F, -2.0F, 0.0F, 0.5672F, -0.1309F)); + PartDefinition hat = head.addOrReplaceChild("hat", CubeListBuilder.create().texOffs(72, 49).addBox(-7.0F, 0.0F, -7.0F, 14.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -7.5F, 0.0F, -0.1745F, 0.0F, 0.0873F)); + hat.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(112, 14).addBox(-2.0F, -5.0F, -2.0F, 4.0F, 6.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -7.0F, 3.0F, -0.7854F, 0.0F, 0.0F)); + hat.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(104, 24).addBox(-3.0F, -2.3F, -2.0F, 6.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -5.5F, 0.0F, -0.3491F, 0.0F, 0.0F)); + hat.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(88, 35).addBox(-5.0F, -4.0F, -5.0F, 10.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.5F, 0.0F, -0.0873F, 0.0F, 0.0F)); + head.addOrReplaceChild("head_2", CubeListBuilder.create().texOffs(56, 60).addBox(-5.0F, -6.0F, -4.5F, 4.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); return LayerDefinition.create(meshDefinition, 128, 80); } diff --git a/src/main/java/cn/teampancake/theaurorian/client/model/SpectralArmorModel.java b/src/main/java/cn/teampancake/theaurorian/client/model/SpectralArmorModel.java new file mode 100644 index 00000000..70ea4a1b --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/client/model/SpectralArmorModel.java @@ -0,0 +1,64 @@ +package cn.teampancake.theaurorian.client.model; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.LivingEntity; + +public class SpectralArmorModel extends HumanoidModel { + + public SpectralArmorModel(ModelPart root) { + super(root); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition partDefinition = meshDefinition.getRoot(); + PartDefinition bipedHead = partDefinition.addOrReplaceChild("head", CubeListBuilder.create() + .texOffs(96, 112).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.52F)) + .texOffs(32, 0).addBox(-4.0F, -11.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.7F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + bipedHead.addOrReplaceChild("head_r1", CubeListBuilder.create().texOffs(57, 18).addBox(-2.0F, -9.25F, -1.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.004F)), PartPose.offsetAndRotation(4.0F, -5.0F, 0.0F, 0.0F, 0.0F, 0.0873F)); + bipedHead.addOrReplaceChild("head_r2", CubeListBuilder.create().texOffs(66, 18).addBox(3.0F, -5.5F, -1.0F, 2.0F, 6.0F, 2.0F, new CubeDeformation(0.002F)), PartPose.offsetAndRotation(4.0F, -5.0F, 0.0F, 0.0F, 0.0F, -0.7418F)); + bipedHead.addOrReplaceChild("head_r3", CubeListBuilder.create().texOffs(57, 18).mirror().addBox(-1.0F, -3.0F, -1.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-4.0F, -5.0F, 0.0F, 0.0F, 0.0F, -1.0472F)); + bipedHead.addOrReplaceChild("head_r4", CubeListBuilder.create().texOffs(66, 18).addBox(-1.0F, -5.0F, -1.0F, 2.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(4.0F, -5.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + partDefinition.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + partDefinition.addOrReplaceChild("body", CubeListBuilder.create() + .texOffs(104, 112).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(0, 44).addBox(-4.0F, 9.75F, -2.0F, 8.0F, 3.0F, 4.0F, new CubeDeformation(0.31F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition bipedRightArm = partDefinition.addOrReplaceChild("right_arm", CubeListBuilder.create() + .texOffs(112, 112).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(40, 16).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)) + .texOffs(0, 33).addBox(-4.0F, -2.5F, -2.5F, 4.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-5.0F, 2.0F, 0.0F)); + bipedRightArm.addOrReplaceChild("right_arm_r1", CubeListBuilder.create().texOffs(19, 35).addBox(0.0F, -1.5F, 0.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.25F, 6.5F, 0.0F, 0.0F, 0.1745F, 0.1309F)); + bipedRightArm.addOrReplaceChild("right_arm_r2", CubeListBuilder.create().texOffs(19, 35).addBox(0.0F, -1.5F, -3.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.25F, 6.5F, 0.0F, 0.0F, -0.1745F, 0.1309F)); + bipedRightArm.addOrReplaceChild("right_arm_r3", CubeListBuilder.create().texOffs(19, 35).addBox(0.0F, -1.5F, -3.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.25F, 3.5F, 0.0F, 0.0F, -0.1745F, 0.1309F)); + bipedRightArm.addOrReplaceChild("right_arm_r4", CubeListBuilder.create().texOffs(19, 35).addBox(0.0F, -1.5F, 0.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.25F, 3.5F, 0.0F, 0.0F, 0.1745F, 0.1309F)); + bipedRightArm.addOrReplaceChild("right_arm_r5", CubeListBuilder.create().texOffs(66, 18).addBox(-4.0F, -5.5F, -1.0F, 2.0F, 6.0F, 2.0F, new CubeDeformation(0.002F)), PartPose.offsetAndRotation(-3.5F, -0.5F, 0.0F, 0.0F, 0.0F, 0.4363F)); + bipedRightArm.addOrReplaceChild("right_arm_r6", CubeListBuilder.create().texOffs(57, 18).addBox(-1.0F, -4.0F, -1.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-3.5F, -0.5F, 0.0F, 0.0F, 0.0F, -0.4363F)); + PartDefinition bipedLeftArm = partDefinition.addOrReplaceChild("left_arm", CubeListBuilder.create() + .texOffs(0, 33).mirror().addBox(0.0F, -2.5F, -2.5F, 4.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(112, 112).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(40, 16).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(5.0F, 2.0F, 0.0F)); + bipedLeftArm.addOrReplaceChild("left_arm_r1", CubeListBuilder.create().texOffs(19, 35).mirror().addBox(-2.0F, -1.5F, -3.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.25F, 6.5F, 0.0F, 0.0F, 0.1745F, -0.1309F)); + bipedLeftArm.addOrReplaceChild("left_arm_r2", CubeListBuilder.create().texOffs(19, 35).mirror().addBox(-2.0F, -1.5F, -3.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.25F, 3.5F, 0.0F, 0.0F, 0.1745F, -0.1309F)); + bipedLeftArm.addOrReplaceChild("left_arm_r3", CubeListBuilder.create().texOffs(57, 18).mirror().addBox(-1.0F, -4.0F, -1.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(3.5F, -0.5F, 0.0F, 0.0F, 0.0F, 0.4363F)); + bipedLeftArm.addOrReplaceChild("left_arm_r4", CubeListBuilder.create().texOffs(66, 18).mirror().addBox(2.0F, -5.5F, -1.0F, 2.0F, 6.0F, 2.0F, new CubeDeformation(0.002F)).mirror(false), PartPose.offsetAndRotation(3.5F, -0.5F, 0.0F, 0.0F, 0.0F, -0.4363F)); + bipedLeftArm.addOrReplaceChild("left_arm_r5", CubeListBuilder.create().texOffs(19, 35).mirror().addBox(-2.0F, -1.5F, 0.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.25F, 6.5F, 0.0F, 0.0F, -0.1745F, -0.1309F)); + bipedLeftArm.addOrReplaceChild("left_arm_r6", CubeListBuilder.create().texOffs(19, 35).mirror().addBox(-2.0F, -1.5F, 0.0F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.25F, 3.5F, 0.0F, 0.0F, -0.1745F, -0.1309F)); + partDefinition.addOrReplaceChild("right_leg", CubeListBuilder.create() + .texOffs(112, 112).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)) + .texOffs(0, 52).addBox(-2.5F, 6.25F, -2.5F, 5.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)) + .texOffs(21, 52).addBox(-2.5F, 3.25F, -2.5F, 3.0F, 4.0F, 5.0F, new CubeDeformation(0.2F)), PartPose.offset(-1.9F, 12.0F, 0.0F)); + partDefinition.addOrReplaceChild("left_leg", CubeListBuilder.create() + .texOffs(21, 52).mirror().addBox(-0.5F, 3.25F, -2.5F, 3.0F, 4.0F, 5.0F, new CubeDeformation(0.2F)).mirror(false) + .texOffs(0, 52).mirror().addBox(-2.5F, 6.25F, -2.5F, 5.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(112, 112).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 16).mirror().addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.29F)).mirror(false), PartPose.offset(1.9F, 12.0F, 0.0F)); + return LayerDefinition.create(meshDefinition, 128, 128); + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/client/renderer/entity/RunestoneKeeperRenderer.java b/src/main/java/cn/teampancake/theaurorian/client/renderer/entity/RunestoneKeeperRenderer.java index df74275d..c4ebb2c3 100644 --- a/src/main/java/cn/teampancake/theaurorian/client/renderer/entity/RunestoneKeeperRenderer.java +++ b/src/main/java/cn/teampancake/theaurorian/client/renderer/entity/RunestoneKeeperRenderer.java @@ -6,6 +6,7 @@ import cn.teampancake.theaurorian.client.renderer.layers.ModModelLayers; import cn.teampancake.theaurorian.client.renderer.layers.RunestoneKeeperBookLayer; import cn.teampancake.theaurorian.common.entities.boss.RunestoneKeeper; +import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -21,6 +22,11 @@ public RunestoneKeeperRenderer(EntityRendererProvider.Context context) { new RunestoneBookModel<>(context.bakeLayer(ModModelLayers.RUNESTONE_BOOKS)))); } + @Override + protected void scale(RunestoneKeeper livingEntity, PoseStack matrixStack, float partialTickTime) { + matrixStack.scale(2.0F, 2.0F, 2.0F); + } + @Override public ResourceLocation getTextureLocation(RunestoneKeeper entity) { return AurorianMod.prefix("textures/entity/runestone_keeper.png"); diff --git a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/AurorianSheepFurLayer.java b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/AurorianSheepFurLayer.java index b7ffaa22..eab38489 100644 --- a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/AurorianSheepFurLayer.java +++ b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/AurorianSheepFurLayer.java @@ -15,9 +15,12 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.DyeColor; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.ParametersAreNonnullByDefault; +@OnlyIn(Dist.CLIENT) @ParametersAreNonnullByDefault public class AurorianSheepFurLayer extends RenderLayer> { diff --git a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModHumanoidArmorLayer.java b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModHumanoidArmorLayer.java new file mode 100644 index 00000000..3def93d1 --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModHumanoidArmorLayer.java @@ -0,0 +1,84 @@ +package cn.teampancake.theaurorian.client.renderer.layers; + +import cn.teampancake.theaurorian.AurorianMod; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class ModHumanoidArmorLayer, A extends HumanoidModel> extends RenderLayer { + + private final A armorModel; + + public ModHumanoidArmorLayer(RenderLayerParent renderer, A armorModel) { + super(renderer); + this.armorModel = armorModel; + } + + @Override + public void render(PoseStack poseStack, MultiBufferSource buffer, int packedLight, T livingEntity, float limbSwing, float limbSwingAmount, float partialTick, float ageInTicks, float netHeadYaw, float headPitch) { + this.renderArmorPiece(poseStack, buffer, livingEntity, EquipmentSlot.HEAD, packedLight, this.armorModel); + this.renderArmorPiece(poseStack, buffer, livingEntity, EquipmentSlot.CHEST, packedLight, this.armorModel); + this.renderArmorPiece(poseStack, buffer, livingEntity, EquipmentSlot.LEGS, packedLight, this.armorModel); + this.renderArmorPiece(poseStack, buffer, livingEntity, EquipmentSlot.FEET, packedLight, this.armorModel); + } + + private void renderArmorPiece(PoseStack poseStack, MultiBufferSource buffer, T livingEntity, EquipmentSlot slot, int packedLight, A model) { + ItemStack slotStack = livingEntity.getItemBySlot(slot); + Item slotItem = slotStack.getItem(); + if (slotItem instanceof ArmorItem armorItem) { + if (armorItem.getEquipmentSlot() == slot) { + this.getParentModel().copyPropertiesTo(model); + this.setPartVisibility(model, slot); + String texture = armorItem.getMaterial().getName() + "_armor.png"; + ResourceLocation armorResource = AurorianMod.prefix("textures/models/armor/" + texture); + this.render(poseStack, buffer, RenderType.armorCutoutNoCull(armorResource), packedLight, model); + if (slotStack.hasFoil()) { + this.render(poseStack, buffer, RenderType.armorEntityGlint(), packedLight, model); + } + } + } + } + + protected void setPartVisibility(A model, EquipmentSlot slot) { + model.setAllVisible(false); + switch (slot) { + case HEAD -> { + model.head.visible = true; + model.hat.visible = true; + } + case CHEST -> { + model.body.visible = true; + model.rightArm.visible = true; + model.leftArm.visible = true; + } + case LEGS -> { + model.body.visible = true; + model.rightLeg.visible = true; + model.leftLeg.visible = true; + } + case FEET -> { + model.rightLeg.visible = true; + model.leftLeg.visible = true; + } + } + } + + private void render(PoseStack poseStack, MultiBufferSource buffer, RenderType renderType, int packedLight, Model model) { + model.renderToBuffer(poseStack, buffer.getBuffer(renderType), packedLight, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModModelLayers.java b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModModelLayers.java index 68f6e3f7..428ac845 100644 --- a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModModelLayers.java +++ b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/ModModelLayers.java @@ -21,6 +21,10 @@ public class ModModelLayers { public static final ModelLayerLocation RUNESTONE_BOOKS = register("runestone_books"); public static final ModelLayerLocation SPIDER_MOTHER = register("spider_mother"); public static final ModelLayerLocation MOON_QUEEN = register("moon_queen"); + public static final ModelLayerLocation AURORIAN_STEEL_ARMOR = register("aurorian_steel_armor"); + public static final ModelLayerLocation CERULEAN_ARMOR = register("cerulean_armor"); + public static final ModelLayerLocation KNIGHT_ARMOR = register("knight_armor"); + public static final ModelLayerLocation SPECTRAL_ARMOR = register("spectral_armor"); private static ModelLayerLocation register(String path) { return register(path, "main"); diff --git a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/RunestoneKeeperBookLayer.java b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/RunestoneKeeperBookLayer.java index fd79f883..3d9294f2 100644 --- a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/RunestoneKeeperBookLayer.java +++ b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/RunestoneKeeperBookLayer.java @@ -12,10 +12,12 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.ParametersAreNonnullByDefault; -@ParametersAreNonnullByDefault +@OnlyIn(Dist.CLIENT) public class RunestoneKeeperBookLayer> extends RenderLayer { private static final ResourceLocation LAYER_LOCATION = AurorianMod.prefix("textures/entity/runestone_books.png"); diff --git a/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/package-info.java b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/package-info.java new file mode 100644 index 00000000..21833255 --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/client/renderer/layers/package-info.java @@ -0,0 +1,9 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +package cn.teampancake.theaurorian.client.renderer.layers; + +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/common/entities/boss/RunestoneKeeper.java b/src/main/java/cn/teampancake/theaurorian/common/entities/boss/RunestoneKeeper.java index 2c3d648f..56cac216 100644 --- a/src/main/java/cn/teampancake/theaurorian/common/entities/boss/RunestoneKeeper.java +++ b/src/main/java/cn/teampancake/theaurorian/common/entities/boss/RunestoneKeeper.java @@ -128,6 +128,15 @@ public void stopSeenByPlayer(ServerPlayer player) { this.bossEvent.removePlayer(player); } + @Override + public void handleEntityEvent(byte id) { + if (id == 4) { + this.attackAnimationState1.start(this.tickCount); + } else { + super.handleEntityEvent(id); + } + } + @Override public void performRangedAttack(LivingEntity target, float velocity) { Arrow arrow = new Arrow(this.level(), this); @@ -144,6 +153,7 @@ public void performRangedAttack(LivingEntity target, float velocity) { @Override public boolean doHurtTarget(Entity entity) { + this.level().broadcastEntityEvent(this, (byte)4); if (super.doHurtTarget(entity)) { if (entity instanceof LivingEntity livingEntity) { livingEntity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 200)); diff --git a/src/main/java/cn/teampancake/theaurorian/common/items/ModArmorMaterials.java b/src/main/java/cn/teampancake/theaurorian/common/items/ModArmorMaterials.java index 94793e72..2a8f0f26 100644 --- a/src/main/java/cn/teampancake/theaurorian/common/items/ModArmorMaterials.java +++ b/src/main/java/cn/teampancake/theaurorian/common/items/ModArmorMaterials.java @@ -112,7 +112,7 @@ public Ingredient getRepairIngredient() { @Override public String getName() { - return AurorianMod.MOD_ID + ":" + this.name; + return this.name; } @Override diff --git a/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderENUS.java b/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderENUS.java index 27a3a045..54207b7e 100644 --- a/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderENUS.java +++ b/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderENUS.java @@ -143,6 +143,7 @@ protected void addTranslations() { this.add(ModItems.AURORIAN_STONE_SWORD.get(),"Aurorian Stone Sword"); this.add(ModItems.AURORIANITE_INGOT.get(),"Aurorianite Ingot"); this.add(ModItems.AURORIANITE_SCRAP.get(),"Aurorianite Scrap"); + this.add(ModItems.AURORIANITE_SWORD.get(), "Aurorianite Sword"); this.add(ModItems.AURORIANITE_AXE.get(),"Aurorianite Axe"); this.add(ModItems.AURORIANITE_PICKAXE.get(),"Aurorianite Pickaxe"); this.add(ModItems.BEPSI.get(),"Bepsi"); diff --git a/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderZHCN.java b/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderZHCN.java index 15fe823e..05642304 100644 --- a/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderZHCN.java +++ b/src/main/java/cn/teampancake/theaurorian/data/provider/lang/ModLanguageProviderZHCN.java @@ -144,6 +144,7 @@ protected void addTranslations() { this.add(ModItems.AURORIAN_STONE_SWORD.get(), "极光石剑"); this.add(ModItems.AURORIANITE_INGOT.get(), "极光锭"); this.add(ModItems.AURORIANITE_SCRAP.get(), "极光碎片"); + this.add(ModItems.AURORIANITE_SWORD.get(), "极光剑"); this.add(ModItems.AURORIANITE_AXE.get(), "极光斧"); this.add(ModItems.AURORIANITE_PICKAXE.get(), "极光镐"); this.add(ModItems.BEPSI.get(), "旦事可乐"); @@ -171,7 +172,7 @@ protected void addTranslations() { this.add(ModItems.DISTURBED_HOLLOW_SPAWN_EGG.get(), "空谷之扰刷怪蛋"); this.add(ModItems.DUNGEON_LOCATOR.get(), "地牢定位器"); this.add(ModItems.KEEPERS_BOW.get(), "守卫之弓"); - this.add(ModItems.KNIGHT_HELMET.get(), "守卫之弓"); + this.add(ModItems.KNIGHT_HELMET.get(), "骑士头盔"); this.add(ModItems.KNIGHT_CHESTPLATE.get(), "骑士胸甲"); this.add(ModItems.KNIGHT_LEGGINGS.get(), "骑士护腿"); this.add(ModItems.KNIGHT_BOOTS.get(), "骑士靴子"); diff --git a/src/main/java/cn/teampancake/theaurorian/mixin/MixinHumanoidArmorLayer.java b/src/main/java/cn/teampancake/theaurorian/mixin/MixinHumanoidArmorLayer.java new file mode 100644 index 00000000..d24afc2a --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/mixin/MixinHumanoidArmorLayer.java @@ -0,0 +1,39 @@ +package cn.teampancake.theaurorian.mixin; + +import cn.teampancake.theaurorian.AurorianMod; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(HumanoidArmorLayer.class) +public abstract class MixinHumanoidArmorLayer, A extends HumanoidModel> extends RenderLayer { + + public MixinHumanoidArmorLayer(RenderLayerParent renderer) { + super(renderer); + } + + @Inject(method = "renderArmorPiece", at = @At(value = "HEAD"), cancellable = true) + private void renderArmorPiece(PoseStack poseStack, MultiBufferSource buffer, T livingEntity, EquipmentSlot slot, int packedLight, A model, CallbackInfo ci) { + Item slotItem = livingEntity.getItemBySlot(slot).getItem(); + if (slotItem instanceof ArmorItem armorItem) { + ResourceLocation key = ForgeRegistries.ITEMS.getKey(armorItem); + if (key != null && key.getNamespace().equals(AurorianMod.MOD_ID)) { + ci.cancel(); + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/mixin/MixinPlayerRenderer.java b/src/main/java/cn/teampancake/theaurorian/mixin/MixinPlayerRenderer.java new file mode 100644 index 00000000..a30fd9b5 --- /dev/null +++ b/src/main/java/cn/teampancake/theaurorian/mixin/MixinPlayerRenderer.java @@ -0,0 +1,34 @@ +package cn.teampancake.theaurorian.mixin; + +import cn.teampancake.theaurorian.client.model.AurorianSteelArmorModel; +import cn.teampancake.theaurorian.client.model.CeruleanArmorModel; +import cn.teampancake.theaurorian.client.model.KnightArmorModel; +import cn.teampancake.theaurorian.client.model.SpectralArmorModel; +import cn.teampancake.theaurorian.client.renderer.layers.ModHumanoidArmorLayer; +import cn.teampancake.theaurorian.client.renderer.layers.ModModelLayers; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.player.PlayerRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerRenderer.class) +public abstract class MixinPlayerRenderer extends LivingEntityRenderer> { + + public MixinPlayerRenderer(EntityRendererProvider.Context context, PlayerModel model, float shadowRadius) { + super(context, model, shadowRadius); + } + + @Inject(method = "", at = @At("TAIL")) + public void init(EntityRendererProvider.Context context, boolean useSlimModel, CallbackInfo ci) { + this.addLayer(new ModHumanoidArmorLayer<>(this, new AurorianSteelArmorModel<>(context.bakeLayer(ModModelLayers.AURORIAN_STEEL_ARMOR)))); + this.addLayer(new ModHumanoidArmorLayer<>(this, new CeruleanArmorModel<>(context.bakeLayer(ModModelLayers.CERULEAN_ARMOR)))); + this.addLayer(new ModHumanoidArmorLayer<>(this, new KnightArmorModel<>(context.bakeLayer(ModModelLayers.KNIGHT_ARMOR)))); + this.addLayer(new ModHumanoidArmorLayer<>(this, new SpectralArmorModel<>(context.bakeLayer(ModModelLayers.SPECTRAL_ARMOR)))); + } + +} \ No newline at end of file diff --git a/src/main/java/cn/teampancake/theaurorian/registry/ModEntityTypes.java b/src/main/java/cn/teampancake/theaurorian/registry/ModEntityTypes.java index 1a781ed1..85d17319 100644 --- a/src/main/java/cn/teampancake/theaurorian/registry/ModEntityTypes.java +++ b/src/main/java/cn/teampancake/theaurorian/registry/ModEntityTypes.java @@ -1,16 +1,20 @@ package cn.teampancake.theaurorian.registry; import cn.teampancake.theaurorian.AurorianMod; -import cn.teampancake.theaurorian.client.model.RunestoneBookModel; -import cn.teampancake.theaurorian.client.model.RunestoneKeeperModel; +import cn.teampancake.theaurorian.client.model.*; import cn.teampancake.theaurorian.client.renderer.entity.*; import cn.teampancake.theaurorian.client.renderer.layers.ModModelLayers; -import cn.teampancake.theaurorian.common.entities.animal.*; +import cn.teampancake.theaurorian.common.entities.animal.AurorianPig; +import cn.teampancake.theaurorian.common.entities.animal.AurorianRabbit; +import cn.teampancake.theaurorian.common.entities.animal.AurorianSheep; import cn.teampancake.theaurorian.common.entities.boss.MoonQueen; import cn.teampancake.theaurorian.common.entities.boss.RunestoneKeeper; import cn.teampancake.theaurorian.common.entities.boss.SpiderMother; import cn.teampancake.theaurorian.common.entities.monster.*; -import cn.teampancake.theaurorian.common.entities.projectile.*; +import cn.teampancake.theaurorian.common.entities.projectile.CeruleanArrowEntity; +import cn.teampancake.theaurorian.common.entities.projectile.CrystalArrowEntity; +import cn.teampancake.theaurorian.common.entities.projectile.StickySpikerEntity; +import cn.teampancake.theaurorian.common.entities.projectile.WebbingEntity; import net.minecraft.client.model.*; import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.LayerDefinition; @@ -141,6 +145,10 @@ public static void registerLayers(EntityRenderersEvent.RegisterLayerDefinitions event.registerLayerDefinition(ModModelLayers.SPIDER_MOTHER, SpiderModel::createSpiderBodyLayer); event.registerLayerDefinition(ModModelLayers.MOON_QUEEN, () -> LayerDefinition.create( PlayerModel.createMesh(CubeDeformation.NONE, false), 64, 64)); + event.registerLayerDefinition(ModModelLayers.AURORIAN_STEEL_ARMOR, AurorianSteelArmorModel::createBodyLayer); + event.registerLayerDefinition(ModModelLayers.CERULEAN_ARMOR, CeruleanArmorModel::createBodyLayer); + event.registerLayerDefinition(ModModelLayers.KNIGHT_ARMOR, KnightArmorModel::createBodyLayer); + event.registerLayerDefinition(ModModelLayers.SPECTRAL_ARMOR, SpectralArmorModel::createBodyLayer); } @SubscribeEvent diff --git a/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_layer.png b/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_layer.png deleted file mode 100644 index e06b4961..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_layer.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_old_1.png b/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_old_1.png deleted file mode 100644 index e17580dd..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_old_1.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_old_2.png b/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_old_2.png deleted file mode 100644 index cefe2f3a..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/entity/old/runestone_keeper_old_2.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_armor.png b/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_armor.png new file mode 100644 index 00000000..198d2fe6 Binary files /dev/null and b/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_armor.png differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_layer_1.png b/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_layer_1.png deleted file mode 100644 index 1fe1ac1b..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_layer_1.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_layer_2.png b/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_layer_2.png deleted file mode 100644 index 795365a5..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/aurorian_steel_layer_2.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_armor.png b/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_armor.png new file mode 100644 index 00000000..145054cf Binary files /dev/null and b/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_armor.png differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_layer_1.png b/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_layer_1.png deleted file mode 100644 index 2546df00..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_layer_1.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_layer_2.png b/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_layer_2.png deleted file mode 100644 index 79f5ec9e..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/cerulean_layer_2.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/knight_armor.png b/src/main/resources/assets/theaurorian/textures/models/armor/knight_armor.png new file mode 100644 index 00000000..a415ae7f Binary files /dev/null and b/src/main/resources/assets/theaurorian/textures/models/armor/knight_armor.png differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/knight_layer_1.png b/src/main/resources/assets/theaurorian/textures/models/armor/knight_layer_1.png deleted file mode 100644 index b83d52ac..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/knight_layer_1.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/knight_layer_2.png b/src/main/resources/assets/theaurorian/textures/models/armor/knight_layer_2.png deleted file mode 100644 index a1d3045e..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/knight_layer_2.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/spectral_armor.png b/src/main/resources/assets/theaurorian/textures/models/armor/spectral_armor.png new file mode 100644 index 00000000..5ccec066 Binary files /dev/null and b/src/main/resources/assets/theaurorian/textures/models/armor/spectral_armor.png differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/spectral_layer_1.png b/src/main/resources/assets/theaurorian/textures/models/armor/spectral_layer_1.png deleted file mode 100644 index e56ccf41..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/spectral_layer_1.png and /dev/null differ diff --git a/src/main/resources/assets/theaurorian/textures/models/armor/spectral_layer_2.png b/src/main/resources/assets/theaurorian/textures/models/armor/spectral_layer_2.png deleted file mode 100644 index 988dacbc..00000000 Binary files a/src/main/resources/assets/theaurorian/textures/models/armor/spectral_layer_2.png and /dev/null differ diff --git a/src/main/resources/theaurorian.mixins.json b/src/main/resources/theaurorian.mixins.json index 6c25c3dc..4aa4fcc7 100644 --- a/src/main/resources/theaurorian.mixins.json +++ b/src/main/resources/theaurorian.mixins.json @@ -13,7 +13,9 @@ "MixinSwordItem" ], "client": [ - "MixinLivingEntityRenderer" + "MixinHumanoidArmorLayer", + "MixinLivingEntityRenderer", + "MixinPlayerRenderer" ], "injectors": { "defaultRequire": 1