From 73d967e1858e704785aac85c100c59bc04fc4121 Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Fri, 26 Dec 2025 08:56:09 +0300 Subject: [PATCH 1/5] aoe ui --- .../gregtechceu/gtceu/api/item/IGTTool.java | 18 +- .../item/tool/behavior/IToolUIBehavior.java | 16 +- .../tool/behavior/AOEConfigUIBehavior.java | 165 +++++++++++++----- 3 files changed, 137 insertions(+), 62 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index 57dff0347c9..5ec3a058ab0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -19,15 +19,17 @@ import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolUIBehavior; +import com.gregtechceu.gtceu.api.mui.base.IUIHolder; +import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryGuiData; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.sound.SoundEntry; +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; +import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.gui.factory.HeldItemUIFactory; -import com.lowdragmc.lowdraglib.gui.modular.ModularUI; - import net.minecraft.Util; import net.minecraft.client.color.item.ItemColor; import net.minecraft.core.BlockPos; @@ -83,7 +85,7 @@ import static net.minecraft.world.item.Item.BASE_ATTACK_DAMAGE_UUID; import static net.minecraft.world.item.Item.BASE_ATTACK_SPEED_UUID; -public interface IGTTool extends HeldItemUIFactory.IHeldItemUIHolder, ItemLike, IForgeItem { +public interface IGTTool extends IUIHolder>, ItemLike, IForgeItem { GTToolType getToolType(); @@ -878,14 +880,14 @@ default void playSound(Player player) { } @Override - default ModularUI createUI(Player player, HeldItemUIFactory.HeldItemHolder holder) { + default ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syncManager, UISettings settings) { for (var behavior : getToolStats().getBehaviors()) { - if (!(behavior instanceof IToolUIBehavior uiBehavior) || !uiBehavior.openUI(player, holder.getHand())) { + if (!(behavior instanceof IToolUIBehavior uiBehavior) || !uiBehavior.shouldOpenUI(data.getPlayer(), data.getPlayer().getUsedItemHand())) { continue; } - return uiBehavior.createUI(player, holder); + return uiBehavior.buildUI(data, syncManager, settings); } - return new ModularUI(holder, player); + return null; } default Set getToolClasses(ItemStack stack) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java index e00fd5f658e..9a65438c067 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java @@ -1,5 +1,8 @@ package com.gregtechceu.gtceu.api.item.tool.behavior; +import com.gregtechceu.gtceu.api.mui.base.IUIHolder; +import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryGuiData; +import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryUIFactory; import com.lowdragmc.lowdraglib.gui.factory.HeldItemUIFactory; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; @@ -12,20 +15,17 @@ import org.jetbrains.annotations.NotNull; -public interface IToolUIBehavior extends IToolBehavior { +public interface IToolUIBehavior extends IToolBehavior, IUIHolder> { @Override default @NotNull InteractionResultHolder onItemRightClick(@NotNull Level level, @NotNull Player player, @NotNull InteractionHand hand) { - var heldItem = player.getItemInHand(hand); - if (player instanceof ServerPlayer serverPlayer && openUI(serverPlayer, hand)) { - HeldItemUIFactory.INSTANCE.openUI(serverPlayer, hand); - return InteractionResultHolder.success(heldItem); + ItemStack heldItem = player.getItemInHand(hand); + if (level.isClientSide && shouldOpenUI(player, hand)) { + PlayerInventoryUIFactory.INSTANCE.openFromHandClient(hand); } return InteractionResultHolder.pass(heldItem); } - boolean openUI(@NotNull Player player, @NotNull InteractionHand hand); - - ModularUI createUI(Player player, HeldItemUIFactory.HeldItemHolder holder); + boolean shouldOpenUI(@NotNull Player player, @NotNull InteractionHand hand); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java index 261f013aff3..d9ea5441693 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java @@ -1,18 +1,25 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolUIBehavior; -import com.lowdragmc.lowdraglib.gui.factory.HeldItemUIFactory; -import com.lowdragmc.lowdraglib.gui.modular.ModularUI; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; -import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; +import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; +import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryGuiData; +import com.gregtechceu.gtceu.api.mui.value.sync.InteractionSyncHandler; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; +import com.gregtechceu.gtceu.api.mui.widgets.ButtonWidget; +import com.gregtechceu.gtceu.api.mui.widgets.TextWidget; +import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; +import com.gregtechceu.gtceu.client.mui.screen.UISettings; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; import static com.gregtechceu.gtceu.api.item.tool.ToolHelper.getBehaviorsTag; @@ -22,50 +29,116 @@ public class AOEConfigUIBehavior implements IToolUIBehavior { public static final AOEConfigUIBehavior INSTANCE = new AOEConfigUIBehavior(); +// @Override +// public boolean openUI(@NotNull Player player, @NotNull InteractionHand hand) { +// return player.isShiftKeyDown() && !getMaxAoEDefinition(player.getItemInHand(hand)).isZero(); +// } +// +// @Override +// public ModularUI createUI(Player player, HeldItemUIFactory.HeldItemHolder holder) { +// var tag = getBehaviorsTag(holder.getHeld()); +// var defaultDefinition = getMaxAoEDefinition(holder.getHeld()); +// return new ModularUI(120, 80, holder, player).background(GuiTextures.BACKGROUND) +// .widget(new LabelWidget(6, 10, "item.gtceu.tool.aoe.columns")) +// .widget(new LabelWidget(49, 10, "item.gtceu.tool.aoe.rows")) +// .widget(new LabelWidget(79, 10, "item.gtceu.tool.aoe.layers")) +// .widget(new ButtonWidget(15, 24, 20, 20, new TextTexture("+"), (data) -> { +// AoESymmetrical.increaseColumn(tag, defaultDefinition); +// holder.markAsDirty(); +// })) +// .widget(new ButtonWidget(15, 44, 20, 20, new TextTexture("-"), (data) -> { +// AoESymmetrical.decreaseColumn(tag, defaultDefinition); +// holder.markAsDirty(); +// })) +// .widget(new ButtonWidget(50, 24, 20, 20, new TextTexture("+"), (data) -> { +// AoESymmetrical.increaseRow(tag, defaultDefinition); +// holder.markAsDirty(); +// })) +// .widget(new ButtonWidget(50, 44, 20, 20, new TextTexture("-"), (data) -> { +// AoESymmetrical.decreaseRow(tag, defaultDefinition); +// holder.markAsDirty(); +// })) +// .widget(new ButtonWidget(85, 24, 20, 20, new TextTexture("+"), (data) -> { +// AoESymmetrical.increaseLayer(tag, defaultDefinition); +// holder.markAsDirty(); +// })) +// .widget(new ButtonWidget(85, 44, 20, 20, new TextTexture("-"), (data) -> { +// AoESymmetrical.decreaseLayer(tag, defaultDefinition); +// holder.markAsDirty(); +// })) +// .widget(new LabelWidget(23, 65, +// () -> Integer.toString(1 + +// 2 * AoESymmetrical.getColumn(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) +// .widget(new LabelWidget(58, 65, +// () -> Integer.toString( +// 1 + 2 * AoESymmetrical.getRow(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) +// .widget(new LabelWidget(93, 65, () -> Integer +// .toString(1 + AoESymmetrical.getLayer(getBehaviorsTag(holder.getHeld()), defaultDefinition)))); +// } + + @Override - public boolean openUI(@NotNull Player player, @NotNull InteractionHand hand) { + public boolean shouldOpenUI(@NotNull Player player, @NotNull InteractionHand hand) { return player.isShiftKeyDown() && !getMaxAoEDefinition(player.getItemInHand(hand)).isZero(); } @Override - public ModularUI createUI(Player player, HeldItemUIFactory.HeldItemHolder holder) { - var tag = getBehaviorsTag(holder.getHeld()); - var defaultDefinition = getMaxAoEDefinition(holder.getHeld()); - return new ModularUI(120, 80, holder, player).background(GuiTextures.BACKGROUND) - .widget(new LabelWidget(6, 10, "item.gtceu.tool.aoe.columns")) - .widget(new LabelWidget(49, 10, "item.gtceu.tool.aoe.rows")) - .widget(new LabelWidget(79, 10, "item.gtceu.tool.aoe.layers")) - .widget(new ButtonWidget(15, 24, 20, 20, new TextTexture("+"), (data) -> { - AoESymmetrical.increaseColumn(tag, defaultDefinition); - holder.markAsDirty(); - })) - .widget(new ButtonWidget(15, 44, 20, 20, new TextTexture("-"), (data) -> { - AoESymmetrical.decreaseColumn(tag, defaultDefinition); - holder.markAsDirty(); - })) - .widget(new ButtonWidget(50, 24, 20, 20, new TextTexture("+"), (data) -> { - AoESymmetrical.increaseRow(tag, defaultDefinition); - holder.markAsDirty(); - })) - .widget(new ButtonWidget(50, 44, 20, 20, new TextTexture("-"), (data) -> { - AoESymmetrical.decreaseRow(tag, defaultDefinition); - holder.markAsDirty(); - })) - .widget(new ButtonWidget(85, 24, 20, 20, new TextTexture("+"), (data) -> { - AoESymmetrical.increaseLayer(tag, defaultDefinition); - holder.markAsDirty(); - })) - .widget(new ButtonWidget(85, 44, 20, 20, new TextTexture("-"), (data) -> { - AoESymmetrical.decreaseLayer(tag, defaultDefinition); - holder.markAsDirty(); - })) - .widget(new LabelWidget(23, 65, - () -> Integer.toString(1 + - 2 * AoESymmetrical.getColumn(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) - .widget(new LabelWidget(58, 65, - () -> Integer.toString( - 1 + 2 * AoESymmetrical.getRow(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) - .widget(new LabelWidget(93, 65, () -> Integer - .toString(1 + AoESymmetrical.getLayer(getBehaviorsTag(holder.getHeld()), defaultDefinition)))); + public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syncManager, UISettings settings) { + ItemStack held = data.getUsedItemStack(); + CompoundTag tag = getBehaviorsTag(held); + AoESymmetrical defaultDefinition = getMaxAoEDefinition(held); + InteractionSyncHandler minusCols = new InteractionSyncHandler(); + minusCols.setOnMousePressed(data1 -> AoESymmetrical.decreaseColumn(tag, defaultDefinition)); + InteractionSyncHandler plusCols = new InteractionSyncHandler(); + plusCols.setOnMousePressed(data1 -> AoESymmetrical.increaseColumn(tag, defaultDefinition)); + InteractionSyncHandler minusRows = new InteractionSyncHandler(); + minusRows.setOnMousePressed(data1 -> AoESymmetrical.decreaseRow(tag, defaultDefinition)); + InteractionSyncHandler plusRows = new InteractionSyncHandler(); + plusRows.setOnMousePressed(data1 -> AoESymmetrical.increaseRow(tag, defaultDefinition)); + InteractionSyncHandler minusLayers = new InteractionSyncHandler(); + minusLayers.setOnMousePressed(data1 -> AoESymmetrical.decreaseLayer(tag, defaultDefinition)); + InteractionSyncHandler plusLayers = new InteractionSyncHandler(); + plusLayers.setOnMousePressed(data1 -> AoESymmetrical.increaseLayer(tag, defaultDefinition)); + return new ModularPanel("aoe_config") + .child(Flow.column() + .child(Flow.row() + .child(new TextWidget<>(IKey.lang("item.gtceu.tool.aoe.columns"))) + .child(new ButtonWidget<>() + .background(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON) + .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON_HOVERED) + .syncHandler(minusCols)) + .child(new TextWidget<>(IKey.dynamic(() -> Component.literal( + Integer.toString(1 + 2 * AoESymmetrical.getColumn(getBehaviorsTag(held), defaultDefinition)) + )))) + .child(new ButtonWidget<>() + .background(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON) + .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON_HOVERED) + .syncHandler(plusCols))) + .child(Flow.row() + .child(new TextWidget<>(IKey.lang("item.gtceu.tool.aoe.rows"))) + .child(new ButtonWidget<>() + .background(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON) + .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON_HOVERED) + .syncHandler(minusRows)) + .child(new TextWidget<>(IKey.dynamic(() -> Component.literal( + Integer.toString(1 + 2 * AoESymmetrical.getRow(getBehaviorsTag(held), defaultDefinition)) + )))) + .child(new ButtonWidget<>() + .background(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON) + .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON_HOVERED) + .syncHandler(plusRows))) + .child(Flow.row() + .child(new TextWidget<>(IKey.lang("item.gtceu.tool.aoe.layers"))) + .child(new ButtonWidget<>() + .background(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON) + .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON_HOVERED) + .syncHandler(minusLayers)) + .child(new TextWidget<>(IKey.dynamic(() -> Component.literal( + Integer.toString(1 + 2 * AoESymmetrical.getLayer(getBehaviorsTag(held), defaultDefinition)) + )))) + .child(new ButtonWidget<>() + .background(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON) + .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON_HOVERED) + .syncHandler(plusLayers)))); } } From 84590b8d7642b9db0de7828da3eab43deb20c2bb Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Fri, 26 Dec 2025 19:38:00 +0300 Subject: [PATCH 2/5] stuff --- .../tool/behavior/AOEConfigUIBehavior.java | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java index d9ea5441693..0c5cedd3206 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java @@ -101,44 +101,52 @@ public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syn plusLayers.setOnMousePressed(data1 -> AoESymmetrical.increaseLayer(tag, defaultDefinition)); return new ModularPanel("aoe_config") .child(Flow.column() + .margin(5) + .childPadding(2) .child(Flow.row() + .childPadding(2) + .coverChildren() .child(new TextWidget<>(IKey.lang("item.gtceu.tool.aoe.columns"))) .child(new ButtonWidget<>() - .background(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON) - .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON_HOVERED) + .background(GTGuiTextures.MC_BUTTON, IKey.str("-")) + .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("-")) .syncHandler(minusCols)) - .child(new TextWidget<>(IKey.dynamic(() -> Component.literal( - Integer.toString(1 + 2 * AoESymmetrical.getColumn(getBehaviorsTag(held), defaultDefinition)) - )))) + .child(new TextWidget<>(IKey.dynamic(() -> Component.literal(Integer.toString( + AoESymmetrical.getColumn(tag, defaultDefinition) + ))))) .child(new ButtonWidget<>() - .background(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON) - .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON_HOVERED) + .background(GTGuiTextures.MC_BUTTON, IKey.str("+")) + .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("+")) .syncHandler(plusCols))) .child(Flow.row() + .childPadding(2) + .coverChildren() .child(new TextWidget<>(IKey.lang("item.gtceu.tool.aoe.rows"))) .child(new ButtonWidget<>() - .background(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON) - .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON_HOVERED) + .background(GTGuiTextures.MC_BUTTON, IKey.str("-")) + .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("-")) .syncHandler(minusRows)) - .child(new TextWidget<>(IKey.dynamic(() -> Component.literal( - Integer.toString(1 + 2 * AoESymmetrical.getRow(getBehaviorsTag(held), defaultDefinition)) - )))) + .child(new TextWidget<>(IKey.dynamic(() -> Component.literal(Integer.toString( + AoESymmetrical.getRow(tag, defaultDefinition) + ))))) .child(new ButtonWidget<>() - .background(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON) - .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON_HOVERED) + .background(GTGuiTextures.MC_BUTTON, IKey.str("+")) + .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("+")) .syncHandler(plusRows))) .child(Flow.row() + .childPadding(2) + .coverChildren() .child(new TextWidget<>(IKey.lang("item.gtceu.tool.aoe.layers"))) .child(new ButtonWidget<>() - .background(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON) - .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_MINUS, GTGuiTextures.MC_BUTTON_HOVERED) + .background(GTGuiTextures.MC_BUTTON, IKey.str("-")) + .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("-")) .syncHandler(minusLayers)) - .child(new TextWidget<>(IKey.dynamic(() -> Component.literal( - Integer.toString(1 + 2 * AoESymmetrical.getLayer(getBehaviorsTag(held), defaultDefinition)) - )))) + .child(new TextWidget<>(IKey.dynamic(() -> Component.literal(Integer.toString( + AoESymmetrical.getLayer(tag, defaultDefinition) + ))))) .child(new ButtonWidget<>() - .background(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON) - .hoverBackground(GTGuiTextures.BUTTON_THROTTLE_PLUS, GTGuiTextures.MC_BUTTON_HOVERED) + .background(GTGuiTextures.MC_BUTTON, IKey.str("+")) + .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("+")) .syncHandler(plusLayers)))); } } From 00ba05fdf693469ce4db2cee1138aaf3c7645ecd Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Fri, 26 Dec 2025 19:48:45 +0300 Subject: [PATCH 3/5] title bar --- .../gtceu/common/data/mui/GTMuiWidgets.java | 7 +- .../tool/behavior/AOEConfigUIBehavior.java | 109 +++++++++--------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java index d993bd36fd9..f4ce5d8c403 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java @@ -48,8 +48,7 @@ public static Flow createTitleBar(MachineDefinition definition, int panelWidth) return createTitleBar(definition, panelWidth, GTGuiTextures.BACKGROUND); } - public static Flow createTitleBar(MachineDefinition definition, int panelWidth, UITexture background) { - var displayItem = definition.asStack(); + public static Flow createTitleBar(ItemStack displayItem, int panelWidth, UITexture background) { String hatchName = displayItem.getHoverName().getString(); hatchName = hatchName.replaceAll("§.", "").trim(); @@ -84,6 +83,10 @@ public static Flow createTitleBar(MachineDefinition definition, int panelWidth, .size(Math.min(minPanelWidth, textTitleWidth), textHeight)); } + public static Flow createTitleBar(MachineDefinition definition, int panelWidth, UITexture background) { + return createTitleBar(definition.asStack(), panelWidth, background); + } + public static ToggleButton createPowerButton(BooleanSupplier getter, BooleanConsumer setter, PanelSyncManager syncManager) { BooleanSyncValue power = new BooleanSyncValue(getter, setter); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java index 0c5cedd3206..0bb224a2ad9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolUIBehavior; - import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryGuiData; import com.gregtechceu.gtceu.api.mui.value.sync.InteractionSyncHandler; @@ -12,14 +11,15 @@ import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; import com.gregtechceu.gtceu.client.mui.screen.UISettings; - +import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; import com.gregtechceu.gtceu.common.mui.GTGuiTextures; + import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; - import net.minecraft.world.item.ItemStack; + import org.jetbrains.annotations.NotNull; import static com.gregtechceu.gtceu.api.item.tool.ToolHelper.getBehaviorsTag; @@ -29,53 +29,52 @@ public class AOEConfigUIBehavior implements IToolUIBehavior { public static final AOEConfigUIBehavior INSTANCE = new AOEConfigUIBehavior(); -// @Override -// public boolean openUI(@NotNull Player player, @NotNull InteractionHand hand) { -// return player.isShiftKeyDown() && !getMaxAoEDefinition(player.getItemInHand(hand)).isZero(); -// } -// -// @Override -// public ModularUI createUI(Player player, HeldItemUIFactory.HeldItemHolder holder) { -// var tag = getBehaviorsTag(holder.getHeld()); -// var defaultDefinition = getMaxAoEDefinition(holder.getHeld()); -// return new ModularUI(120, 80, holder, player).background(GuiTextures.BACKGROUND) -// .widget(new LabelWidget(6, 10, "item.gtceu.tool.aoe.columns")) -// .widget(new LabelWidget(49, 10, "item.gtceu.tool.aoe.rows")) -// .widget(new LabelWidget(79, 10, "item.gtceu.tool.aoe.layers")) -// .widget(new ButtonWidget(15, 24, 20, 20, new TextTexture("+"), (data) -> { -// AoESymmetrical.increaseColumn(tag, defaultDefinition); -// holder.markAsDirty(); -// })) -// .widget(new ButtonWidget(15, 44, 20, 20, new TextTexture("-"), (data) -> { -// AoESymmetrical.decreaseColumn(tag, defaultDefinition); -// holder.markAsDirty(); -// })) -// .widget(new ButtonWidget(50, 24, 20, 20, new TextTexture("+"), (data) -> { -// AoESymmetrical.increaseRow(tag, defaultDefinition); -// holder.markAsDirty(); -// })) -// .widget(new ButtonWidget(50, 44, 20, 20, new TextTexture("-"), (data) -> { -// AoESymmetrical.decreaseRow(tag, defaultDefinition); -// holder.markAsDirty(); -// })) -// .widget(new ButtonWidget(85, 24, 20, 20, new TextTexture("+"), (data) -> { -// AoESymmetrical.increaseLayer(tag, defaultDefinition); -// holder.markAsDirty(); -// })) -// .widget(new ButtonWidget(85, 44, 20, 20, new TextTexture("-"), (data) -> { -// AoESymmetrical.decreaseLayer(tag, defaultDefinition); -// holder.markAsDirty(); -// })) -// .widget(new LabelWidget(23, 65, -// () -> Integer.toString(1 + -// 2 * AoESymmetrical.getColumn(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) -// .widget(new LabelWidget(58, 65, -// () -> Integer.toString( -// 1 + 2 * AoESymmetrical.getRow(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) -// .widget(new LabelWidget(93, 65, () -> Integer -// .toString(1 + AoESymmetrical.getLayer(getBehaviorsTag(holder.getHeld()), defaultDefinition)))); -// } - + // @Override + // public boolean openUI(@NotNull Player player, @NotNull InteractionHand hand) { + // return player.isShiftKeyDown() && !getMaxAoEDefinition(player.getItemInHand(hand)).isZero(); + // } + // + // @Override + // public ModularUI createUI(Player player, HeldItemUIFactory.HeldItemHolder holder) { + // var tag = getBehaviorsTag(holder.getHeld()); + // var defaultDefinition = getMaxAoEDefinition(holder.getHeld()); + // return new ModularUI(120, 80, holder, player).background(GuiTextures.BACKGROUND) + // .widget(new LabelWidget(6, 10, "item.gtceu.tool.aoe.columns")) + // .widget(new LabelWidget(49, 10, "item.gtceu.tool.aoe.rows")) + // .widget(new LabelWidget(79, 10, "item.gtceu.tool.aoe.layers")) + // .widget(new ButtonWidget(15, 24, 20, 20, new TextTexture("+"), (data) -> { + // AoESymmetrical.increaseColumn(tag, defaultDefinition); + // holder.markAsDirty(); + // })) + // .widget(new ButtonWidget(15, 44, 20, 20, new TextTexture("-"), (data) -> { + // AoESymmetrical.decreaseColumn(tag, defaultDefinition); + // holder.markAsDirty(); + // })) + // .widget(new ButtonWidget(50, 24, 20, 20, new TextTexture("+"), (data) -> { + // AoESymmetrical.increaseRow(tag, defaultDefinition); + // holder.markAsDirty(); + // })) + // .widget(new ButtonWidget(50, 44, 20, 20, new TextTexture("-"), (data) -> { + // AoESymmetrical.decreaseRow(tag, defaultDefinition); + // holder.markAsDirty(); + // })) + // .widget(new ButtonWidget(85, 24, 20, 20, new TextTexture("+"), (data) -> { + // AoESymmetrical.increaseLayer(tag, defaultDefinition); + // holder.markAsDirty(); + // })) + // .widget(new ButtonWidget(85, 44, 20, 20, new TextTexture("-"), (data) -> { + // AoESymmetrical.decreaseLayer(tag, defaultDefinition); + // holder.markAsDirty(); + // })) + // .widget(new LabelWidget(23, 65, + // () -> Integer.toString(1 + + // 2 * AoESymmetrical.getColumn(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) + // .widget(new LabelWidget(58, 65, + // () -> Integer.toString( + // 1 + 2 * AoESymmetrical.getRow(getBehaviorsTag(holder.getHeld()), defaultDefinition)))) + // .widget(new LabelWidget(93, 65, () -> Integer + // .toString(1 + AoESymmetrical.getLayer(getBehaviorsTag(holder.getHeld()), defaultDefinition)))); + // } @Override public boolean shouldOpenUI(@NotNull Player player, @NotNull InteractionHand hand) { @@ -100,6 +99,7 @@ public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syn InteractionSyncHandler plusLayers = new InteractionSyncHandler(); plusLayers.setOnMousePressed(data1 -> AoESymmetrical.increaseLayer(tag, defaultDefinition)); return new ModularPanel("aoe_config") + .child(GTMuiWidgets.createTitleBar(held, 174, GTGuiTextures.BACKGROUND)) .child(Flow.column() .margin(5) .childPadding(2) @@ -112,8 +112,7 @@ public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syn .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("-")) .syncHandler(minusCols)) .child(new TextWidget<>(IKey.dynamic(() -> Component.literal(Integer.toString( - AoESymmetrical.getColumn(tag, defaultDefinition) - ))))) + 2 * AoESymmetrical.getColumn(tag, defaultDefinition) + 1))))) .child(new ButtonWidget<>() .background(GTGuiTextures.MC_BUTTON, IKey.str("+")) .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("+")) @@ -127,8 +126,7 @@ public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syn .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("-")) .syncHandler(minusRows)) .child(new TextWidget<>(IKey.dynamic(() -> Component.literal(Integer.toString( - AoESymmetrical.getRow(tag, defaultDefinition) - ))))) + 2 * AoESymmetrical.getRow(tag, defaultDefinition) + 1))))) .child(new ButtonWidget<>() .background(GTGuiTextures.MC_BUTTON, IKey.str("+")) .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("+")) @@ -142,8 +140,7 @@ public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syn .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("-")) .syncHandler(minusLayers)) .child(new TextWidget<>(IKey.dynamic(() -> Component.literal(Integer.toString( - AoESymmetrical.getLayer(tag, defaultDefinition) - ))))) + 2 * AoESymmetrical.getLayer(tag, defaultDefinition) + 1))))) .child(new ButtonWidget<>() .background(GTGuiTextures.MC_BUTTON, IKey.str("+")) .hoverBackground(GTGuiTextures.MC_BUTTON_HOVERED, IKey.str("+")) From 23d175d9ad91af9c941a65320f73b6c2414ab155 Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Fri, 26 Dec 2025 19:48:55 +0300 Subject: [PATCH 4/5] spotless --- src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java | 3 ++- .../gtceu/api/item/tool/behavior/IToolUIBehavior.java | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index 5ec3a058ab0..52cd3a1bd0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -882,7 +882,8 @@ default void playSound(Player player) { @Override default ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager syncManager, UISettings settings) { for (var behavior : getToolStats().getBehaviors()) { - if (!(behavior instanceof IToolUIBehavior uiBehavior) || !uiBehavior.shouldOpenUI(data.getPlayer(), data.getPlayer().getUsedItemHand())) { + if (!(behavior instanceof IToolUIBehavior uiBehavior) || + !uiBehavior.shouldOpenUI(data.getPlayer(), data.getPlayer().getUsedItemHand())) { continue; } return uiBehavior.buildUI(data, syncManager, settings); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java index 9a65438c067..1349f8fcaff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/behavior/IToolUIBehavior.java @@ -3,10 +3,7 @@ import com.gregtechceu.gtceu.api.mui.base.IUIHolder; import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryGuiData; import com.gregtechceu.gtceu.api.mui.factory.PlayerInventoryUIFactory; -import com.lowdragmc.lowdraglib.gui.factory.HeldItemUIFactory; -import com.lowdragmc.lowdraglib.gui.modular.ModularUI; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; From f9b117bcdee6bf75a9d7efdbc859377275c72c82 Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Sat, 27 Dec 2025 08:50:35 +0300 Subject: [PATCH 5/5] fix --- .../com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java index ca34efc3cb0..c5450d6c9b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java @@ -60,8 +60,8 @@ public static Flow createTitleBar(MachineDefinition definition, int panelWidth) } public static Flow createTitleBar(ItemStack displayItem, int panelWidth, UITexture background) { - String hatchName = displayItem.getHoverName().getString(); - hatchName = hatchName.replaceAll("§.", "").trim(); + String machineName = displayItem.getHoverName().getString(); + machineName = machineName.replaceAll("§.", "").trim(); int borderRadius = 5; int iconSize = 16;