Advertisement
CreativeMasterBonin

BaseEngineModel

Mar 21st, 2025
340
0
2 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.86 KB | None | 0 0
  1. package net.bcm.cmatd.render;
  2.  
  3. import com.mojang.blaze3d.vertex.PoseStack;
  4. import com.mojang.blaze3d.vertex.VertexConsumer;
  5. import net.bcm.cmatd.blockentity.DecorativeBaseDynamoEngineBE;
  6. import net.minecraft.client.model.Model;
  7. import net.minecraft.client.model.geom.ModelLayerLocation;
  8. import net.minecraft.client.model.geom.ModelPart;
  9. import net.minecraft.client.model.geom.PartPose;
  10. import net.minecraft.client.model.geom.builders.*;
  11. import net.minecraft.client.renderer.RenderType;
  12. import net.minecraft.resources.ResourceLocation;
  13. import net.minecraft.util.Mth;
  14.  
  15. public class BaseEngineModel extends Model {
  16.     public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(ResourceLocation.parse("cmatd:textures/entity/base_engine.png"), "main");
  17.  
  18.     public final ModelPart engine;
  19.     public final ModelPart ring;
  20.     public final ModelPart bellows;
  21.  
  22.     public BaseEngineModel(ModelPart root) {
  23.         super(RenderType::entityCutout);
  24.         this.engine = root.getChild("engine");
  25.         this.ring = engine.getChild("ring");
  26.         this.bellows = engine.getChild("bellows");
  27.     }
  28.  
  29.     public static LayerDefinition createBodyLayer() {
  30.         MeshDefinition meshdefinition = new MeshDefinition();
  31.         PartDefinition partdefinition = meshdefinition.getRoot();
  32.  
  33.         PartDefinition engine = partdefinition.addOrReplaceChild("engine", CubeListBuilder.create().texOffs(66, 0).addBox(-3.0F, -16.0F, -3.0F, 6.0F, 15.0F, 6.0F, new CubeDeformation(0.0F))
  34.                 .texOffs(0, 0).addBox(-8.0F, -6.0F, -8.0F, 16.0F, 6.0F, 16.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F));
  35.  
  36.         PartDefinition ring = engine.addOrReplaceChild("ring", CubeListBuilder.create().texOffs(0, 44).addBox(-8.0F, -10.0F, -8.0F, 16.0F, 4.0F, 16.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F));
  37.  
  38.         PartDefinition bellows = engine.addOrReplaceChild("bellows", CubeListBuilder.create().texOffs(0, 24).addBox(-7.0F, -9.0F, -7.0F, 14.0F, 3.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F));
  39.  
  40.         return LayerDefinition.create(meshdefinition, 128, 64);
  41.     }
  42.  
  43.     float preRingY = 0;
  44.     float postRingY = 0;
  45.  
  46.     public void setupAnim(DecorativeBaseDynamoEngineBE be){
  47.         preRingY = (float)Math.clamp(Math.cos(be.ticks / 3.0f) * 8.14150f,-3.1001D,2.50001D);
  48.         postRingY = preRingY - 2.50001f;
  49.         this.ring.y = postRingY;
  50.         this.bellows.yScale = 2f;
  51.         this.bellows.y = ring.y + 12f;
  52.     }
  53.  
  54.     public void setupAnimSlowDown(DecorativeBaseDynamoEngineBE be){
  55.         if (this.ring.y > 0){
  56.             this.ring.y = Mth.lerp(be.ticks,this.ring.y,0);
  57.         }
  58.     }
  59.  
  60.     @Override
  61.     public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int i, int i1, int i2) {
  62.         this.engine.render(poseStack,vertexConsumer,i,i1,i2);
  63.     }
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement