From dfcdef600b53be05f8ea980dadaec6f812965b6d Mon Sep 17 00:00:00 2001 From: IThundxr Date: Sun, 29 Sep 2024 11:53:48 -0400 Subject: [PATCH] More fabric porting of flywheel-upgrade --- .../render/ContraptionVisual.java | 4 +--- .../gui/element/GuiGameElement.java | 24 +++++++++---------- .../render/VirtualRenderHelper.java | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java index 7aa2b05705..e22101d0c2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java @@ -3,8 +3,6 @@ import java.util.ArrayList; import java.util.List; -import dev.engine_room.flywheel.lib.model.baked.FabricMultiBlockModelBuilder; - import org.apache.commons.lang3.tuple.MutablePair; import com.mojang.blaze3d.vertex.PoseStack; @@ -30,6 +28,7 @@ import dev.engine_room.flywheel.api.visualization.VisualizerRegistry; import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.TransformedInstance; +import dev.engine_room.flywheel.lib.model.baked.FabricMultiBlockModelBuilder; import dev.engine_room.flywheel.lib.task.ForEachPlan; import dev.engine_room.flywheel.lib.task.NestedPlan; import dev.engine_room.flywheel.lib.task.PlanMap; @@ -86,7 +85,6 @@ public BlockState getBlockState(BlockPos pos) { }; model = new FabricMultiBlockModelBuilder(modelWorld, blocks.positions()) - .modelDataLookup(pos -> contraption.modelData.getOrDefault(pos, ModelData.EMPTY)) .build(); structure = embedding.instancerProvider() diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java index 88de1c1090..2f97a72db4 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java @@ -13,11 +13,12 @@ import com.simibubi.create.foundation.fluid.FluidRenderer; import com.simibubi.create.foundation.gui.ILightingSettings; import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.render.VirtualRenderHelper; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.VecHelper; import dev.engine_room.flywheel.lib.model.baked.PartialModel; +import io.github.fabricators_of_create.porting_lib.fluids.FluidStack; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.ItemBlockRenderTypes; @@ -30,7 +31,6 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; -import net.minecraft.util.RandomSource; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; @@ -179,30 +179,29 @@ public void render(GuiGraphics graphics) { transformMatrix(matrixStack); RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS); - renderModel(blockRenderer, buffer, renderType, vb, matrixStack); + renderModel(blockRenderer, buffer, matrixStack); cleanUpMatrix(matrixStack); } - protected void renderModel(BlockRenderDispatcher blockRenderer, MultiBufferSource.BufferSource buffer, - PoseStack ms) { + protected void renderModel(BlockRenderDispatcher blockRenderer, MultiBufferSource.BufferSource buffer, PoseStack ms) { if (blockState.getBlock() == Blocks.AIR) { RenderType renderType = Sheets.translucentCullBlockSheet(); blockRenderer.getModelRenderer() .renderModel(ms.last(), buffer.getBuffer(renderType), blockState, blockModel, 1, 1, 1, - LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, VirtualRenderHelper.VIRTUAL_DATA, null); + LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); } else { int color = Minecraft.getInstance() .getBlockColors() .getColor(blockState, null, null, 0); Color rgb = new Color(color == -1 ? this.color : color); - for (RenderType chunkType : blockModel.getRenderTypes(blockState, RandomSource.create(42L), VirtualRenderHelper.VIRTUAL_DATA)) { - RenderType renderType = RenderTypeHelper.getEntityRenderType(chunkType, true); + for (RenderType chunkType : RenderType.chunkBufferLayers()) { + RenderType renderType = chunkType != RenderType.translucent() ? Sheets.cutoutBlockSheet() : Sheets.translucentCullBlockSheet(); blockRenderer.getModelRenderer() .renderModel(ms.last(), buffer.getBuffer(renderType), blockState, blockModel, rgb.getRedAsFloat(), rgb.getGreenAsFloat(), rgb.getBlueAsFloat(), - LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, VirtualRenderHelper.VIRTUAL_DATA, chunkType); + LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); } } @@ -220,18 +219,17 @@ public GuiBlockStateRenderBuilder(BlockState blockstate) { } @Override - protected void renderModel(BlockRenderDispatcher blockRenderer, MultiBufferSource.BufferSource buffer, - RenderType renderType, VertexConsumer vb, PoseStack ms) { + protected void renderModel(BlockRenderDispatcher blockRenderer, MultiBufferSource.BufferSource buffer, PoseStack ms) { if (blockState.getBlock() instanceof BaseFireBlock) { Lighting.setupForFlatItems(); // blockRenderer.renderSingleBlock(blockState, ms, buffer, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); // buffer.endBatch(); - super.renderModel(blockRenderer, buffer, renderType, buffer.getBuffer(ItemBlockRenderTypes.getRenderType(blockState, false)), ms); + super.renderModel(blockRenderer, buffer, ms); Lighting.setupFor3DItems(); return; } - super.renderModel(blockRenderer, buffer, renderType, vb, ms); + super.renderModel(blockRenderer, buffer, ms); if (blockState.getFluidState() .isEmpty()) diff --git a/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java index 1b8818637f..1e20736007 100644 --- a/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/VirtualRenderHelper.java @@ -21,7 +21,7 @@ import net.minecraft.world.level.block.state.BlockState; public class VirtualRenderHelper { - private static final ModelCache VIRTUAL_BLOCKS = new ModelCache<>(state -> new FabricBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build()); + private static final ModelCache VIRTUAL_BLOCKS = new ModelCache<>(state -> new FabricBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).build()); private static final ThreadLocal THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new); /**