84 lines
4.6 KiB
Java
84 lines
4.6 KiB
Java
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<T extends VultureEntity> extends SinglePartEntityModel<T> {
|
|
|
|
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;
|
|
}
|
|
}
|