From 726f4a3cddc0960fd35e84d574d0d8def1c74660 Mon Sep 17 00:00:00 2001 From: IThundxr Date: Sun, 29 Sep 2024 12:02:02 -0400 Subject: [PATCH] Last bits of porting --- .../render/ContraptionRenderInfo.java | 22 ++++++++++-------- .../schedule/hat/TrainHatArmorLayer.java | 7 ++++-- .../ponder/element/WorldSectionElement.java | 23 +++++++++---------- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java index dc87af3d8b..9a527274d9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.render; +import net.minecraft.client.renderer.ItemBlockRenderTypes; + import org.apache.commons.lang3.tuple.Pair; import com.mojang.blaze3d.vertex.PoseStack; @@ -118,15 +120,17 @@ private SuperByteBuffer buildStructureBuffer(RenderType layer) { BlockState state = blocks.lookup().apply(pos); if (state.getRenderShape() == RenderShape.MODEL) { BakedModel model = dispatcher.getBlockModel(state); - ModelData modelData = contraption.modelData.getOrDefault(pos, ModelData.EMPTY); - modelData = model.getModelData(renderWorld, pos, state, modelData); - long randomSeed = state.getSeed(pos); - random.setSeed(randomSeed); - if (model.getRenderTypes(state, random, modelData).contains(layer)) { - poseStack.pushPose(); - poseStack.translate(pos.getX(), pos.getY(), pos.getZ()); - renderer.tesselateBlock(renderWorld, model, state, pos, poseStack, sbbBuilder, true, random, randomSeed, OverlayTexture.NO_OVERLAY, modelData, layer); - poseStack.popPose(); + if (model.isVanillaAdapter()) { + if (ItemBlockRenderTypes.getChunkRenderType(state) != layer) { + model = null; + } + } else { + model = LayerFilteringBakedModel.wrap(model, layer); + } + if (model != null) { + model = shadeSeparatingWrapper.wrapModel(model); + dispatcher.getModelRenderer() + .tesselateBlock(renderWorld, model, state, pos, poseStack, sbbBuilder, true, random, state.getSeed(pos), OverlayTexture.NO_OVERLAY); } } } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatArmorLayer.java b/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatArmorLayer.java index 6a8d1961d5..5d496c61f5 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatArmorLayer.java @@ -1,5 +1,8 @@ package com.simibubi.create.content.trains.schedule.hat; +import java.util.ArrayList; +import java.util.List; + import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.contraptions.Contraption; @@ -49,9 +52,9 @@ public void render(PoseStack ms, MultiBufferSource buffer, int light, LivingEnti M entityModel = getParentModel(); ms.pushPose(); - boolean valid = false; var msr = TransformStack.of(ms); - float scale = 1; + TrainHatInfo info = TrainHatInfoReloadListener.getHatInfoFor(entity.getType()); + List partsToHead = new ArrayList<>(); if (entityModel instanceof AgeableListModel model && entityModel instanceof io.github.fabricators_of_create.porting_lib.mixin.accessors.client.accessor.AgeableListModelAccessor access) { if (model.young) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java index 206b6624c5..bd0b01b18b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java @@ -428,18 +428,17 @@ private SuperByteBuffer buildStructureBuffer(PonderWorld world, RenderType layer if (state.getRenderShape() == RenderShape.MODEL) { BakedModel model = dispatcher.getBlockModel(state); - BlockEntity blockEntity = world.getBlockEntity(pos); - ModelData modelData = blockEntity != null ? blockEntity.getModelData() : ModelData.EMPTY; - modelData = model.getModelData(world, pos, state, modelData); - long seed = state.getSeed(pos); - random.setSeed(seed); - - if (model.getRenderTypes(state, random, modelData).contains(layer)) { - poseStack.pushPose(); - poseStack.translate(pos.getX(), pos.getY(), pos.getZ()); - renderer.tesselateBlock(world, model, state, pos, poseStack, sbbBuilder, true, - random, seed, OverlayTexture.NO_OVERLAY, modelData, layer); - poseStack.popPose(); + if (model.isVanillaAdapter()) { + if (ItemBlockRenderTypes.getChunkRenderType(state) != layer) { + model = null; + } + } else { + model = LayerFilteringBakedModel.wrap(model, layer); + } + if (model != null) { + model = shadeSeparatingWrapper.wrapModel(model); + dispatcher.getModelRenderer() + .tesselateBlock(world, model, state, pos, poseStack, sbbBuilder, true, random, state.getSeed(pos), OverlayTexture.NO_OVERLAY); } } });