diff --git a/src/main/java/ru/betterend/blocks/entities/render/EternalPedestalBlockEntityRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/EternalPedestalBlockEntityRenderer.java new file mode 100644 index 00000000..6050d134 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/entities/render/EternalPedestalBlockEntityRenderer.java @@ -0,0 +1,36 @@ +package ru.betterend.blocks.entities.render; + +import net.minecraft.block.BlockState; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.DyeColor; +import net.minecraft.util.Identifier; + +import ru.betterend.blocks.EternalPedestal; +import ru.betterend.blocks.entities.EternalPedestalEntity; +import ru.betterend.client.render.BeamRenderer; + +public class EternalPedestalBlockEntityRenderer extends PedestalItemRenderer { + + private static final Identifier BEAM_TEXTURE = new Identifier("textures/entity/end_gateway_beam.png"); + + public EternalPedestalBlockEntityRenderer(BlockEntityRenderDispatcher dispatcher) { + super(dispatcher); + } + + @Override + public void render(EternalPedestalEntity blockEntity, float tickDelta, MatrixStack matrices, + VertexConsumerProvider vertexConsumers, int light, int overlay) { + super.render(blockEntity, tickDelta, matrices, vertexConsumers, light, overlay); + BlockState state = blockEntity.getWorld().getBlockState(blockEntity.getPos()); + if (state.get(EternalPedestal.ACTIVATED)) { + float[] colors = DyeColor.MAGENTA.getColorComponents(); + int y = blockEntity.getPos().getY(); + VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(BEAM_TEXTURE, true)); + BeamRenderer.renderLightBeam(matrices, vertexConsumer, tickDelta, -y, 1024 - y, colors, 0.25F, 0.15F, 0.2F); + } + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/render/InfusionPedestalBlockEntityRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/InfusionPedestalBlockEntityRenderer.java new file mode 100644 index 00000000..d30247ba --- /dev/null +++ b/src/main/java/ru/betterend/blocks/entities/render/InfusionPedestalBlockEntityRenderer.java @@ -0,0 +1,11 @@ +package ru.betterend.blocks.entities.render; + +import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; +import ru.betterend.blocks.entities.InfusionPedestalEntity; + +public class InfusionPedestalBlockEntityRenderer extends PedestalItemRenderer { + + public InfusionPedestalBlockEntityRenderer(BlockEntityRenderDispatcher dispatcher) { + super(dispatcher); + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/render/PedestalBlockEntityRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/PedestalBlockEntityRenderer.java new file mode 100644 index 00000000..ab933433 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/entities/render/PedestalBlockEntityRenderer.java @@ -0,0 +1,11 @@ +package ru.betterend.blocks.entities.render; + +import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; +import ru.betterend.blocks.entities.PedestalBlockEntity; + +public class PedestalBlockEntityRenderer extends PedestalItemRenderer { + + public PedestalBlockEntityRenderer(BlockEntityRenderDispatcher dispatcher) { + super(dispatcher); + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java index c2ef2995..2e7bb9c7 100644 --- a/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java +++ b/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java @@ -2,10 +2,9 @@ package ru.betterend.blocks.entities.render; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; + import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; import net.minecraft.client.render.block.entity.BlockEntityRenderer; @@ -16,18 +15,12 @@ import net.minecraft.client.util.math.Vector3f; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; -import ru.betterend.blocks.EternalPedestal; + import ru.betterend.blocks.basis.BlockPedestal; import ru.betterend.blocks.entities.PedestalBlockEntity; -import ru.betterend.client.render.BeamRenderer; -import ru.betterend.registry.EndBlocks; @Environment(EnvType.CLIENT) public class PedestalItemRenderer extends BlockEntityRenderer { - private static final Identifier BEAM_TEXTURE = new Identifier("textures/entity/end_gateway_beam.png"); public PedestalItemRenderer(BlockEntityRenderDispatcher dispatcher) { super(dispatcher); @@ -56,14 +49,7 @@ public class PedestalItemRenderer extends BlockEn float rotation = (blockEntity.getAge() + tickDelta) / 25.0F + 6.0F; matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion(rotation)); - if (state.isOf(EndBlocks.ETERNAL_PEDESTAL) && state.get(EternalPedestal.ACTIVATED)) { - float altitude = MathHelper.sin((blockEntity.getAge() + tickDelta) / 10.0F) * 0.1F + 0.1F; - matrices.translate(0.0D, altitude, 0.0D); - float[] colors = DyeColor.MAGENTA.getColorComponents(); - int y = blockEntity.getPos().getY(); - VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(BEAM_TEXTURE, true)); - BeamRenderer.renderLightBeam(matrices, vertexConsumer, tickDelta, -y, 1024 - y, colors, 0.25F, 0.15F, 0.2F); - } + if (activeItem.getItem() == Items.END_CRYSTAL) { EndCrystalRenderer.render(blockEntity.getAge(), blockEntity.getMaxAge(), tickDelta, matrices, vertexConsumers, light); diff --git a/src/main/java/ru/betterend/registry/EndBlockEntityRenders.java b/src/main/java/ru/betterend/registry/EndBlockEntityRenders.java index acb4c4f8..d878378e 100644 --- a/src/main/java/ru/betterend/registry/EndBlockEntityRenders.java +++ b/src/main/java/ru/betterend/registry/EndBlockEntityRenders.java @@ -3,17 +3,20 @@ package ru.betterend.registry; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry; + import ru.betterend.blocks.entities.render.EndChestBlockEntityRenderer; import ru.betterend.blocks.entities.render.EndSignBlockEntityRenderer; -import ru.betterend.blocks.entities.render.PedestalItemRenderer; +import ru.betterend.blocks.entities.render.EternalPedestalBlockEntityRenderer; +import ru.betterend.blocks.entities.render.InfusionPedestalBlockEntityRenderer; +import ru.betterend.blocks.entities.render.PedestalBlockEntityRenderer; @Environment(EnvType.CLIENT) public class EndBlockEntityRenders { public static void register() { BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.CHEST, EndChestBlockEntityRenderer::new); BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.SIGN, EndSignBlockEntityRenderer::new); - BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.PEDESTAL, PedestalItemRenderer::new); - BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.ETERNAL_PEDESTAL, PedestalItemRenderer::new); - BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.INFUSION_PEDESTAL, PedestalItemRenderer::new); + BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.PEDESTAL, PedestalBlockEntityRenderer::new); + BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.ETERNAL_PEDESTAL, EternalPedestalBlockEntityRenderer::new); + BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.INFUSION_PEDESTAL, InfusionPedestalBlockEntityRenderer::new); } }