Skip to content

Commit a6e5b5e

Browse files
authored
1.20.1 port #736 override solid substitution (#739)
1 parent 8b127f6 commit a6e5b5e

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

src/main/java/com/ldtteam/structurize/client/BlueprintRenderer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ private void init(final BlueprintPreviewData previewData, final Map<Object, Exce
123123

124124
blockAccess.setBlockEntities(tileEntitiesMap);
125125
blockAccess.setEntities(entities);
126+
blockAccess.setSolidSubstitutionOverride(previewData.getSolidSubstitutionOverride());
126127

127128
final PoseStack matrixStack = new PoseStack();
128129
matrixStack.translate(0.01, 0.01, 0.01);
@@ -197,6 +198,8 @@ private void init(final BlueprintPreviewData previewData, final Map<Object, Exce
197198
}
198199
}
199200

201+
blockAccess.setSolidSubstitutionOverride(null);
202+
200203
vertexBuffers = blockVertexBuffersFactory.get();
201204
for (final RenderType renderType : blockRenderTypes)
202205
{

src/main/java/com/ldtteam/structurize/client/fakelevel/BlueprintBlockAccess.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public class BlueprintBlockAccess extends FakeLevel
2222
public static final IFakeLevelLightProvider LIGHT_PROVIDER = new ConfigBasedLightProvider(Structurize.getConfig().getClient().rendererLightLevel);
2323
private static final Scoreboard SCOREBOARD = new Scoreboard();
2424

25+
/**
26+
* Override blockstate for solid placeholders
27+
*/
28+
private BlockState solidSubstitutionOverride = null;
29+
2530
public BlueprintBlockAccess(final Blueprint blueprint)
2631
{
2732
super(blueprint, LIGHT_PROVIDER, SCOREBOARD, true);
@@ -50,6 +55,10 @@ public BlockState prepareBlockStateForRendering(final BlockState state, final Bl
5055
{
5156
if (state.getBlock() == ModBlocks.blockSolidSubstitution.get())
5257
{
58+
if (solidSubstitutionOverride != null)
59+
{
60+
return solidSubstitutionOverride;
61+
}
5362
return BlockUtils.getSubstitutionBlockAtWorld(anyLevel(), worldPos.offset(pos), levelSource.getRawBlockStateFunction().compose(b -> b.subtract(worldPos)));
5463
}
5564
else if (state.getBlock() == ModBlocks.blockFluidSubstitution.get())
@@ -72,4 +81,14 @@ else if (state.getBlock() == ModBlocks.blockTagSubstitution.get())
7281

7382
return state;
7483
}
84+
85+
/**
86+
* Set the solid placeholder blockstate override, only updates when the renderer is recalculated
87+
*
88+
* @return
89+
*/
90+
public void setSolidSubstitutionOverride(final BlockState solidSubstitutionOverride)
91+
{
92+
this.solidSubstitutionOverride = solidSubstitutionOverride;
93+
}
7594
}

src/main/java/com/ldtteam/structurize/storage/rendering/types/BlueprintPreviewData.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.minecraft.util.Mth;
1515
import net.minecraft.world.level.block.Mirror;
1616
import net.minecraft.world.level.block.Rotation;
17+
import net.minecraft.world.level.block.state.BlockState;
1718
import net.minecraftforge.api.distmarker.Dist;
1819
import net.minecraftforge.api.distmarker.OnlyIn;
1920
import org.jetbrains.annotations.Nullable;
@@ -77,6 +78,11 @@ public class BlueprintPreviewData
7778
*/
7879
private boolean renderBlocksNice = Structurize.getConfig().getClient() != null && Structurize.getConfig().getClient().renderPlaceholdersNice.get();
7980

81+
/**
82+
* Override blockstate for solid placeholders
83+
*/
84+
private BlockState solidSubstitutionOverride = null;
85+
8086
/**
8187
* Default constructor to create a new setup.
8288
*/
@@ -429,4 +435,24 @@ public float getOverridePreviewTransparency()
429435
{
430436
return overridePreviewTransparency;
431437
}
438+
439+
/**
440+
* Get the solid placeholder blockstate override
441+
*
442+
* @return
443+
*/
444+
public BlockState getSolidSubstitutionOverride()
445+
{
446+
return solidSubstitutionOverride;
447+
}
448+
449+
/**
450+
* Set the solid placeholder blockstate override, only updates when the renderer is recalculated
451+
*
452+
* @return
453+
*/
454+
public void setSolidSubstitutionOverride(final BlockState solidSubstitutionOverride)
455+
{
456+
this.solidSubstitutionOverride = solidSubstitutionOverride;
457+
}
432458
}

0 commit comments

Comments
 (0)