Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class WizardChestRenderer implements BlockEntityRenderer<WizardChestBlockEntity> {
- public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(WizardsMod.MODID, "wizard_chest"), "main");
- public static final ResourceLocation WIZARD_CHEST_RENDERER_ATLAS_TEXTURE = new ResourceLocation(WizardsMod.MODID, "entity/chest/wizard_chest");
- private final ModelPart lid;
- private final ModelPart base;
- private final ModelPart lock;
- private final ModelPart decor;
- private Material material;
- public WizardChestRenderer(BlockEntityRendererProvider.Context pContext) {
- material = new Material(Sheets.CHEST_SHEET, WIZARD_CHEST_RENDERER_ATLAS_TEXTURE);
- ModelPart modelPart = pContext.bakeLayer(LAYER_LOCATION);
- this.base = modelPart.getChild("base");
- this.lid = modelPart.getChild("lid");
- this.lock = modelPart.getChild("lock");
- this.decor = modelPart.getChild("decor");
- }
- @Override
- public void render(WizardChestBlockEntity pBlockEntity, float pPartialTick, PoseStack pPoseStack, MultiBufferSource pBuffer, int pPackedLight, int pPackedOverlay) {
- Level world = pBlockEntity.getLevel();
- boolean hasWorld = (world != null);
- BlockState state = pBlockEntity.getBlockState();
- Direction facing = Direction.NORTH;
- if (hasWorld) {
- facing = state.getValue(WizardChestBlock.FACING);
- }
- float angle = facing.toYRot();
- pPoseStack.pushPose();
- pPoseStack.translate(0.5f, 0.5f, 0.5f);
- pPoseStack.mulPose(Axis.YP.rotationDegrees(-angle));
- pPoseStack.translate(-0.5f, -0.5f, -0.5f);
- float f1 = pBlockEntity.getOpenNess(pPartialTick);
- f1 = 1.0f - f1;
- f1 = 1.0f - f1 * f1 * f1;
- VertexConsumer vertexConsumer = material.buffer(pBuffer, RenderType::entitySolid);
- render(pPoseStack, vertexConsumer, pPackedLight, pPackedOverlay, f1);
- pPoseStack.popPose();
- }
- private void render(PoseStack pPoseStack, VertexConsumer pConsumer, int pPackedLight, int pPackedOverlay, float pLidAngle) {
- lid.xRot = -(pLidAngle * (float) (Math.PI / 2));
- lock.xRot = lid.xRot;
- lock.render(pPoseStack, pConsumer, pPackedLight, pPackedOverlay);
- lid.render(pPoseStack, pConsumer, pPackedLight, pPackedOverlay);
- base.render(pPoseStack, pConsumer, pPackedLight, pPackedOverlay);
- decor.render(pPoseStack, pConsumer, pPackedLight, pPackedOverlay);
- }
- public static LayerDefinition createBody() {
- MeshDefinition meshdefinition = new MeshDefinition();
- PartDefinition partdefinition = meshdefinition.getRoot();
- partdefinition.addOrReplaceChild("base", CubeListBuilder.create().texOffs(0, 0).addBox(1.0F, 0.0F, 1.0F, 14.0F, 10.0F, 14.0F), PartPose.ZERO);
- partdefinition.addOrReplaceChild(
- "lid", CubeListBuilder.create().texOffs(0, 0).addBox(1.0F, 0.0F, 0.0F, 14.0F, 5.0F, 14.0F), PartPose.offset(0.0F, 9.0F, 1.0F)
- );
- partdefinition.addOrReplaceChild(
- "lock", CubeListBuilder.create().texOffs(0, 0).addBox(7.0F, -2.0F, 14.0F, 2.0F, 4.0F, 1.0F), PartPose.offset(0.0F, 9.0F, 1.0F)
- );
- PartDefinition decor = partdefinition.addOrReplaceChild("decor", CubeListBuilder.create().texOffs(0, 0).addBox(0.0f, 2.0f, 0.0f, 12, 1, 1), PartPose.offset(1.0f, 0, 1.0f));
- return LayerDefinition.create(meshdefinition, 64, 64);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement