From dc171b26594ea2bc5b2ec588544b59b2fd6d0b6b Mon Sep 17 00:00:00 2001 From: alongstringofnumbers Date: Mon, 4 Nov 2024 16:51:01 -0700 Subject: [PATCH 01/14] Start cover overlay --- .../java/gregtech/api/cover/CoverWithUI.java | 9 ++++ .../storage/MetaTileEntityCrate.java | 42 ++++++++++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 6c288e08137..95eae501ed0 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -69,6 +69,15 @@ default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMa return null; } + default ModularPanel getSmallGUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { + return buildUI(guiData, guiSyncManager); + } + + default boolean shouldShowSmallUI() { + // Check buildUI is not null? + return usesMui2(); + } + @Override default boolean isValid() { return getCoverableView().isValid(); diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index 1da4918ffcc..2095fb8fb4b 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -1,13 +1,16 @@ package gregtech.common.metatileentities.storage; +import gregtech.api.cover.CoverWithUI; import gregtech.api.items.itemhandlers.GTItemStackHandler; import gregtech.api.items.toolitem.ToolClasses; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.mui.GTGuiTextures; import gregtech.api.mui.GTGuis; import gregtech.api.recipes.ModHandler; import gregtech.api.unification.material.Material; import gregtech.api.util.GTUtility; +import gregtech.api.util.Size; import gregtech.client.renderer.texture.Textures; import gregtech.common.items.MetaItems; @@ -33,11 +36,14 @@ import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; import com.cleanroommc.modularui.api.widget.IWidget; +import com.cleanroommc.modularui.drawable.ItemDrawable; import com.cleanroommc.modularui.factory.PosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; +import com.cleanroommc.modularui.widgets.ButtonWidget; import com.cleanroommc.modularui.widgets.ItemSlot; +import com.cleanroommc.modularui.widgets.layout.Column; import com.cleanroommc.modularui.widgets.layout.Grid; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; @@ -164,7 +170,7 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManage }))); } } - return GTGuis.createPanel(this, rowSize * 18 + 14, 18 + 4 * 18 + 5 + 14 + 18 * rows) + ModularPanel panel = GTGuis.createPanel(this, rowSize * 18 + 14, 18 + 4 * 18 + 5 + 14 + 18 * rows) .child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5)) .bindPlayerInventory() .child(new Grid() @@ -172,6 +178,40 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManage .minElementMargin(0, 0) .minColWidth(18).minRowHeight(18) .matrix(widgets)); + if (hasAnyCover()) { + createCoverWidgets(panel); + } + + return panel; + } + + private void createCoverWidgets(ModularPanel mainPanel) { + Column leftCoverColumn = new Column(); + Column rightCoverColumn = new Column(); + int numCovers = 0; + Size widgetSize = new Size(20, 20); + + // int parentHeight = coverGrid.getParentArea().height; + // int parentWidth = coverGrid.getParentArea().width; + for (EnumFacing side : EnumFacing.VALUES) { + if (hasCover(side) && getCoverAtSide(side) instanceof CoverWithUI cover) { + if (cover.shouldShowSmallUI()) { + numCovers++; + // Use the left side for the first three covers + if (numCovers < 3) { + leftCoverColumn.child(new ButtonWidget<>().topRel(20 * numCovers + 5).size(20, 20) + .background(GTGuiTextures.SLOT) + .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); + } else { + rightCoverColumn.child(new ButtonWidget<>().topRel(20 * numCovers + 5).size(20, 20) + .background(GTGuiTextures.SLOT) + .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); + } + } + } + } + mainPanel.child(leftCoverColumn).leftRel(1); + mainPanel.child(rightCoverColumn).rightRel(1); } @Override From 90e1f2767e8fef9c4b04f75378cb36c5d378343a Mon Sep 17 00:00:00 2001 From: alongstringofnumbers Date: Mon, 4 Nov 2024 19:23:50 -0700 Subject: [PATCH 02/14] Continue work --- .../storage/MetaTileEntityCrate.java | 52 ++++++++++++++----- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index 2095fb8fb4b..d439bb79038 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -10,7 +10,6 @@ import gregtech.api.recipes.ModHandler; import gregtech.api.unification.material.Material; import gregtech.api.util.GTUtility; -import gregtech.api.util.Size; import gregtech.client.renderer.texture.Textures; import gregtech.common.items.MetaItems; @@ -36,8 +35,10 @@ import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; import com.cleanroommc.modularui.api.widget.IWidget; +import com.cleanroommc.modularui.api.widget.Interactable; import com.cleanroommc.modularui.drawable.ItemDrawable; import com.cleanroommc.modularui.factory.PosGuiData; +import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; @@ -179,39 +180,64 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManage .minColWidth(18).minRowHeight(18) .matrix(widgets)); if (hasAnyCover()) { - createCoverWidgets(panel); + createCoverWidgets(panel, guiData, guiSyncManager); } return panel; } - private void createCoverWidgets(ModularPanel mainPanel) { + private void createCoverWidgets(ModularPanel mainPanel, PosGuiData guiData, PanelSyncManager guiSyncManager) { Column leftCoverColumn = new Column(); Column rightCoverColumn = new Column(); int numCovers = 0; - Size widgetSize = new Size(20, 20); - // int parentHeight = coverGrid.getParentArea().height; - // int parentWidth = coverGrid.getParentArea().width; for (EnumFacing side : EnumFacing.VALUES) { if (hasCover(side) && getCoverAtSide(side) instanceof CoverWithUI cover) { if (cover.shouldShowSmallUI()) { numCovers++; + SidedPosGuiData sideData = new SidedPosGuiData(guiData.getPlayer(), guiData.getX(), + guiData.getY(), guiData.getZ(), side); + + // guiSyncManager.panel("cover_" + numCovers, mainPanel, ); + /* + * PanelSyncHandler coverSyncHandler = new PanelSyncHandler(mainPanel, + * (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager)); + * + * guiSyncManager.syncValue("cover_" + numCovers, coverSyncHandler); + */ + // Use the left side for the first three covers - if (numCovers < 3) { - leftCoverColumn.child(new ButtonWidget<>().topRel(20 * numCovers + 5).size(20, 20) - .background(GTGuiTextures.SLOT) + if (numCovers <= 3) { + // guiSyncManager.panel("cover_" + numCovers, mainPanel, ); + + leftCoverColumn.child(new ButtonWidget<>().top(20 * numCovers + 5).size(20, 20) + .background(GTGuiTextures.SLOT).onMousePressed(i -> { + + ModularPanel coverPanel = cover.getSmallGUI(sideData, guiSyncManager); + if (!coverPanel.isOpen()) { + coverPanel.onOpen(mainPanel.getScreen()); + } + /* + * if (coverSyncHandler.isPanelOpen()) { + * coverSyncHandler.closePanel(); + * } else { + * coverSyncHandler.openPanel(); + * } + */ + Interactable.playButtonClickSound(); + return true; + }) .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); } else { - rightCoverColumn.child(new ButtonWidget<>().topRel(20 * numCovers + 5).size(20, 20) + rightCoverColumn.child(new ButtonWidget<>().top(20 * numCovers + 5).size(20, 20) .background(GTGuiTextures.SLOT) .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); } } } } - mainPanel.child(leftCoverColumn).leftRel(1); - mainPanel.child(rightCoverColumn).rightRel(1); + mainPanel.child(leftCoverColumn.left(-20)); + mainPanel.child(rightCoverColumn.right(mainPanel.getDefaultWidth())); } @Override @@ -294,7 +320,7 @@ public void writeItemStackData(NBTTagCompound data) { } @Override - public void receiveCustomData(int dataId, PacketBuffer buf) { + public void receiveCustomData(int dataId, @NotNull PacketBuffer buf) { super.receiveCustomData(dataId, buf); if (dataId == IS_TAPED) { From ca88115907191a1f6c076162964c48cc9a23b67b Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:19:05 -0700 Subject: [PATCH 03/14] fix cover panel opening --- .../java/gregtech/api/cover/CoverWithUI.java | 19 ++- .../storage/MetaTileEntityCrate.java | 115 ++++++++++-------- 2 files changed, 79 insertions(+), 55 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 95eae501ed0..3ee3a9d3a5e 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -4,6 +4,7 @@ import gregtech.api.gui.ModularUI; import gregtech.api.mui.GTGuiTextures; import gregtech.api.mui.GTGuiTheme; +import gregtech.api.mui.GTGuis; import gregtech.api.mui.GregTechGuiScreen; import gregtech.api.mui.factory.CoverGuiFactory; @@ -17,6 +18,7 @@ import com.cleanroommc.modularui.api.IGuiHolder; import com.cleanroommc.modularui.api.drawable.IDrawable; import com.cleanroommc.modularui.api.drawable.IKey; +import com.cleanroommc.modularui.api.widget.IWidget; import com.cleanroommc.modularui.drawable.ItemDrawable; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; @@ -32,6 +34,8 @@ import com.cleanroommc.modularui.widgets.ToggleButton; import com.cleanroommc.modularui.widgets.layout.Flow; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface CoverWithUI extends Cover, IUIHolder, IGuiHolder { @@ -66,11 +70,20 @@ default GTGuiTheme getUITheme() { @Override default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return null; + var w = constructWidgets(guiData, guiSyncManager); + return GTGuis.createPanel(getPickItem(), 100, 100) + .childIf(w != null, w); + } + + default @NotNull ModularPanel getSmallGUI(@NotNull SidedPosGuiData guiData, + @NotNull PanelSyncManager guiSyncManager) { + var w = constructWidgets(guiData, guiSyncManager); + return GTGuis.createPopupPanel(getPickItem().getTranslationKey(), 100, 100) + .childIf(w != null, w); } - default ModularPanel getSmallGUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return buildUI(guiData, guiSyncManager); + default @Nullable IWidget constructWidgets(SidedPosGuiData data, PanelSyncManager manager) { + return null; } default boolean shouldShowSmallUI() { diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index d439bb79038..634b73bb224 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -34,18 +34,22 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; +import com.cleanroommc.modularui.api.widget.IGuiAction; import com.cleanroommc.modularui.api.widget.IWidget; import com.cleanroommc.modularui.api.widget.Interactable; +import com.cleanroommc.modularui.drawable.GuiTextures; import com.cleanroommc.modularui.drawable.ItemDrawable; import com.cleanroommc.modularui.factory.PosGuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; +import com.cleanroommc.modularui.utils.Alignment; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; import com.cleanroommc.modularui.widgets.ButtonWidget; import com.cleanroommc.modularui.widgets.ItemSlot; import com.cleanroommc.modularui.widgets.layout.Column; import com.cleanroommc.modularui.widgets.layout.Grid; +import com.cleanroommc.modularui.widgets.layout.Row; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -171,73 +175,80 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManage }))); } } - ModularPanel panel = GTGuis.createPanel(this, rowSize * 18 + 14, 18 + 4 * 18 + 5 + 14 + 18 * rows) - .child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5)) + var panel = GTGuis.createPanel(this, rowSize * 18 + 14, 18 + 4 * 18 + 5 + 14 + 18 * rows); + + return panel.child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5)) .bindPlayerInventory() + .childIf(hasAnyCover(), createCoverWidgets(guiData, guiSyncManager, panel)) .child(new Grid() .top(18).left(7).right(7).height(rows * 18) .minElementMargin(0, 0) .minColWidth(18).minRowHeight(18) .matrix(widgets)); - if (hasAnyCover()) { - createCoverWidgets(panel, guiData, guiSyncManager); - } - - return panel; } - private void createCoverWidgets(ModularPanel mainPanel, PosGuiData guiData, PanelSyncManager guiSyncManager) { - Column leftCoverColumn = new Column(); - Column rightCoverColumn = new Column(); - int numCovers = 0; + private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, ModularPanel mainPanel) { + Column leftCoverColumn = new Column() + .background(GuiTextures.MC_BACKGROUND) + .crossAxisAlignment(Alignment.CrossAxis.CENTER) + .padding(4) + .coverChildrenWidth() + .topRel(0.25f) + .left(-20) + .height(24 * 3); + Column rightCoverColumn = new Column() + .background(GuiTextures.MC_BACKGROUND) + .crossAxisAlignment(Alignment.CrossAxis.CENTER) + .padding(4) + .coverChildrenWidth() + .topRel(0.25f) + .right(-20) + .height(24 * 3); + int numCovers = 0; for (EnumFacing side : EnumFacing.VALUES) { - if (hasCover(side) && getCoverAtSide(side) instanceof CoverWithUI cover) { - if (cover.shouldShowSmallUI()) { - numCovers++; - SidedPosGuiData sideData = new SidedPosGuiData(guiData.getPlayer(), guiData.getX(), - guiData.getY(), guiData.getZ(), side); - - // guiSyncManager.panel("cover_" + numCovers, mainPanel, ); - /* - * PanelSyncHandler coverSyncHandler = new PanelSyncHandler(mainPanel, - * (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager)); - * - * guiSyncManager.syncValue("cover_" + numCovers, coverSyncHandler); - */ - - // Use the left side for the first three covers - if (numCovers <= 3) { - // guiSyncManager.panel("cover_" + numCovers, mainPanel, ); - - leftCoverColumn.child(new ButtonWidget<>().top(20 * numCovers + 5).size(20, 20) - .background(GTGuiTextures.SLOT).onMousePressed(i -> { - - ModularPanel coverPanel = cover.getSmallGUI(sideData, guiSyncManager); - if (!coverPanel.isOpen()) { - coverPanel.onOpen(mainPanel.getScreen()); - } - /* - * if (coverSyncHandler.isPanelOpen()) { - * coverSyncHandler.closePanel(); - * } else { - * coverSyncHandler.openPanel(); - * } - */ - Interactable.playButtonClickSound(); - return true; - }) - .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); + if (getCoverAtSide(side) instanceof CoverWithUI cover) { + if (!cover.shouldShowSmallUI()) continue; + + SidedPosGuiData sideData = new SidedPosGuiData(data.getPlayer(), data.getX(), + data.getY(), data.getZ(), side); + + // todo better key for this? + var panel = manager.panel("cover at side: " + side.getName(), mainPanel, + (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager)); + + IGuiAction.MousePressed handlePanel = i -> { + if (!panel.isPanelOpen()) { + panel.openPanel(); } else { - rightCoverColumn.child(new ButtonWidget<>().top(20 * numCovers + 5).size(20, 20) - .background(GTGuiTextures.SLOT) - .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); + panel.closePanel(); } + Interactable.playButtonClickSound(); + return true; + }; + + // Use the left side for the first three covers + if (numCovers++ < 3) { + leftCoverColumn.child(new ButtonWidget<>() + .size(20, 20) + .marginBottom(2) + .background(GTGuiTextures.SLOT) + .onMousePressed(handlePanel) + .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); + } else { + rightCoverColumn.child(new ButtonWidget<>() + .size(20, 20) + .marginBottom(2) + .background(GTGuiTextures.SLOT) + .onMousePressed(handlePanel) + .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); } } } - mainPanel.child(leftCoverColumn.left(-20)); - mainPanel.child(rightCoverColumn.right(mainPanel.getDefaultWidth())); + return new Row() + .expanded() + .child(leftCoverColumn) + .child(rightCoverColumn); } @Override From 0b8d2026746d1fcbe1a12b23ed387c58303d3237 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:47:30 -0700 Subject: [PATCH 04/14] add new method to CoverWithUI remove overrides to buildUI --- .../java/gregtech/api/cover/CoverWithUI.java | 24 +++++++++++++------ .../gregtech/common/covers/CoverConveyor.java | 15 ++++-------- .../common/covers/CoverFluidRegulator.java | 2 +- .../common/covers/CoverFluidVoiding.java | 2 +- .../covers/CoverFluidVoidingAdvanced.java | 2 +- .../common/covers/CoverItemVoiding.java | 6 ++--- .../covers/CoverItemVoidingAdvanced.java | 6 ++--- .../gregtech/common/covers/CoverPump.java | 2 +- .../common/covers/CoverRoboticArm.java | 6 ++--- 9 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 3ee3a9d3a5e..c20d599128d 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -70,19 +70,29 @@ default GTGuiTheme getUITheme() { @Override default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var w = constructWidgets(guiData, guiSyncManager); - return GTGuis.createPanel(getPickItem(), 100, 100) - .childIf(w != null, w); + var panel = GTGuis.createPanel(getPickItem(), getWidth(), getHeight()); + var w = createUI(panel, guiSyncManager); + return panel.childIf(w != null, w) + .bindPlayerInventory(); + } + + default int getWidth() { + return 176; + } + + default int getHeight() { + return 192; } default @NotNull ModularPanel getSmallGUI(@NotNull SidedPosGuiData guiData, @NotNull PanelSyncManager guiSyncManager) { - var w = constructWidgets(guiData, guiSyncManager); - return GTGuis.createPopupPanel(getPickItem().getTranslationKey(), 100, 100) - .childIf(w != null, w); + var panel = GTGuis.createPopupPanel(getPickItem().getTranslationKey(), getWidth(), getHeight()); + var w = createUI(panel, guiSyncManager); + return panel.childIf(w != null, w) + .coverChildrenHeight(); } - default @Nullable IWidget constructWidgets(SidedPosGuiData data, PanelSyncManager manager) { + default @Nullable IWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { return null; } diff --git a/src/main/java/gregtech/common/covers/CoverConveyor.java b/src/main/java/gregtech/common/covers/CoverConveyor.java index b037492f993..a514f164f7f 100644 --- a/src/main/java/gregtech/common/covers/CoverConveyor.java +++ b/src/main/java/gregtech/common/covers/CoverConveyor.java @@ -9,7 +9,6 @@ import gregtech.api.cover.CoverWithUI; import gregtech.api.cover.CoverableView; import gregtech.api.mui.GTGuiTextures; -import gregtech.api.mui.GTGuis; import gregtech.api.util.GTTransferUtils; import gregtech.api.util.ItemStackHashStrategy; import gregtech.client.renderer.texture.Textures; @@ -503,18 +502,14 @@ public boolean usesMui2() { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var panel = GTGuis.createPanel(this, 176, 192 + 18); + public int getHeight() { + return 192 + 18; + } + public @NotNull ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { getItemFilterContainer().setMaxTransferSize(getMaxStackSize()); - return panel.child(CoverWithUI.createTitleRow(getPickItem())) - .child(createUI(guiData, guiSyncManager)) - .bindPlayerInventory(); - } - - protected ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { - var column = Flow.column().top(24).margin(7, 0) + var column = new Column().top(24).margin(7, 0) .widthRel(1f).coverChildrenHeight(); EnumSyncValue manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class, diff --git a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java index 141b51e0552..36edf944da9 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java +++ b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java @@ -248,7 +248,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan } @Override - protected ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); transferMode.updateCacheFromSource(true); syncManager.syncValue("transfer_mode", transferMode); diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java index 4bd8472b55f..4c278913186 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java @@ -77,7 +77,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan } @Override - protected ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, syncManager) diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java index b6a9e1cd1e5..81c90b33dce 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java @@ -106,7 +106,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan } @Override - protected ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); syncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverItemVoiding.java b/src/main/java/gregtech/common/covers/CoverItemVoiding.java index e8129ec11f3..faf1b37893c 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoiding.java @@ -73,12 +73,12 @@ void voidAny(IItemHandler myItemHandler) { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return super.buildUI(guiData, guiSyncManager).height(192 - 22); + public int getHeight() { + return 192 - 22; } @Override - protected ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, guiSyncManager) diff --git a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java index b739e7e6e1f..ba6796c733a 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java @@ -89,12 +89,12 @@ protected void voidOverflow(IItemHandler myItemHandler) { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return super.buildUI(guiData, guiSyncManager).height(192 + 18); + public int getHeight() { + return 192 + 18; } @Override - protected ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); guiSyncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverPump.java b/src/main/java/gregtech/common/covers/CoverPump.java index 659b916e80b..28a84a63af5 100644 --- a/src/main/java/gregtech/common/covers/CoverPump.java +++ b/src/main/java/gregtech/common/covers/CoverPump.java @@ -199,7 +199,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan .bindPlayerInventory(); } - protected ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class, this::getManualImportExportMode, this::setManualImportExportMode); diff --git a/src/main/java/gregtech/common/covers/CoverRoboticArm.java b/src/main/java/gregtech/common/covers/CoverRoboticArm.java index b1b99657adf..475dda5d9fc 100644 --- a/src/main/java/gregtech/common/covers/CoverRoboticArm.java +++ b/src/main/java/gregtech/common/covers/CoverRoboticArm.java @@ -192,12 +192,12 @@ private boolean shouldDisplayAmountSlider() { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return super.buildUI(guiData, guiSyncManager).height(192 + 36 + 18 + 2); + public int getHeight() { + return 192 + 36 + 18 + 2; } @Override - protected ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { EnumSyncValue transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); guiSyncManager.syncValue("transfer_mode", transferMode); From c9a701f4f9348c68d92390c3f75568eff3221e85 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:25:24 -0700 Subject: [PATCH 05/14] add title row back ensure only one cover panel can be open at a time --- src/main/java/gregtech/api/cover/CoverWithUI.java | 5 ++++- .../metatileentities/storage/MetaTileEntityCrate.java | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index c20d599128d..e5551006b1c 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -73,6 +73,7 @@ default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMa var panel = GTGuis.createPanel(getPickItem(), getWidth(), getHeight()); var w = createUI(panel, guiSyncManager); return panel.childIf(w != null, w) + .child(createTitleRow(getPickItem()).pos(5, 5)) .bindPlayerInventory(); } @@ -86,9 +87,11 @@ default int getHeight() { default @NotNull ModularPanel getSmallGUI(@NotNull SidedPosGuiData guiData, @NotNull PanelSyncManager guiSyncManager) { - var panel = GTGuis.createPopupPanel(getPickItem().getTranslationKey(), getWidth(), getHeight()); + var panel = GTGuis.createPopupPanel(getPickItem().getTranslationKey(), getWidth(), 100); var w = createUI(panel, guiSyncManager); return panel.childIf(w != null, w) + .child(createTitleRow(getPickItem()).pos(5, 5)) + .paddingBottom(24) .coverChildrenHeight(); } diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index 634b73bb224..a1a881caf1b 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -43,6 +43,7 @@ import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Alignment; +import com.cleanroommc.modularui.value.sync.PanelSyncHandler; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; import com.cleanroommc.modularui.widgets.ButtonWidget; @@ -206,6 +207,7 @@ private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modula .height(24 * 3); int numCovers = 0; + List coverPanels = new ArrayList<>(); for (EnumFacing side : EnumFacing.VALUES) { if (getCoverAtSide(side) instanceof CoverWithUI cover) { if (!cover.shouldShowSmallUI()) continue; @@ -216,9 +218,13 @@ private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modula // todo better key for this? var panel = manager.panel("cover at side: " + side.getName(), mainPanel, (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager)); + coverPanels.add(panel); IGuiAction.MousePressed handlePanel = i -> { if (!panel.isPanelOpen()) { + coverPanels.forEach(h -> { + if (h.isPanelOpen()) h.closePanel(); + }); panel.openPanel(); } else { panel.closePanel(); From 3baa1c836a2d7eb968cfa66554fd43b3552b767a Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:36:50 -0700 Subject: [PATCH 06/14] fix fluid related covers --- .../gregtech/common/covers/CoverFluidRegulator.java | 6 +++--- .../gregtech/common/covers/CoverFluidVoiding.java | 6 +++--- .../common/covers/CoverFluidVoidingAdvanced.java | 6 +++--- src/main/java/gregtech/common/covers/CoverPump.java | 13 +------------ 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java index 36edf944da9..4ea505fbcb6 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java +++ b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java @@ -243,12 +243,12 @@ private boolean shouldDisplayAmountSlider() { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return super.buildUI(guiData, guiSyncManager).height(192 + 36); + public int getHeight() { + return super.getHeight() + 36; } @Override - public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); transferMode.updateCacheFromSource(true); syncManager.syncValue("transfer_mode", transferMode); diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java index 4c278913186..0d948bd1ddf 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java @@ -72,12 +72,12 @@ public void renderCover(@NotNull CCRenderState renderState, @NotNull Matrix4 tra } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return super.buildUI(guiData, guiSyncManager).height(192 - 22); + public int getHeight() { + return super.getHeight() - 22; } @Override - public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, syncManager) diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java index 81c90b33dce..6fc50b013d0 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java @@ -101,12 +101,12 @@ public VoidingMode getVoidingMode() { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - return super.buildUI(guiData, guiSyncManager).height(192 + 20); + public int getHeight() { + return super.getHeight() + 42; } @Override - public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); syncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverPump.java b/src/main/java/gregtech/common/covers/CoverPump.java index 28a84a63af5..897380a04f0 100644 --- a/src/main/java/gregtech/common/covers/CoverPump.java +++ b/src/main/java/gregtech/common/covers/CoverPump.java @@ -9,7 +9,6 @@ import gregtech.api.cover.CoverWithUI; import gregtech.api.cover.CoverableView; import gregtech.api.mui.GTGuiTextures; -import gregtech.api.mui.GTGuis; import gregtech.api.util.GTTransferUtils; import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleSidedCubeRenderer; @@ -188,18 +187,8 @@ public boolean usesMui2() { return true; } - @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var panel = GTGuis.createPanel(this, 176, 192); - + public @NotNull ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager syncManager) { getFluidFilterContainer().setMaxTransferSize(getMaxTransferRate()); - - return panel.child(CoverWithUI.createTitleRow(getPickItem())) - .child(createUI(guiData, guiSyncManager)) - .bindPlayerInventory(); - } - - public ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class, this::getManualImportExportMode, this::setManualImportExportMode); From f150fe7a287d66c54932da20fc0edb43fe5d79f2 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:30:44 -0700 Subject: [PATCH 07/14] fix a few more covers --- .../java/gregtech/api/cover/CoverWithUI.java | 1 + .../gregtech/common/covers/CoverStorage.java | 29 ++++++++++--------- .../covers/ender/CoverAbstractEnderLink.java | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index e5551006b1c..9c7344cd28a 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -95,6 +95,7 @@ default int getHeight() { .coverChildrenHeight(); } + // todo remove main panel once mui2 rc2+ is merged default @Nullable IWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { return null; } diff --git a/src/main/java/gregtech/common/covers/CoverStorage.java b/src/main/java/gregtech/common/covers/CoverStorage.java index 4d4f35a5ec1..abdf4e37cdc 100644 --- a/src/main/java/gregtech/common/covers/CoverStorage.java +++ b/src/main/java/gregtech/common/covers/CoverStorage.java @@ -30,6 +30,7 @@ import com.cleanroommc.modularui.widgets.ItemSlot; import com.cleanroommc.modularui.widgets.layout.Grid; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -86,24 +87,24 @@ public boolean usesMui2() { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - guiSyncManager.registerSlotGroup("item_inv", this.storageHandler.getSlots()); + public int getHeight() { + return MAX_HEIGHT; + } + + @Override + public @Nullable IWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { + manager.registerSlotGroup("item_inv", this.storageHandler.getSlots()); int rowSize = this.storageHandler.getSlots(); - List> widgets = new ArrayList<>(); - widgets.add(new ArrayList<>()); + List widgets = new ArrayList<>(); for (int i = 0; i < rowSize; i++) { - widgets.get(0) - .add(new ItemSlot().slot(SyncHandlers.itemSlot(this.storageHandler, i).slotGroup("item_inv"))); + widgets.add(new ItemSlot().slot(SyncHandlers.itemSlot(this.storageHandler, i).slotGroup("item_inv"))); } - return GTGuis.createPanel(this, MAX_WIDTH, MAX_HEIGHT) - .child(IKey.lang("cover.storage.title").asWidget().pos(5, 5)) - .bindPlayerInventory() - .child(new Grid() - .top((MAX_HEIGHT - SLOT_SIZE * 5) / 2).left(7).right(7).height(18) - .minElementMargin(0, 0) - .minColWidth(18).minRowHeight(18) - .matrix(widgets)); + return new Grid() + .top((MAX_HEIGHT - SLOT_SIZE * 5) / 2).left(7).right(7).height(18) + .minElementMargin(0, 0) + .minColWidth(18).minRowHeight(18) + .mapTo(rowSize, widgets, (index, value) -> value); } @Override diff --git a/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java b/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java index 29e7e9a0b9a..1e033c062ce 100644 --- a/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java +++ b/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java @@ -146,7 +146,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan .bindPlayerInventory(); } - protected Flow createWidgets(GuiData data, PanelSyncManager syncManager) { + public @NotNull IWidget createUI(ModularPanel panel, PanelSyncManager manager) { var name = new StringSyncValue(this::getColorStr, this::updateColor); var entrySelectorSH = syncManager.panel("entry_selector", entrySelector(getType()), true); From e1356910e7722f1a0b069123c61885c17ef7d5b1 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Mon, 20 Jan 2025 12:43:39 -0700 Subject: [PATCH 08/14] add method to configure panel remove width/height methods --- src/main/java/gregtech/api/cover/CoverWithUI.java | 12 ++++-------- .../java/gregtech/common/covers/CoverConveyor.java | 7 ++++--- .../gregtech/common/covers/CoverFluidRegulator.java | 7 ++++--- .../gregtech/common/covers/CoverFluidVoiding.java | 7 ++++--- .../common/covers/CoverFluidVoidingAdvanced.java | 8 +++++--- .../gregtech/common/covers/CoverItemVoiding.java | 11 +++++++---- .../common/covers/CoverItemVoidingAdvanced.java | 11 +++++++---- src/main/java/gregtech/common/covers/CoverPump.java | 2 +- .../java/gregtech/common/covers/CoverRoboticArm.java | 8 +++++--- .../java/gregtech/common/covers/CoverStorage.java | 10 ++++------ .../common/covers/ender/CoverAbstractEnderLink.java | 3 ++- .../common/covers/ender/CoverEnderFluidLink.java | 10 ++++++---- 12 files changed, 53 insertions(+), 43 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 9c7344cd28a..1ba53dd2360 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -70,24 +70,20 @@ default GTGuiTheme getUITheme() { @Override default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var panel = GTGuis.createPanel(getPickItem(), getWidth(), getHeight()); + var panel = confgurePanel(GTGuis.createPanel(getPickItem(), 100, 100), false); var w = createUI(panel, guiSyncManager); return panel.childIf(w != null, w) .child(createTitleRow(getPickItem()).pos(5, 5)) .bindPlayerInventory(); } - default int getWidth() { - return 176; - } - - default int getHeight() { - return 192; + default ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return panel; } default @NotNull ModularPanel getSmallGUI(@NotNull SidedPosGuiData guiData, @NotNull PanelSyncManager guiSyncManager) { - var panel = GTGuis.createPopupPanel(getPickItem().getTranslationKey(), getWidth(), 100); + var panel = confgurePanel(GTGuis.createPopupPanel(getPickItem().getTranslationKey(), 100, 100), true); var w = createUI(panel, guiSyncManager); return panel.childIf(w != null, w) .child(createTitleRow(getPickItem()).pos(5, 5)) diff --git a/src/main/java/gregtech/common/covers/CoverConveyor.java b/src/main/java/gregtech/common/covers/CoverConveyor.java index a514f164f7f..59888df8f1c 100644 --- a/src/main/java/gregtech/common/covers/CoverConveyor.java +++ b/src/main/java/gregtech/common/covers/CoverConveyor.java @@ -62,6 +62,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.Map; @@ -502,11 +503,11 @@ public boolean usesMui2() { } @Override - public int getHeight() { - return 192 + 18; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return panel.height(210); } - public @NotNull ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { + public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { getItemFilterContainer().setMaxTransferSize(getMaxStackSize()); var column = new Column().top(24).margin(7, 0) diff --git a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java index 4ea505fbcb6..fa5e6d2065b 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java +++ b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java @@ -32,6 +32,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.apache.logging.log4j.message.FormattedMessage; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Map; @@ -243,12 +244,12 @@ private boolean shouldDisplayAmountSlider() { } @Override - public int getHeight() { - return super.getHeight() + 36; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return panel.height(228); } @Override - public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @Nullable ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); transferMode.updateCacheFromSource(true); syncManager.syncValue("transfer_mode", transferMode); diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java index 0d948bd1ddf..13a367c0e1a 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java @@ -35,6 +35,7 @@ import com.cleanroommc.modularui.widgets.ToggleButton; import com.cleanroommc.modularui.widgets.layout.Flow; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class CoverFluidVoiding extends CoverPump { @@ -72,12 +73,12 @@ public void renderCover(@NotNull CCRenderState renderState, @NotNull Matrix4 tra } @Override - public int getHeight() { - return super.getHeight() - 22; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return panel.height(170); } @Override - public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @Nullable ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, syncManager) diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java index 6fc50b013d0..7a8fbb8c58a 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java @@ -30,6 +30,7 @@ import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.function.Predicate; @@ -101,12 +102,13 @@ public VoidingMode getVoidingMode() { } @Override - public int getHeight() { - return super.getHeight() + 42; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return super.confgurePanel(panel, isSmallGui) + .height(212); } @Override - public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @Nullable ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); syncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverItemVoiding.java b/src/main/java/gregtech/common/covers/CoverItemVoiding.java index faf1b37893c..5457eb8d798 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoiding.java @@ -30,8 +30,10 @@ import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.ToggleButton; -import com.cleanroommc.modularui.widgets.layout.Flow; +import com.cleanroommc.modularui.widgets.layout.Column; +import com.cleanroommc.modularui.widgets.layout.Row; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class CoverItemVoiding extends CoverConveyor { @@ -73,12 +75,13 @@ void voidAny(IItemHandler myItemHandler) { } @Override - public int getHeight() { - return 192 - 22; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return super.confgurePanel(panel, isSmallGui) + .height(170); } @Override - public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { + public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, guiSyncManager) diff --git a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java index ba6796c733a..d96c81fc26a 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java @@ -25,9 +25,11 @@ import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.StringSyncValue; import com.cleanroommc.modularui.widget.ParentWidget; -import com.cleanroommc.modularui.widgets.layout.Flow; +import com.cleanroommc.modularui.widgets.layout.Column; +import com.cleanroommc.modularui.widgets.layout.Row; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Map; @@ -89,12 +91,13 @@ protected void voidOverflow(IItemHandler myItemHandler) { } @Override - public int getHeight() { - return 192 + 18; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return super.confgurePanel(panel, isSmallGui) + .height(210); } @Override - public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { + public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); guiSyncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverPump.java b/src/main/java/gregtech/common/covers/CoverPump.java index 897380a04f0..d1b6b438aef 100644 --- a/src/main/java/gregtech/common/covers/CoverPump.java +++ b/src/main/java/gregtech/common/covers/CoverPump.java @@ -187,7 +187,7 @@ public boolean usesMui2() { return true; } - public @NotNull ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager syncManager) { + public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager syncManager) { getFluidFilterContainer().setMaxTransferSize(getMaxTransferRate()); var manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class, this::getManualImportExportMode, this::setManualImportExportMode); diff --git a/src/main/java/gregtech/common/covers/CoverRoboticArm.java b/src/main/java/gregtech/common/covers/CoverRoboticArm.java index 475dda5d9fc..c721baf3e95 100644 --- a/src/main/java/gregtech/common/covers/CoverRoboticArm.java +++ b/src/main/java/gregtech/common/covers/CoverRoboticArm.java @@ -30,6 +30,7 @@ import com.cleanroommc.modularui.widgets.layout.Flow; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Iterator; import java.util.Map; @@ -192,12 +193,13 @@ private boolean shouldDisplayAmountSlider() { } @Override - public int getHeight() { - return 192 + 36 + 18 + 2; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return super.confgurePanel(panel, isSmallGui) + .height(248); } @Override - public @NotNull ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { + public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { EnumSyncValue transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); guiSyncManager.syncValue("transfer_mode", transferMode); diff --git a/src/main/java/gregtech/common/covers/CoverStorage.java b/src/main/java/gregtech/common/covers/CoverStorage.java index abdf4e37cdc..ba7e1b5414e 100644 --- a/src/main/java/gregtech/common/covers/CoverStorage.java +++ b/src/main/java/gregtech/common/covers/CoverStorage.java @@ -4,7 +4,6 @@ import gregtech.api.cover.CoverDefinition; import gregtech.api.cover.CoverWithUI; import gregtech.api.cover.CoverableView; -import gregtech.api.mui.GTGuis; import gregtech.client.renderer.texture.Textures; import net.minecraft.entity.player.EntityPlayer; @@ -21,12 +20,11 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; -import com.cleanroommc.modularui.api.drawable.IKey; import com.cleanroommc.modularui.api.widget.IWidget; -import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; +import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.ItemSlot; import com.cleanroommc.modularui.widgets.layout.Grid; import org.jetbrains.annotations.NotNull; @@ -87,12 +85,12 @@ public boolean usesMui2() { } @Override - public int getHeight() { - return MAX_HEIGHT; + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return panel.height(MAX_HEIGHT); } @Override - public @Nullable IWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { + public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { manager.registerSlotGroup("item_inv", this.storageHandler.getSlots()); int rowSize = this.storageHandler.getSlots(); diff --git a/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java b/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java index 1e033c062ce..af9f4303ed8 100644 --- a/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java +++ b/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java @@ -39,6 +39,7 @@ import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.StringSyncValue; import com.cleanroommc.modularui.value.sync.SyncHandler; +import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.ButtonWidget; import com.cleanroommc.modularui.widgets.ListWidget; import com.cleanroommc.modularui.widgets.ToggleButton; @@ -146,7 +147,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan .bindPlayerInventory(); } - public @NotNull IWidget createUI(ModularPanel panel, PanelSyncManager manager) { + public @NotNull ParentWidget createUI(ModularPanel panel, PanelSyncManager manager) { var name = new StringSyncValue(this::getColorStr, this::updateColor); var entrySelectorSH = syncManager.panel("entry_selector", entrySelector(getType()), true); diff --git a/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java b/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java index 4c373dfd41c..3d18347725f 100644 --- a/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java +++ b/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java @@ -33,6 +33,7 @@ import com.cleanroommc.modularui.value.sync.EnumSyncValue; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.widgets.layout.Flow; +import com.cleanroommc.modularui.widget.ParentWidget; import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -143,15 +144,16 @@ protected IWidget createEntrySlot() { .marginRight(2); } - protected Flow createWidgets(GuiData data, PanelSyncManager syncManager) { + @Override + public @NotNull ParentWidget createUI(ModularPanel panel, PanelSyncManager manager) { getFluidFilterContainer().setMaxTransferSize(1); var pumpMode = new EnumSyncValue<>(CoverPump.PumpMode.class, this::getPumpMode, this::setPumpMode); - syncManager.syncValue("pump_mode", pumpMode); + manager.syncValue("pump_mode", pumpMode); pumpMode.updateCacheFromSource(true); - return super.createWidgets(data, syncManager) - .child(getFluidFilterContainer().initUI(data, syncManager)) + return super.createUI(data, manager) + .child(getFluidFilterContainer().initUI(data, manager)) .child(new EnumRowBuilder<>(CoverPump.PumpMode.class) .value(pumpMode) .overlay(GTGuiTextures.CONVEYOR_MODE_OVERLAY) From 0f8db22a8cf8ac86e1d85ddf2cec5597cafc8136 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Mon, 20 Jan 2025 13:03:31 -0700 Subject: [PATCH 09/14] fix rebase --- .../java/gregtech/api/cover/CoverWithUI.java | 15 +++++++-------- .../gregtech/common/covers/CoverConveyor.java | 6 ++---- .../common/covers/CoverFluidRegulator.java | 4 +--- .../common/covers/CoverFluidVoiding.java | 4 +--- .../common/covers/CoverFluidVoidingAdvanced.java | 4 +--- .../gregtech/common/covers/CoverItemVoiding.java | 7 ++----- .../common/covers/CoverItemVoidingAdvanced.java | 7 ++----- .../java/gregtech/common/covers/CoverPump.java | 4 +--- .../gregtech/common/covers/CoverRoboticArm.java | 4 +--- .../gregtech/common/covers/CoverStorage.java | 3 ++- .../covers/ender/CoverAbstractEnderLink.java | 16 +++++----------- .../common/covers/ender/CoverEnderFluidLink.java | 5 ++--- 12 files changed, 27 insertions(+), 52 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 1ba53dd2360..5cb2d8960c8 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -70,9 +70,9 @@ default GTGuiTheme getUITheme() { @Override default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var panel = confgurePanel(GTGuis.createPanel(getPickItem(), 100, 100), false); - var w = createUI(panel, guiSyncManager); - return panel.childIf(w != null, w) + var w = createUI(guiData, guiSyncManager); + return confgurePanel(GTGuis.defaultPanel(getPickItem()), false) + .childIf(w != null, w) .child(createTitleRow(getPickItem()).pos(5, 5)) .bindPlayerInventory(); } @@ -83,16 +83,15 @@ default ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { default @NotNull ModularPanel getSmallGUI(@NotNull SidedPosGuiData guiData, @NotNull PanelSyncManager guiSyncManager) { - var panel = confgurePanel(GTGuis.createPopupPanel(getPickItem().getTranslationKey(), 100, 100), true); - var w = createUI(panel, guiSyncManager); - return panel.childIf(w != null, w) + var w = createUI(guiData, guiSyncManager); + return confgurePanel(GTGuis.defaultPopupPanel(getPickItem().getTranslationKey()), true) + .childIf(w != null, w) .child(createTitleRow(getPickItem()).pos(5, 5)) .paddingBottom(24) .coverChildrenHeight(); } - // todo remove main panel once mui2 rc2+ is merged - default @Nullable IWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { + default @Nullable IWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { return null; } diff --git a/src/main/java/gregtech/common/covers/CoverConveyor.java b/src/main/java/gregtech/common/covers/CoverConveyor.java index 59888df8f1c..dda7e307f00 100644 --- a/src/main/java/gregtech/common/covers/CoverConveyor.java +++ b/src/main/java/gregtech/common/covers/CoverConveyor.java @@ -43,7 +43,6 @@ import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IDrawable; import com.cleanroommc.modularui.drawable.DynamicDrawable; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -62,7 +61,6 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.Map; @@ -507,10 +505,10 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { return panel.height(210); } - public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager guiSyncManager) { getItemFilterContainer().setMaxTransferSize(getMaxStackSize()); - var column = new Column().top(24).margin(7, 0) + var column = Flow.column().top(24).margin(7, 0) .widthRel(1f).coverChildrenHeight(); EnumSyncValue manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class, diff --git a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java index fa5e6d2065b..82180048a0d 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidRegulator.java +++ b/src/main/java/gregtech/common/covers/CoverFluidRegulator.java @@ -20,7 +20,6 @@ import net.minecraftforge.fml.relauncher.SideOnly; import com.cleanroommc.modularui.api.drawable.IKey; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -32,7 +31,6 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.apache.logging.log4j.message.FormattedMessage; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Map; @@ -249,7 +247,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager syncManager) { var transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); transferMode.updateCacheFromSource(true); syncManager.syncValue("transfer_mode", transferMode); diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java index 13a367c0e1a..f0569de4a0c 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java @@ -25,7 +25,6 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -35,7 +34,6 @@ import com.cleanroommc.modularui.widgets.ToggleButton; import com.cleanroommc.modularui.widgets.layout.Flow; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public class CoverFluidVoiding extends CoverPump { @@ -78,7 +76,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager syncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, syncManager) diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java index 7a8fbb8c58a..52a039c6838 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoidingAdvanced.java @@ -20,7 +20,6 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -30,7 +29,6 @@ import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.function.Predicate; @@ -108,7 +106,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager syncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); syncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverItemVoiding.java b/src/main/java/gregtech/common/covers/CoverItemVoiding.java index 5457eb8d798..04e0e81f171 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoiding.java @@ -22,7 +22,6 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -30,10 +29,8 @@ import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.ToggleButton; -import com.cleanroommc.modularui.widgets.layout.Column; -import com.cleanroommc.modularui.widgets.layout.Row; +import com.cleanroommc.modularui.widgets.layout.Flow; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public class CoverItemVoiding extends CoverConveyor { @@ -81,7 +78,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager guiSyncManager) { var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, guiSyncManager) diff --git a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java index d96c81fc26a..1436d083b92 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java @@ -17,7 +17,6 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -25,11 +24,9 @@ import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.StringSyncValue; import com.cleanroommc.modularui.widget.ParentWidget; -import com.cleanroommc.modularui.widgets.layout.Column; -import com.cleanroommc.modularui.widgets.layout.Row; +import com.cleanroommc.modularui.widgets.layout.Flow; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Map; @@ -97,7 +94,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager guiSyncManager) { var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode); guiSyncManager.syncValue("voiding_mode", voidingMode); diff --git a/src/main/java/gregtech/common/covers/CoverPump.java b/src/main/java/gregtech/common/covers/CoverPump.java index d1b6b438aef..2eff405e294 100644 --- a/src/main/java/gregtech/common/covers/CoverPump.java +++ b/src/main/java/gregtech/common/covers/CoverPump.java @@ -41,9 +41,7 @@ import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IDrawable; import com.cleanroommc.modularui.drawable.DynamicDrawable; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; -import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; import com.cleanroommc.modularui.utils.MouseData; import com.cleanroommc.modularui.value.sync.EnumSyncValue; @@ -187,7 +185,7 @@ public boolean usesMui2() { return true; } - public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager syncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager syncManager) { getFluidFilterContainer().setMaxTransferSize(getMaxTransferRate()); var manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class, this::getManualImportExportMode, this::setManualImportExportMode); diff --git a/src/main/java/gregtech/common/covers/CoverRoboticArm.java b/src/main/java/gregtech/common/covers/CoverRoboticArm.java index c721baf3e95..b38eb1a203c 100644 --- a/src/main/java/gregtech/common/covers/CoverRoboticArm.java +++ b/src/main/java/gregtech/common/covers/CoverRoboticArm.java @@ -19,7 +19,6 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Color; @@ -30,7 +29,6 @@ import com.cleanroommc.modularui.widgets.layout.Flow; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Iterator; import java.util.Map; @@ -199,7 +197,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager guiSyncManager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager guiSyncManager) { EnumSyncValue transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode); guiSyncManager.syncValue("transfer_mode", transferMode); diff --git a/src/main/java/gregtech/common/covers/CoverStorage.java b/src/main/java/gregtech/common/covers/CoverStorage.java index ba7e1b5414e..316125ac48a 100644 --- a/src/main/java/gregtech/common/covers/CoverStorage.java +++ b/src/main/java/gregtech/common/covers/CoverStorage.java @@ -21,6 +21,7 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.widget.IWidget; +import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; @@ -90,7 +91,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(ModularPanel mainPanel, PanelSyncManager manager) { + public @Nullable ParentWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { manager.registerSlotGroup("item_inv", this.storageHandler.getSlots()); int rowSize = this.storageHandler.getSlots(); diff --git a/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java b/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java index af9f4303ed8..f5c6825b5d9 100644 --- a/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java +++ b/src/main/java/gregtech/common/covers/ender/CoverAbstractEnderLink.java @@ -29,7 +29,6 @@ import com.cleanroommc.modularui.drawable.DynamicDrawable; import com.cleanroommc.modularui.drawable.GuiTextures; import com.cleanroommc.modularui.drawable.Rectangle; -import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.network.NetworkUtils; import com.cleanroommc.modularui.screen.ModularPanel; @@ -137,20 +136,15 @@ public boolean usesMui2() { } @Override - public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var panel = GTGuis.createPanel(this, 176, 192); - - this.playerUUID = guiData.getPlayer().getUniqueID(); - - return panel.child(CoverWithUI.createTitleRow(getPickItem())) - .child(createWidgets(guiData, guiSyncManager)) - .bindPlayerInventory(); + public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { + return panel.height(192); } - public @NotNull ParentWidget createUI(ModularPanel panel, PanelSyncManager manager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { + this.playerUUID = data.getPlayer().getUniqueID(); var name = new StringSyncValue(this::getColorStr, this::updateColor); - var entrySelectorSH = syncManager.panel("entry_selector", entrySelector(getType()), true); + var entrySelectorSH = manager.panel("entry_selector", entrySelector(getType()), true); return Flow.column().coverChildrenHeight().top(24) .margin(7, 0).widthRel(1f) diff --git a/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java b/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java index 3d18347725f..c08aea3f993 100644 --- a/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java +++ b/src/main/java/gregtech/common/covers/ender/CoverEnderFluidLink.java @@ -29,10 +29,9 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.widget.IWidget; -import com.cleanroommc.modularui.factory.GuiData; +import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.value.sync.EnumSyncValue; import com.cleanroommc.modularui.value.sync.PanelSyncManager; -import com.cleanroommc.modularui.widgets.layout.Flow; import com.cleanroommc.modularui.widget.ParentWidget; import org.jetbrains.annotations.NotNull; @@ -145,7 +144,7 @@ protected IWidget createEntrySlot() { } @Override - public @NotNull ParentWidget createUI(ModularPanel panel, PanelSyncManager manager) { + public @NotNull ParentWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { getFluidFilterContainer().setMaxTransferSize(1); var pumpMode = new EnumSyncValue<>(CoverPump.PumpMode.class, this::getPumpMode, this::setPumpMode); From c496168d489395cb91eb74dc53bdc8278c769f60 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Mon, 20 Jan 2025 13:21:34 -0700 Subject: [PATCH 10/14] fix rebase pt 2 --- .../storage/MetaTileEntityCrate.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index a1a881caf1b..075efb71e87 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -48,7 +48,7 @@ import com.cleanroommc.modularui.value.sync.SyncHandlers; import com.cleanroommc.modularui.widgets.ButtonWidget; import com.cleanroommc.modularui.widgets.ItemSlot; -import com.cleanroommc.modularui.widgets.layout.Column; +import com.cleanroommc.modularui.widgets.layout.Flow; import com.cleanroommc.modularui.widgets.layout.Grid; import com.cleanroommc.modularui.widgets.layout.Row; import org.apache.commons.lang3.tuple.Pair; @@ -188,8 +188,8 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManage .matrix(widgets)); } - private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, ModularPanel mainPanel) { - Column leftCoverColumn = new Column() + private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, ModularPanel mainPanel) { + Flow leftCoverColumn = Flow.column() .background(GuiTextures.MC_BACKGROUND) .crossAxisAlignment(Alignment.CrossAxis.CENTER) .padding(4) @@ -197,7 +197,7 @@ private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modula .topRel(0.25f) .left(-20) .height(24 * 3); - Column rightCoverColumn = new Column() + Flow rightCoverColumn = Flow.column() .background(GuiTextures.MC_BACKGROUND) .crossAxisAlignment(Alignment.CrossAxis.CENTER) .padding(4) @@ -216,8 +216,8 @@ private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modula data.getY(), data.getZ(), side); // todo better key for this? - var panel = manager.panel("cover at side: " + side.getName(), mainPanel, - (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager)); + var panel = (PanelSyncHandler) manager.panel("cover at side: " + side.getName(), + (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager), true); coverPanels.add(panel); IGuiAction.MousePressed handlePanel = i -> { From 17cc621374cf1ce0a6a99297765d5186771ca4af Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Mon, 20 Jan 2025 13:22:40 -0700 Subject: [PATCH 11/14] defer panel setting to method --- src/main/java/gregtech/api/cover/CoverWithUI.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 5cb2d8960c8..6ae505361ee 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -86,9 +86,7 @@ default ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { var w = createUI(guiData, guiSyncManager); return confgurePanel(GTGuis.defaultPopupPanel(getPickItem().getTranslationKey()), true) .childIf(w != null, w) - .child(createTitleRow(getPickItem()).pos(5, 5)) - .paddingBottom(24) - .coverChildrenHeight(); + .child(createTitleRow(getPickItem()).pos(5, 5)); } default @Nullable IWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { From 99f946d27d65b6292bcdc1411c16c57cc6023c79 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Sun, 27 Apr 2025 16:41:15 -0700 Subject: [PATCH 12/14] switch to panel handler interface --- .../metatileentities/storage/MetaTileEntityCrate.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index 075efb71e87..32e2c7b37e1 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -33,17 +33,16 @@ import codechicken.lib.render.CCRenderState; import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Matrix4; +import com.cleanroommc.modularui.api.IPanelHandler; import com.cleanroommc.modularui.api.drawable.IKey; import com.cleanroommc.modularui.api.widget.IGuiAction; import com.cleanroommc.modularui.api.widget.IWidget; -import com.cleanroommc.modularui.api.widget.Interactable; import com.cleanroommc.modularui.drawable.GuiTextures; import com.cleanroommc.modularui.drawable.ItemDrawable; import com.cleanroommc.modularui.factory.PosGuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.utils.Alignment; -import com.cleanroommc.modularui.value.sync.PanelSyncHandler; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; import com.cleanroommc.modularui.widgets.ButtonWidget; @@ -207,7 +206,7 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul .height(24 * 3); int numCovers = 0; - List coverPanels = new ArrayList<>(); + List coverPanels = new ArrayList<>(); for (EnumFacing side : EnumFacing.VALUES) { if (getCoverAtSide(side) instanceof CoverWithUI cover) { if (!cover.shouldShowSmallUI()) continue; @@ -216,7 +215,7 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul data.getY(), data.getZ(), side); // todo better key for this? - var panel = (PanelSyncHandler) manager.panel("cover at side: " + side.getName(), + var panel = manager.panel("cover at side: " + side.getName(), (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager), true); coverPanels.add(panel); @@ -229,7 +228,6 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul } else { panel.closePanel(); } - Interactable.playButtonClickSound(); return true; }; From 56386a8e54ae0f984a215fa02ab364700764fbeb Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Tue, 11 Nov 2025 01:53:35 -0700 Subject: [PATCH 13/14] fix rebase fix small gui for item filter as cover --- .../java/gregtech/api/cover/CoverWithUI.java | 2 + .../common/covers/CoverItemFilter.java | 78 +++++++++++-------- .../gregtech/common/covers/CoverStorage.java | 5 +- .../storage/MetaTileEntityCrate.java | 14 ++-- 4 files changed, 55 insertions(+), 44 deletions(-) diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 6ae505361ee..37f6eeaa6e3 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -85,6 +85,8 @@ default ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { @NotNull PanelSyncManager guiSyncManager) { var w = createUI(guiData, guiSyncManager); return confgurePanel(GTGuis.defaultPopupPanel(getPickItem().getTranslationKey()), true) + .coverChildrenHeight() + .paddingBottom(16) .childIf(w != null, w) .child(createTitleRow(getPickItem()).pos(5, 5)); } diff --git a/src/main/java/gregtech/common/covers/CoverItemFilter.java b/src/main/java/gregtech/common/covers/CoverItemFilter.java index 8c667ad8ce7..ff06c74d569 100644 --- a/src/main/java/gregtech/common/covers/CoverItemFilter.java +++ b/src/main/java/gregtech/common/covers/CoverItemFilter.java @@ -32,10 +32,10 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; +import com.cleanroommc.modularui.api.widget.IWidget; import com.cleanroommc.modularui.drawable.Rectangle; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; -import com.cleanroommc.modularui.utils.Alignment; import com.cleanroommc.modularui.utils.Color; import com.cleanroommc.modularui.value.sync.BooleanSyncValue; import com.cleanroommc.modularui.value.sync.EnumSyncValue; @@ -148,41 +148,51 @@ public boolean usesMui2() { @Override public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var filteringMode = new EnumSyncValue<>(ItemFilterMode.class, this::getFilterMode, this::setFilterMode); - - guiSyncManager.syncValue("filtering_mode", filteringMode); - return getFilter().createPanel(guiSyncManager) - .size(176, 212).padding(7) + .size(176, 212) .child(CoverWithUI.createTitleRow(getFilterContainer().getFilterStack()).left(4)) - .child(Flow.column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight() - .child(new EnumRowBuilder<>(ItemFilterMode.class) - .value(filteringMode) - .lang("cover.filter.mode.title") - .overlay(16, GTGuiTextures.FILTER_MODE_OVERLAY) - .build()) - .child(Flow.row() - .marginBottom(2) - .widthRel(1f) - .coverChildrenHeight() - .setEnabledIf(b -> getFilterMode() != ItemFilterMode.FILTER_BOTH) - .child(new ToggleButton() - .overlay(IKey.dynamic(() -> IKey.lang(allowFlow ? - "cover.generic.enabled" : - "cover.generic.disabled").get()) - .color(Color.WHITE.main).shadow(false)) - .tooltip(tooltip -> tooltip - .addLine(IKey.lang("cover.filter.allow_flow.tooltip"))) - .size(72, 18) - .value(new BooleanSyncValue(() -> allowFlow, b -> allowFlow = b))) - .child(IKey.lang("cover.filter.allow_flow.label") - .asWidget() - .height(18) - .alignX(1f))) - .child(new Rectangle().setColor(UI_TEXT_COLOR).asWidget() - .height(1).widthRel(0.95f).margin(0, 4)) - .child(getFilter().createWidgets(guiSyncManager).left(0))) - .child(SlotGroupWidget.playerInventory().bottom(7).left(7)); + .child(createUI(guiData, guiSyncManager)) + .child(SlotGroupWidget.playerInventory().left(7)); + } + + @Override + public @Nullable IWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { + var filteringMode = new EnumSyncValue<>(ItemFilterMode.class, this::getFilterMode, this::setFilterMode); + + manager.syncValue("filtering_mode", filteringMode); + + return Flow.column() + .widthRel(1f) + // .align(Alignment.TopLeft) + .margin(7, 0) + .top(22) + .coverChildrenHeight() + .child(new EnumRowBuilder<>(ItemFilterMode.class) + .value(filteringMode) + .lang("cover.filter.mode.title") + .overlay(16, GTGuiTextures.FILTER_MODE_OVERLAY) + .build()) + .child(Flow.row() + .marginBottom(2) + .widthRel(1f) + .coverChildrenHeight() + .setEnabledIf(b -> getFilterMode() != ItemFilterMode.FILTER_BOTH) + .child(new ToggleButton() + .overlay(IKey.dynamic(() -> IKey.lang(allowFlow ? + "cover.generic.enabled" : + "cover.generic.disabled").get()) + .color(Color.WHITE.main).shadow(false)) + .tooltip(tooltip -> tooltip + .addLine(IKey.lang("cover.filter.allow_flow.tooltip"))) + .size(72, 18) + .value(new BooleanSyncValue(() -> allowFlow, b -> allowFlow = b))) + .child(IKey.lang("cover.filter.allow_flow.label") + .asWidget() + .height(18) + .alignX(1f))) + .child(new Rectangle().setColor(UI_TEXT_COLOR).asWidget() + .height(1).widthRel(0.95f).margin(0, 4)) + .child(getFilter().createWidgets(manager).left(0)); } @Override diff --git a/src/main/java/gregtech/common/covers/CoverStorage.java b/src/main/java/gregtech/common/covers/CoverStorage.java index 316125ac48a..4d6fd042461 100644 --- a/src/main/java/gregtech/common/covers/CoverStorage.java +++ b/src/main/java/gregtech/common/covers/CoverStorage.java @@ -25,7 +25,6 @@ import com.cleanroommc.modularui.screen.ModularPanel; import com.cleanroommc.modularui.value.sync.PanelSyncManager; import com.cleanroommc.modularui.value.sync.SyncHandlers; -import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.ItemSlot; import com.cleanroommc.modularui.widgets.layout.Grid; import org.jetbrains.annotations.NotNull; @@ -91,7 +90,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { } @Override - public @Nullable ParentWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { + public @Nullable Grid createUI(SidedPosGuiData data, PanelSyncManager manager) { manager.registerSlotGroup("item_inv", this.storageHandler.getSlots()); int rowSize = this.storageHandler.getSlots(); @@ -103,7 +102,7 @@ public ModularPanel confgurePanel(ModularPanel panel, boolean isSmallGui) { .top((MAX_HEIGHT - SLOT_SIZE * 5) / 2).left(7).right(7).height(18) .minElementMargin(0, 0) .minColWidth(18).minRowHeight(18) - .mapTo(rowSize, widgets, (index, value) -> value); + .mapTo(rowSize, widgets); } @Override diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index 32e2c7b37e1..92ae0c540a4 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -179,7 +179,7 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManage return panel.child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5)) .bindPlayerInventory() - .childIf(hasAnyCover(), createCoverWidgets(guiData, guiSyncManager, panel)) + .childIf(hasAnyCover(), createCoverWidgets(guiData, panelSyncManager, panel)) .child(new Grid() .top(18).left(7).right(7).height(rows * 18) .minElementMargin(0, 0) @@ -192,18 +192,18 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul .background(GuiTextures.MC_BACKGROUND) .crossAxisAlignment(Alignment.CrossAxis.CENTER) .padding(4) - .coverChildrenWidth() + .width(18 + 6) .topRel(0.25f) .left(-20) - .height(24 * 3); + .height(22 * 3); Flow rightCoverColumn = Flow.column() .background(GuiTextures.MC_BACKGROUND) .crossAxisAlignment(Alignment.CrossAxis.CENTER) .padding(4) - .coverChildrenWidth() + .width(18 + 6) .topRel(0.25f) .right(-20) - .height(24 * 3); + .height(22 * 3); int numCovers = 0; List coverPanels = new ArrayList<>(); @@ -234,14 +234,14 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul // Use the left side for the first three covers if (numCovers++ < 3) { leftCoverColumn.child(new ButtonWidget<>() - .size(20, 20) + .size(18) .marginBottom(2) .background(GTGuiTextures.SLOT) .onMousePressed(handlePanel) .overlay(new ItemDrawable(cover.getPickItem()).asIcon())); } else { rightCoverColumn.child(new ButtonWidget<>() - .size(20, 20) + .size(18) .marginBottom(2) .background(GTGuiTextures.SLOT) .onMousePressed(handlePanel) From 63a58ac2f94b6a4c9e4d489876efd6f42b1dd1cf Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Tue, 11 Nov 2025 12:08:52 -0700 Subject: [PATCH 14/14] also fix fluid filters as covers misc --- .../common/covers/CoverFluidFilter.java | 70 ++++++++++--------- .../storage/MetaTileEntityCrate.java | 6 +- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/src/main/java/gregtech/common/covers/CoverFluidFilter.java b/src/main/java/gregtech/common/covers/CoverFluidFilter.java index a0b6585ebd7..86b0fec7ee8 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidFilter.java +++ b/src/main/java/gregtech/common/covers/CoverFluidFilter.java @@ -33,6 +33,7 @@ import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; import com.cleanroommc.modularui.api.drawable.IKey; +import com.cleanroommc.modularui.api.widget.IWidget; import com.cleanroommc.modularui.drawable.Rectangle; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; @@ -145,44 +146,49 @@ public boolean usesMui2() { @Override public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager) { - var filteringMode = new EnumSyncValue<>(FluidFilterMode.class, this::getFilterMode, this::setFilterMode); - - guiSyncManager.syncValue("filtering_mode", filteringMode); - this.fluidFilterContainer.setMaxTransferSize(1); - return getFilter().createPanel(guiSyncManager) .size(176, 212).padding(7) .child(CoverWithUI.createTitleRow(getFilterContainer().getFilterStack())) - .child(Flow.column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight() - .child(new EnumRowBuilder<>(FluidFilterMode.class) - .value(filteringMode) - .lang("cover.filter.mode.title") - .overlay(16, GTGuiTextures.FILTER_MODE_OVERLAY) - .build()) - .child(Flow.row() - .marginBottom(2) - .widthRel(1f) - .coverChildrenHeight() - .setEnabledIf(b -> getFilterMode() != FluidFilterMode.FILTER_BOTH) - .child(new ToggleButton() - .overlay(IKey.dynamic(() -> IKey.lang(allowFlow ? - "cover.generic.enabled" : - "cover.generic.disabled").get()) - .color(Color.WHITE.main).shadow(false)) - .tooltip(tooltip -> tooltip - .addLine(IKey.lang("cover.filter.allow_flow.tooltip"))) - .size(72, 18) - .value(new BooleanSyncValue(() -> allowFlow, b -> allowFlow = b))) - .child(IKey.lang("cover.filter.allow_flow.label") - .asWidget() - .height(18) - .alignX(1f))) - .child(new Rectangle().setColor(UI_TEXT_COLOR).asWidget() - .height(1).widthRel(0.95f).margin(0, 4)) - .child(getFilter().createWidgets(guiSyncManager))) + .child(createUI(guiData, guiSyncManager)) .child(SlotGroupWidget.playerInventory().bottom(7).left(7)); } + @Override + public @Nullable IWidget createUI(SidedPosGuiData data, PanelSyncManager manager) { + var filteringMode = new EnumSyncValue<>(FluidFilterMode.class, this::getFilterMode, this::setFilterMode); + + manager.syncValue("filtering_mode", filteringMode); + this.fluidFilterContainer.setMaxTransferSize(1); + + return Flow.column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight() + .child(new EnumRowBuilder<>(FluidFilterMode.class) + .value(filteringMode) + .lang("cover.filter.mode.title") + .overlay(16, GTGuiTextures.FILTER_MODE_OVERLAY) + .build()) + .child(Flow.row() + .marginBottom(2) + .widthRel(1f) + .coverChildrenHeight() + .setEnabledIf(b -> getFilterMode() != FluidFilterMode.FILTER_BOTH) + .child(new ToggleButton() + .overlay(IKey.dynamic(() -> IKey.lang(allowFlow ? + "cover.generic.enabled" : + "cover.generic.disabled").get()) + .color(Color.WHITE.main).shadow(false)) + .tooltip(tooltip -> tooltip + .addLine(IKey.lang("cover.filter.allow_flow.tooltip"))) + .size(72, 18) + .value(new BooleanSyncValue(() -> allowFlow, b -> allowFlow = b))) + .child(IKey.lang("cover.filter.allow_flow.label") + .asWidget() + .height(18) + .alignX(1f))) + .child(new Rectangle().setColor(UI_TEXT_COLOR).asWidget() + .height(1).widthRel(0.95f).margin(0, 4)) + .child(getFilter().createWidgets(manager)); + } + @Override public void renderCover(@NotNull CCRenderState renderState, @NotNull Matrix4 translation, IVertexOperation[] pipeline, @NotNull Cuboid6 plateBox, @NotNull BlockRenderLayer layer) { diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java index 92ae0c540a4..57691c4ad29 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityCrate.java @@ -49,7 +49,6 @@ import com.cleanroommc.modularui.widgets.ItemSlot; import com.cleanroommc.modularui.widgets.layout.Flow; import com.cleanroommc.modularui.widgets.layout.Grid; -import com.cleanroommc.modularui.widgets.layout.Row; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -214,8 +213,7 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul SidedPosGuiData sideData = new SidedPosGuiData(data.getPlayer(), data.getX(), data.getY(), data.getZ(), side); - // todo better key for this? - var panel = manager.panel("cover at side: " + side.getName(), + IPanelHandler panel = manager.panel("side: " + side.getName(), (syncManager, syncHandler) -> cover.getSmallGUI(sideData, syncManager), true); coverPanels.add(panel); @@ -249,7 +247,7 @@ private Flow createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modul } } } - return new Row() + return Flow.row() .expanded() .child(leftCoverColumn) .child(rightCoverColumn);