Skip to content

Commit

Permalink
More fabric porting of flywheel-upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
IThundxr committed Sep 29, 2024
1 parent 2185237 commit dfcdef6
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);
}
}

Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import net.minecraft.world.level.block.state.BlockState;

public class VirtualRenderHelper {
private static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new FabricBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).modelData(VIRTUAL_DATA).build());
private static final ModelCache<BlockState> VIRTUAL_BLOCKS = new ModelCache<>(state -> new FabricBakedModelBuilder(ModelUtil.VANILLA_RENDERER.getBlockModel(state)).build());
private static final ThreadLocal<ThreadLocalObjects> THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new);

/**
Expand Down

0 comments on commit dfcdef6

Please sign in to comment.