Advertisement
CreativeMasterBonin

DecorativeDynamoEngineRenderer

Mar 21st, 2025
253
0
6 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.25 KB | None | 0 0
  1. package net.bcm.cmatd.render;
  2.  
  3. import com.mojang.blaze3d.vertex.PoseStack;
  4. import net.bcm.cmatd.blockentity.DecorativeBaseDynamoEngineBE;
  5. import net.minecraft.client.renderer.MultiBufferSource;
  6. import net.minecraft.client.renderer.RenderType;
  7. import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
  8. import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
  9. import net.minecraft.util.Mth;
  10. import net.minecraft.world.level.block.state.properties.BlockStateProperties;
  11. import net.minecraft.world.phys.AABB;
  12. import net.minecraft.world.phys.Vec3;
  13.  
  14. public class DecorativeBaseDynamoEngineBERenderer implements BlockEntityRenderer<DecorativeBaseDynamoEngineBE> {
  15.     private BaseEngineModel model;
  16.  
  17.     public DecorativeBaseDynamoEngineBERenderer(BlockEntityRendererProvider.Context berp){
  18.         model = new BaseEngineModel(berp.bakeLayer(BaseEngineModel.LAYER_LOCATION));
  19.     }
  20.  
  21.     @Override
  22.     public boolean shouldRenderOffScreen(DecorativeBaseDynamoEngineBE blockEntity) {
  23.         return true;
  24.     }
  25.  
  26.     @Override
  27.     public int getViewDistance() {
  28.         return 64;
  29.     }
  30.  
  31.     @Override
  32.     public boolean shouldRender(DecorativeBaseDynamoEngineBE be, Vec3 vec3) {
  33.         return Vec3.atCenterOf(be.getBlockPos()).multiply(2.0, 2.0, 2.0)
  34.                 .closerThan(vec3.multiply(2.0, 2.0, 2.0), (double)this.getViewDistance());
  35.     }
  36.  
  37.     @Override
  38.     public void render(DecorativeBaseDynamoEngineBE be, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) {
  39.         poseStack.pushPose();
  40.         poseStack.translate(0.5, -0.5, 0.5);
  41.         switch(be.getBlockState().getValue(BlockStateProperties.FACING)){
  42.             case NORTH -> {
  43.                 poseStack.mulPose(be.getBlockState().getValue(BlockStateProperties.FACING).getOpposite().getRotation());
  44.                 poseStack.translate(0.0,-1.0,-1.0);
  45.             }
  46.             case SOUTH -> {
  47.                 poseStack.mulPose(be.getBlockState().getValue(BlockStateProperties.FACING).getOpposite().getRotation());
  48.                 poseStack.translate(0.0,-1.0,-1.0);
  49.             }
  50.             case EAST -> {
  51.                 poseStack.mulPose(be.getBlockState().getValue(BlockStateProperties.FACING).getOpposite().getRotation());
  52.                 poseStack.translate(0.0,-1.0,-1.0);
  53.             }
  54.             case WEST -> {
  55.                 poseStack.mulPose(be.getBlockState().getValue(BlockStateProperties.FACING).getOpposite().getRotation());
  56.                 poseStack.translate(0.0,-1.0,-1.0);
  57.             }
  58.             case UP -> {
  59.                 poseStack.mulPose(be.getBlockState().getValue(BlockStateProperties.FACING).getOpposite().getRotation());
  60.                 poseStack.translate(0.0,-2.0,0.0);
  61.             }
  62.         }
  63.  
  64.         if(be.getBlockState().getValue(BlockStateProperties.LIT)){
  65.             //this.model.setupAnim(be);
  66.             this.model.preRingY = (float)Math.clamp(Math.cos(be.ticks / 3.0f) * 8.14150f,-3.1001D,2.50001D);
  67.             this.model.postRingY = this.model.preRingY - 2.50001f;
  68.             this.model.ring.y = this.model.postRingY;
  69.             this.model.bellows.yScale = 2f;
  70.             this.model.bellows.y = this.model.ring.y + 12f;
  71.             this.model.renderToBuffer(poseStack,
  72.                     bufferSource.getBuffer(RenderType.entityCutout(BaseEngineModel.LAYER_LOCATION.getModel()))
  73.                     ,packedLight,packedOverlay);
  74.         }
  75.         else{
  76.             //this.model.setupAnimSlowDown(be);
  77.             if (this.model.ring.y > 0){
  78.                 this.model.ring.y = Mth.lerp(be.ticks,this.model.ring.y,0);
  79.             }
  80.             this.model.renderToBuffer(poseStack,
  81.                     bufferSource.getBuffer(RenderType.entityCutout(BaseEngineModel.LAYER_LOCATION.getModel()))
  82.                     ,packedLight,packedOverlay);
  83.         }
  84.         poseStack.popPose();
  85.     }
  86.  
  87.     @Override
  88.     public AABB getRenderBoundingBox(DecorativeBaseDynamoEngineBE blockEntity) {
  89.         return new AABB(blockEntity.getBlockPos().getX() - 2, blockEntity.getBlockPos().getY() - 2, blockEntity.getBlockPos().getZ() - 2,
  90.                 blockEntity.getBlockPos().getX() + 2, blockEntity.getBlockPos().getY() + 2, blockEntity.getBlockPos().getZ() + 2);
  91.     }
  92. }
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement