From 7247c65d6fdedf7c4ff60754281d526d7686e806 Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Mon, 22 Dec 2025 12:31:18 +0300 Subject: [PATCH 1/3] move to mui --- .../electric/MultiblockTankMachine.java | 75 +++++++++++++------ 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index b84bf2bf1b9..7fd69713588 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -2,24 +2,35 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.fluids.PropertyFluidFilter; -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; +import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; +import com.gregtechceu.gtceu.api.mui.base.widget.IWidget; +import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; +import com.gregtechceu.gtceu.api.mui.utils.Alignment; +import com.gregtechceu.gtceu.api.mui.value.sync.IntSyncValue; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; +import com.gregtechceu.gtceu.api.mui.value.sync.SyncHandlers; +import com.gregtechceu.gtceu.api.mui.widget.ParentWidget; +import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget; +import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; +import com.gregtechceu.gtceu.api.mui.widgets.slot.FluidSlot; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; +import com.gregtechceu.gtceu.client.mui.screen.UISettings; +import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; +import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; -import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -35,7 +46,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class MultiblockTankMachine extends MultiblockControllerMachine implements IFancyUIMachine { +public class MultiblockTankMachine extends MultiblockControllerMachine implements IMuiMachine { @Persisted @Getter @@ -83,21 +94,43 @@ public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, bool ///////////////////////////////////// @Override - public Widget createUIWidget() { - var group = new WidgetGroup(0, 0, 90, 63); - group.setBackground(GuiTextures.BACKGROUND_INVERSE); - - group.addWidget(new ImageWidget(4, 4, 82, 55, GuiTextures.DISPLAY)); - group.addWidget(new LabelWidget(8, 8, "gtceu.gui.fluid_amount")); - group.addWidget(new LabelWidget(8, 18, this::getFluidLabel).setTextColor(-1).setDropShadow(true)); - group.addWidget(new TankWidget(tank.getStorages()[0], 68, 23, true, true) - .setBackground(GuiTextures.FLUID_SLOT)); - - return group; + public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { + IntSyncValue bucketSyncer = new IntSyncValue(() -> tank.getFluidInTank(0).getAmount(), (ignored) -> {}); + syncManager.syncValue("bucket_amount", bucketSyncer); + + return new ModularPanel(this.getDefinition().getName()) + .child( + // Top half of the screen + new ParentWidget<>() + .widthRel(1) + .height(20 + 60) + // Box that has the display texture BG + + // the buttons / text / etc + .child(new ParentWidget<>() + .background(GTGuiTextures.DISPLAY) + .size(90, 63) + .align(Alignment.CENTER) + .child(IKey.lang("gtceu.gui.fluid_amount").asWidget() + .color(0xffffff) + .margin(8, 0, 8, 0)) + .child(IKey.dynamic( + () -> Component.literal( + FormattingUtil.formatBuckets(bucketSyncer.getIntValue()))) + .asWidget() + .color(0xffffff) + .margin(8, 0, 20, 0)) + .child(Flow.column() + .margin(68, 0, 23, 0) + .coverChildren() + .child(createFluidSlot(syncManager))))) + .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, GTGuiTextures.BACKGROUND)) + .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); } - private String getFluidLabel() { - return String.valueOf(tank.getFluidInTank(0).getAmount()); + private IWidget createFluidSlot(PanelSyncManager syncManager) { + syncManager.syncValue("fluid_slot", + SyncHandlers.fluidSlot(tank.getStorages()[0]).controlsAmount(false)); + return new FluidSlot().syncHandler("fluid_slot", 0).background(GTGuiTextures.FLUID_SLOT); } ////////////////////////////////////// From d8ba02f8cb9354c812464084e60101b38eb9e536 Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Tue, 23 Dec 2025 13:37:23 +0300 Subject: [PATCH 2/3] fix formatting --- .../multiblock/electric/MultiblockTankMachine.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 3f50ae9652d..8b2dcd7286d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -22,16 +22,8 @@ import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; import com.gregtechceu.gtceu.common.mui.GTGuiTextures; -import com.gregtechceu.gtceu.utils.FormattingUtil; - -import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import com.gregtechceu.gtceu.syncsystem.annotations.SaveField; - -import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; -import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; +import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; From f95c6d3e5daaf9f49ed5f924859deb50994fdd15 Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Tue, 23 Dec 2025 14:04:06 +0300 Subject: [PATCH 3/3] small changes --- .../machine/multiblock/electric/MultiblockTankMachine.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 8b2dcd7286d..996935ce859 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -102,8 +102,6 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet new ParentWidget<>() .widthRel(1) .height(20 + 60) - // Box that has the display texture BG + - // the buttons / text / etc .child(new ParentWidget<>() .background(GTGuiTextures.DISPLAY) .size(90, 63)