From b97f9c45e1f3ddcebf935178f9466249459e3690 Mon Sep 17 00:00:00 2001 From: Lyfts <127234178+Lyfts@users.noreply.github.com> Date: Sun, 12 Jan 2025 15:45:06 +0100 Subject: [PATCH] make gt multiblocks able to better modify their preview --- .../blockrenderer6343/client/world/ObserverWorld.java | 4 ++++ .../integration/gregtech/GTGuiMultiblockHandler.java | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/blockrenderer6343/client/world/ObserverWorld.java b/src/main/java/blockrenderer6343/client/world/ObserverWorld.java index 479a9d5..43ebc3f 100644 --- a/src/main/java/blockrenderer6343/client/world/ObserverWorld.java +++ b/src/main/java/blockrenderer6343/client/world/ObserverWorld.java @@ -20,6 +20,7 @@ import blockrenderer6343.BlockRenderer6343; import blockrenderer6343.client.utils.BRUtil; +import gregtech.api.interfaces.INEIPreviewModifier; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.threads.RunnableMachineUpdate; @@ -177,6 +178,9 @@ private int estimateTier(IConstructable multi) { do { holo.stackSize = tier + 1; hasChanged = false; + if (multi instanceof INEIPreviewModifier modifier) { + modifier.onPreviewConstruct(holo); + } multi.construct(holo, false); } while (tier++ < MAX_TRIES && hasChanged); diff --git a/src/main/java/blockrenderer6343/integration/gregtech/GTGuiMultiblockHandler.java b/src/main/java/blockrenderer6343/integration/gregtech/GTGuiMultiblockHandler.java index 6ddf954..d07c271 100644 --- a/src/main/java/blockrenderer6343/integration/gregtech/GTGuiMultiblockHandler.java +++ b/src/main/java/blockrenderer6343/integration/gregtech/GTGuiMultiblockHandler.java @@ -34,6 +34,7 @@ import blockrenderer6343.integration.nei.GuiMultiblockHandler; import blockrenderer6343.integration.nei.StructureHacks; import cpw.mods.fml.relauncher.ReflectionHelper; +import gregtech.api.interfaces.INEIPreviewModifier; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.ITurnable; @@ -173,6 +174,10 @@ protected void placeMultiblock() { ((ITurnable) tTileEntity).setFrontFacing(ForgeDirection.SOUTH); IMetaTileEntity mte = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity(); + if (mte instanceof INEIPreviewModifier modifier) { + modifier.onPreviewConstruct(getBuildTriggerStack()); + } + if (mte instanceof ISurvivalConstructable survivalConstructable) { int iterations = 0; do { @@ -187,10 +192,15 @@ protected void placeMultiblock() { } else if (tTileEntity instanceof IConstructable iConstructable) { constructable = iConstructable; } + if (constructable != null) { constructable.construct(getBuildTriggerStack(), false); } + if (mte instanceof INEIPreviewModifier modifier) { + modifier.onPreviewStructureComplete(getBuildTriggerStack()); + } + if (!RunnableMachineUpdate.isCurrentThreadEnabled()) { RunnableMachineUpdate.setCurrentThreadEnabled(true); }