From c4bab1a502bbd188d5e48513b8fcb20c2222db06 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Mon, 2 Nov 2020 17:52:14 +0300 Subject: [PATCH] WIP: End Crystal pedestal render --- .../entities/render/EndCrystalRenderer.java | 53 +++++++++++++++++++ .../entities/render/PedestalItemRenderer.java | 7 ++- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java diff --git a/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java new file mode 100644 index 00000000..ab16bf2b --- /dev/null +++ b/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java @@ -0,0 +1,53 @@ +package ru.betterend.blocks.entities.render; + +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.OverlayTexture; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Quaternion; + +public class EndCrystalRenderer { + private static final Identifier TEXTURE = new Identifier("textures/entity/end_crystal/end_crystal.png"); + private static final RenderLayer END_CRYSTAL; + private static final float SINE_45_DEGREES; + private static final ModelPart CORE; + private static final ModelPart FRAME; + + public static void render(int age, float tickDelta, float rotation, MatrixStack matrices, VertexConsumerProvider vertexConsumerProvider, int light) { + float rotation2 = (age + tickDelta) * 3.0F; +// System.out.println("====="); +// System.out.println("A: " + age); +// System.out.println("R1: " + rotation); +// System.out.println("R2: " + rotation2); + VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(END_CRYSTAL); + matrices.push(); + matrices.scale(0.8F, 0.8F, 0.8F); + matrices.translate(0.0D, -0.5D, 0.0D); + matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation2)); + matrices.translate(0.0D, 0.8F, 0.0D); + matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); + FRAME.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); + matrices.scale(0.875F, 0.875F, 0.875F); + matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); + matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation2)); + FRAME.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); + matrices.scale(0.875F, 0.875F, 0.875F); + matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); + matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation2)); + CORE.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); + matrices.pop(); + } + + static { + END_CRYSTAL = RenderLayer.getEntityCutoutNoCull(TEXTURE); + SINE_45_DEGREES = (float)Math.sin(0.7853981633974483D); + FRAME = new ModelPart(64, 32, 0, 0); + FRAME.addCuboid(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); + CORE = new ModelPart(64, 32, 32, 0); + CORE.addCuboid(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); + } +} 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 748fdc80..fdea900b 100644 --- a/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java +++ b/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java @@ -16,6 +16,7 @@ import net.minecraft.client.util.math.MatrixStack; 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; @@ -70,7 +71,11 @@ public class PedestalItemRenderer extends BlockEntityRenderer