SharePad.io
About
Run
Collaborate
Share
Python
Python 2
C
C++
C#
Java
JavaScript
package net.mca.client.model; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.Dilation; import net.minecraft.client.model.ModelData; import net.minecraft.client.model.ModelPart; import net.minecraft.client.model.ModelPartBuilder; import net.minecraft.client.model.ModelPartData; import net.minecraft.client.model.ModelTransform; import net.minecraft.client.render.entity.model.EntityModelPartNames; import net.minecraft.client.render.entity.model.ModelWithHat; import net.minecraft.client.render.entity.model.ModelWithHead; import net.minecraft.client.render.entity.model.SinglePartEntityModel; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.MerchantEntity; import net.minecraft.util.math.MathHelper; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.passive.VillagerEntity; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumers; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; import net.minecraft.client.render.VertexConsumerProvider; @Environment(EnvType.CLIENT) public class FemaleVillagerOverrideModel<T extends Entity> extends SinglePartEntityModel<T> implements ModelWithHead, ModelWithHat { private final ModelPart root; private final ModelPart head; private final ModelPart hat; private final ModelPart hatRim; private final ModelPart rightLeg; private final ModelPart leftLeg; protected final ModelPart nose; private final ModelPart skirtlayer1; private final ModelPart skirtlayer2; private final ModelPart skirtlayer3; private final ModelPart skirtlayer4; private final ModelPart skirtlayer5; public FemaleVillagerOverrideModel(ModelPart root) { this.root = root; this.head = root.getChild(EntityModelPartNames.HEAD); this.hat = this.head.getChild(EntityModelPartNames.HAT); this.hatRim = this.hat.getChild(EntityModelPartNames.HAT_RIM); this.nose = this.head.getChild(EntityModelPartNames.NOSE); this.rightLeg = root.getChild(EntityModelPartNames.RIGHT_LEG); this.leftLeg = root.getChild(EntityModelPartNames.LEFT_LEG); this.skirtlayer1 = root.getChild("skirtlayer1"); this.skirtlayer2 = root.getChild("skirtlayer2"); this.skirtlayer3 = root.getChild("skirtlayer3"); this.skirtlayer4 = root.getChild("skirtlayer4"); this.skirtlayer5 = root.getChild("skirtlayer5"); } public static ModelData getModelData() { ModelData modelData = new ModelData(); ModelPartData modelPartData = modelData.getRoot(); float f = 0.5F; ModelPartData modelPartData2 = modelPartData.addChild( EntityModelPartNames.HEAD, ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, -10.0F, -4.0F, 8.0F, 10.0F, 8.0F), ModelTransform.NONE ); ModelPartData modelPartData3 = modelPartData2.addChild( EntityModelPartNames.HAT, ModelPartBuilder.create().uv(32, 0).cuboid(-4.0F, -10.0F, -4.0F, 8.0F, 10.0F, 8.0F, new Dilation(0.51F)), ModelTransform.NONE ); modelPartData3.addChild( EntityModelPartNames.HAT_RIM, ModelPartBuilder.create().uv(30, 47).cuboid(-8.0F, -8.0F, -6.0F, 16.0F, 16.0F, 1.0F), ModelTransform.rotation((float) (-Math.PI / 2), 0.0F, 0.0F) ); modelPartData2.addChild( EntityModelPartNames.NOSE, ModelPartBuilder.create().uv(24, 0).cuboid(-1.0F, -1.0F, -6.0F, 2.0F, 4.0F, 2.0F), ModelTransform.pivot(0.0F, -2.0F, 0.0F) ); ModelPartData modelPartData4 = modelPartData.addChild( EntityModelPartNames.BODY, ModelPartBuilder.create().uv(16, 20).cuboid(-4.0F, 0.0F, -3.0F, 8.0F, 12.0F, 6.0F), ModelTransform.NONE ); modelPartData4.addChild( EntityModelPartNames.JACKET, ModelPartBuilder.create().uv(0, 38).cuboid(-4.0F, 0.0F, -3.0F, 8.0F, 20.0F, 6.0F, new Dilation(0.5F)), ModelTransform.NONE ); modelPartData.addChild( EntityModelPartNames.ARMS, ModelPartBuilder.create() .uv(44, 22) .cuboid(-8.0F, -2.0F, -2.0F, 4.0F, 8.0F, 4.0F) .uv(44, 22) .cuboid(4.0F, -2.0F, -2.0F, 4.0F, 8.0F, 4.0F, true) .uv(40, 38) .cuboid(-4.0F, 2.0F, -2.0F, 8.0F, 4.0F, 4.0F), ModelTransform.of(0.0F, 3.0F, -1.0F, -0.75F, 0.0F, 0.0F) ); modelPartData.addChild( EntityModelPartNames.RIGHT_LEG, ModelPartBuilder.create().uv(0, 22).cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F), ModelTransform.pivot(-2.0F, 12.0F, 0.0F) ); modelPartData.addChild( EntityModelPartNames.LEFT_LEG, ModelPartBuilder.create().uv(0, 22).mirrored().cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F), ModelTransform.pivot(2.0F, 12.0F, 0.0F) ); modelPartData.addChild( "skirtlayer1", ModelPartBuilder.create() .uv(21, 26) .cuboid(-6.0F, -14.0F, -5.0F, 12.0F, 0.0F, 10.0F) .uv(10, 26) .cuboid(-6.0F, -12.0F, -5.0F, 12.0F, 0.0F, 10.0F) .uv(6, 16) .cuboid(-6.0F, -14.0F, -5.0F, 0.0F, 2.0F, 10.0F, false) .uv(20, 16) .cuboid(6.0F, -14.0F, -5.0F, 0.0F, 2.0F, 10.0F) .uv(20, 26) .cuboid(-6.0F, -14.0F, 5.0F, 12.0F, 2.0F, 0.0F) .uv(20, 29) .cuboid(-6.0F, -14.0F, -5.0F, 12.0F, 2.0F, 0.0F), ModelTransform.pivot(0.0F, 22.0F, 0.0F) ); modelPartData.addChild( "skirtlayer2", ModelPartBuilder.create() .uv(18, 26) .cuboid(-7.0F, -14.0F, -6.0F, 14.0F, 0.0F, 12.0F) .uv(4, 26) .cuboid(-7.0F, -12.0F, -6.0F, 0.0F, 2.0F, 12.0F) .uv(16, 21) .cuboid(-7.0F, -14.0F, -6.0F, 0.0F, 2.0F, 12.0F) .uv(16, 20) .cuboid(7.0F, -14.0F, -6.0F, 0.0F, 2.0F, 12.0F) .uv(19, 30) .cuboid(-7.0F, -14.0F, -6.0F, 14.0F, 2.0F, 0.0F) .uv(16, 26) .cuboid(-7.0F, -14.0F, 6.0F, 14.0F, 2.0F, 0.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F) ); modelPartData.addChild( "skirtlayer3", ModelPartBuilder.create() .uv(8, 24) .cuboid(-8.0F, -12.0F, -7.0F, 16.0F, 0.0F, 14.0F) .uv(-8, 24) .cuboid(-8.0F, -10.0F, -7.0F, 16.0F, 0.0F, 14.0F) .uv(16, 14) .cuboid(-8.0F, -12.0F, -7.0F, 0.0F, 2.0F, 14.0F) .uv(16, 17) .cuboid(8.0F, -12.0F, -7.0F, 0.0F, 2.0F, 14.0F) .uv(18, 32) .cuboid(-8.0F, -12.0F, -7.0F, 16.0F, 2.0F, 0.0F) .uv(12, 31) .cuboid(-8.0F, -12.0F, 7.0F, 16.0F, 2.0F, 0.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F) ); modelPartData.addChild( "skirtlayer4", ModelPartBuilder.create() .uv(5, 22) .cuboid(-9.0F, -10.0F, -8.0F, 18.0F, 0.0F, 16.0F) .uv(-12, 21) .cuboid(-9.0F, -8.0F, -8.0F, 18.0F, 0.0F, 16.0F) .uv(16, 18) .cuboid(-9.0F, -10.0F, -8.0F, 0.0F, 2.0F, 16.0F) .uv(16, 18) .cuboid(9.0F, -10.0F, -8.0F, 0.0F, 2.0F, 16.0F) .uv(17, 34) .cuboid(-9.0F, -10.0F, -8.0F, 18.0F, 2.0F, 0.0F) .uv(8, 34) .cuboid(-9.0F, -10.0F, 8.0F, 18.0F, 2.0F, 0.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F) ); modelPartData.addChild( "skirtlayer5", ModelPartBuilder.create() .uv(0, 20) .cuboid(-10.0F, -8.0F, -9.0F, 20.0F, 0.0F, 18.0F) .uv(0, 20) .cuboid(-10.0F, -6.0F, -9.0F, 20.0F, 0.0F, 18.0F) .uv(16, 17) .cuboid(-10.0F, -8.0F, -9.0F, 0.0F, 2.0F, 18.0F) .uv(16, 17) .cuboid(10.0F, -8.0F, -9.0F, 0.0F, 2.0F, 18.0F) .uv(16, 35) .cuboid(-10.0F, -8.0F, -9.0F, 20.0F, 2.0F, 0.0F) .uv(24, 35) .cuboid(-10.0F, -8.0F, 9.0F, 20.0F, 2.0F, 0.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F)); return modelData; } @Override public ModelPart getPart() { return this.root; } @Override public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { boolean bl = false; if (entity instanceof MerchantEntity) { bl = ((MerchantEntity)entity).getHeadRollingTimeLeft() > 0; } this.head.yaw = headYaw * (float) (Math.PI / 180.0); this.head.pitch = headPitch * (float) (Math.PI / 180.0); if (bl) { this.head.roll = 0.3F * MathHelper.sin(0.45F * animationProgress); this.head.pitch = 0.4F; } else { this.head.roll = 0.0F; } this.rightLeg.pitch = MathHelper.cos(limbAngle * 0.6662F) * 1.4F * limbDistance * 0.5F; this.leftLeg.pitch = MathHelper.cos(limbAngle * 0.6662F + (float) Math.PI) * 1.4F * limbDistance * 0.5F; this.rightLeg.yaw = 0.0F; this.leftLeg.yaw = 0.0F; } @Override public ModelPart getHead() { return this.head; } @Override public void setHatVisible(boolean visible) { this.head.visible = visible; this.hat.visible = visible; this.hatRim.visible = visible; } }
Input
Output
Click 'Run' to see program output.
Share this URL
×
Share this live link
×