diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderAuraTimer.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderAuraTimer.java index d37a88f2..35aa25c7 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderAuraTimer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderAuraTimer.java @@ -1,23 +1,31 @@ package de.ellpeck.naturesaura.blocks.tiles.render; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.blocks.tiles.BlockEntityAuraTimer; import de.ellpeck.naturesaura.items.ItemAuraBottle; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import java.util.List; + public class RenderAuraTimer implements BlockEntityRenderer { private static final ResourceLocation RES = new ResourceLocation(NaturesAura.MOD_ID, "textures/models/aura_timer_aura.png"); - // private final AuraModel model = new AuraModel(); + private final AuraModel model = new AuraModel(); public RenderAuraTimer(BlockEntityRendererProvider.Context context) { - } @Override @@ -35,26 +43,26 @@ public class RenderAuraTimer implements BlockEntityRenderer> 16 & 255) / 255F; var g = (type.getColor() >> 8 & 255) / 255F; var b = (type.getColor() & 255) / 255F; - //this.model.render(stack, buffer.getBuffer(this.model.getRenderType(RES)), combinedLightIn, combinedOverlayIn, r, g, b, 0.75F); + this.model.renderToBuffer(stack, buffer.getBuffer(this.model.renderType(RES)), combinedLightIn, combinedOverlayIn, r, g, b, 0.75F); stack.popPose(); } - // TODO model rendering -/* private static class AuraModel extends Model { + private static class AuraModel extends Model { - private final ModelRenderer box; + private final ModelPart model; public AuraModel() { - super(RenderType::getEntityTranslucent); - this.box = new ModelRenderer(this, 0, 0); - this.box.setTextureSize(64, 64); - this.box.addBox(0, 0, 0, 16, 16, 16); + super(RenderType::entityTranslucent); + var mesh = new MeshDefinition(); + var part = mesh.getRoot(); + part.addOrReplaceChild("main", new CubeListBuilder().addBox(0, 0, 0, 16, 16, 16), PartPose.ZERO); + this.model = LayerDefinition.create(mesh, 64, 64).bakeRoot(); } @Override - public void render(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { - this.box.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); + public void renderToBuffer(PoseStack matrixStackIn, VertexConsumer bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { + this.model.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); } - }*/ + } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java index 7c958672..e170e912 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java @@ -1,11 +1,19 @@ package de.ellpeck.naturesaura.blocks.tiles.render; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.blocks.tiles.BlockEntityGeneratorLimitRemover; import de.ellpeck.naturesaura.blocks.tiles.BlockEntityImpl; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.resources.ResourceLocation; @@ -17,7 +25,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class RenderGeneratorLimitRemover implements BlockEntityRenderer { private static final ResourceLocation RES = new ResourceLocation(NaturesAura.MOD_ID, "textures/models/generator_limit_remover_glint.png"); - //private final ModelLimitRemoverGlint model = new ModelLimitRemoverGlint(); + private final ModelLimitRemoverGlint model = new ModelLimitRemoverGlint(); public RenderGeneratorLimitRemover(BlockEntityRendererProvider.Context context) { @@ -39,25 +47,25 @@ public class RenderGeneratorLimitRemover implements BlockEntityRenderer { private static final ResourceLocation RES = new ResourceLocation(NaturesAura.MOD_ID, "textures/models/projectile_generator_overlay.png"); - //private final ModelOverlay model = new ModelOverlay(); + private final ModelOverlay model = new ModelOverlay(); public RenderProjectileGenerator(BlockEntityRendererProvider.Context context) { @@ -38,25 +46,25 @@ public class RenderProjectileGenerator implements BlockEntityRenderer { public RenderMoverMinecart(EntityRendererProvider.Context p_174300_) { super(p_174300_, ModelLayers.MINECART); } - //private final ModelMoverMinecart model = new ModelMoverMinecart(); + + private final ModelMoverMinecart model = new ModelMoverMinecart(); @Override protected void renderMinecartContents(EntityMoverMinecart entityIn, float partialTicks, BlockState stateIn, PoseStack matrixStackIn, MultiBufferSource bufferIn, int packedLightIn) { @@ -26,25 +36,25 @@ public class RenderMoverMinecart extends MinecartRenderer { matrixStackIn.translate(0, 22 / 16F, 0); matrixStackIn.translate(0, 0, 1); matrixStackIn.mulPose(Vector3f.XP.rotationDegrees(180)); - //this.model.render(matrixStackIn, bufferIn.getBuffer(this.model.getRenderType(RES)), packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + this.model.renderToBuffer(matrixStackIn, bufferIn.getBuffer(this.model.renderType(RES)), packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); matrixStackIn.popPose(); } - // TODO model rendering -/* private static class ModelMoverMinecart extends Model { + private static class ModelMoverMinecart extends Model { - private final ModelRenderer box; + private final ModelPart model; public ModelMoverMinecart() { - super(RenderType::getEntityCutout); - this.box = new ModelRenderer(this, 0, 0); - this.box.setTextureSize(64, 64); - this.box.addBox(0, 0, 0, 16, 24, 16); + super(RenderType::entityCutout); + var mesh = new MeshDefinition(); + var part = mesh.getRoot(); + part.addOrReplaceChild("main", new CubeListBuilder().addBox(0, 0, 0, 16, 24, 16), PartPose.ZERO); + this.model = LayerDefinition.create(mesh, 64, 64).bakeRoot(); } @Override - public void render(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { - this.box.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); + public void renderToBuffer(PoseStack matrixStackIn, VertexConsumer bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { + this.model.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); } - }*/ + } }