package net.voltexstudios.entity.client; import net.minecraft.client.model.*; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.entity.model.EntityModelLayer; import net.minecraft.client.render.entity.model.SinglePartEntityModel; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.voltexstudios.VoltexDesertUpdate; import net.voltexstudios.entity.custom.VultureEntity; public class VultureModel extends SinglePartEntityModel { public static final EntityModelLayer VULTURE = new EntityModelLayer(Identifier.of(VoltexDesertUpdate.MOD_ID, "vulture"), "main"); private final ModelPart vulture; private final ModelPart head; private final ModelPart body; public VultureModel(ModelPart root) { this.vulture = root.getChild("mambo"); this.body = vulture.getChild("body"); this.head = vulture.getChild("head"); } public static TexturedModelData getTexturedModelData() { ModelData modelData = new ModelData(); ModelPartData modelPartData = modelData.getRoot(); ModelPartData mambo = modelPartData.addChild("mambo", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, 15.0F, 1.0F)); ModelPartData head = mambo.addChild("head", ModelPartBuilder.create().uv(26, 8).cuboid(-2.0F, -1.0F, -4.0F, 2.0F, 2.0F, 5.0F, new Dilation(0.0F)) .uv(38, 38).cuboid(-2.0F, -3.0F, -4.0F, 2.0F, 2.0F, 2.0F, new Dilation(0.0F)) .uv(0, 35).cuboid(-2.5F, -6.0F, -5.0F, 3.0F, 3.0F, 3.0F, new Dilation(0.0F)) .uv(12, 38).cuboid(-2.0F, -6.0F, -8.0F, 2.0F, 3.0F, 3.0F, new Dilation(0.0F)) .uv(26, 15).cuboid(-2.0F, -3.0F, -8.0F, 2.0F, 1.0F, 0.0F, new Dilation(0.0F)), ModelTransform.pivot(1.0F, -4.0F, -3.0F)); ModelPartData body = mambo.addChild("body", ModelPartBuilder.create().uv(0, 0).cuboid(-3.0F, -5.0F, -3.0F, 6.0F, 10.0F, 7.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, 1.0F, 0.0F, 0.7854F, 0.0F, 0.0F)); ModelPartData tail = body.addChild("tail", ModelPartBuilder.create().uv(26, 0).cuboid(-3.0F, 0.0F, -4.0F, 6.0F, 4.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 5.0F, 4.0F)); ModelPartData leftWing = mambo.addChild("leftWing", ModelPartBuilder.create().uv(0, 17).cuboid(-0.5F, -1.5F, -1.0F, 1.0F, 7.0F, 11.0F, new Dilation(0.0F)), ModelTransform.pivot(3.5F, -1.5F, -3.0F)); ModelPartData rightWing = mambo.addChild("rightWing", ModelPartBuilder.create().uv(24, 17).cuboid(-0.5F, -1.5F, -1.0F, 1.0F, 7.0F, 11.0F, new Dilation(0.0F)), ModelTransform.pivot(-3.5F, -1.5F, -3.0F)); ModelPartData leftLeg = mambo.addChild("leftLeg", ModelPartBuilder.create().uv(22, 38).cuboid(-1.0F, -0.1667F, -1.0F, 2.0F, 5.0F, 2.0F, new Dilation(0.0F)) .uv(26, 16).cuboid(-0.5F, 4.8333F, 1.0F, 1.0F, 0.0F, 1.0F, new Dilation(0.0F)) .uv(12, 35).cuboid(-2.0F, 4.8333F, -3.0F, 4.0F, 0.0F, 3.0F, new Dilation(0.0F)), ModelTransform.pivot(2.0F, 4.1667F, -1.0F)); ModelPartData rightLeg = mambo.addChild("rightLeg", ModelPartBuilder.create().uv(30, 38).cuboid(-1.0F, -0.1667F, -1.0F, 2.0F, 5.0F, 2.0F, new Dilation(0.0F)) .uv(30, 15).cuboid(-0.5F, 4.8333F, 1.0F, 1.0F, 0.0F, 1.0F, new Dilation(0.0F)) .uv(26, 35).cuboid(-2.0F, 4.8333F, -3.0F, 4.0F, 0.0F, 3.0F, new Dilation(0.0F)), ModelTransform.pivot(-2.0F, 4.1667F, -1.0F)); return TexturedModelData.of(modelData, 64, 64); } @Override public void setAngles(VultureEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { this.getPart().traverse().forEach(ModelPart::resetTransform); this.setHeadAngles(netHeadYaw, headPitch); //TODO add Animation //this.animateMovement(VultureAnimations.ANIM_VULTURE_WALK, limbSwing, limbSwingAmount, 2f, 2.5f); //this.updateAnimation(entity.idleAnimationState, VultureAnimations.ANIM_MANTIS_IDLE, ageInTicks, 1f); } private void setHeadAngles(float headYaw, float headPitch) { headYaw = MathHelper.clamp(headYaw, -30.0F, 30.0F); headPitch = MathHelper.clamp(headPitch, -25.0F, 45.0F); this.head.yaw = headYaw * 0.017453292F; this.head.pitch = headPitch * 0.017453292F; } @Override public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, int color) { vulture.render(matrices, vertexConsumer, light, overlay, color); } @Override public ModelPart getPart() { return vulture; } }