From 73627c5225205f5722773ab073bdccb1976c80e2 Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Wed, 24 Dec 2025 01:51:00 +0300 Subject: [PATCH 1/8] move to mui(without TankWidget) --- .../multiblock/primitive/CokeOvenMachine.java | 100 ++++++++++++------ .../gtceu/common/mui/GTGuiTextures.java | 5 + 2 files changed, 73 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 6866527ec88..e1197fccc04 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -1,20 +1,22 @@ package com.gregtechceu.gtceu.common.machine.multiblock.primitive; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.UITemplate; -import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; +import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; +import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; +import com.gregtechceu.gtceu.api.mui.value.sync.ItemSlotSH; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; +import com.gregtechceu.gtceu.api.mui.widgets.ProgressWidget; +import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget; +import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot; +import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot; +import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup; +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; +import com.gregtechceu.gtceu.client.mui.screen.UISettings; +import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.lowdragmc.lowdraglib.gui.modular.ModularUI; -import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; -import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; -import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; -import com.lowdragmc.lowdraglib.gui.widget.ProgressWidget; - import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -34,32 +36,66 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class CokeOvenMachine extends PrimitiveWorkableMachine implements IUIMachine { +public class CokeOvenMachine extends PrimitiveWorkableMachine implements IMuiMachine { public CokeOvenMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } - @Override - public ModularUI createUI(Player entityPlayer) { - return new ModularUI(176, 166, this, entityPlayer) - .background(GuiTextures.PRIMITIVE_BACKGROUND) - .widget(new LabelWidget(5, 5, getBlockState().getBlock().getDescriptionId())) - .widget(new SlotWidget(importItems.storage, 0, 52, 30, true, true) - .setBackgroundTexture( - new GuiTextureGroup(GuiTextures.PRIMITIVE_SLOT, GuiTextures.PRIMITIVE_FURNACE_OVERLAY))) - .widget(new ProgressWidget(recipeLogic::getProgressPercent, 76, 32, 20, 15, - GuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR)) - .widget(new SlotWidget(exportItems.storage, 0, 103, 30, true, false) - .setBackgroundTexture( - new GuiTextureGroup(GuiTextures.PRIMITIVE_SLOT, GuiTextures.PRIMITIVE_FURNACE_OVERLAY))) - .widget(new TankWidget(exportFluids.getStorages()[0], 134, 13, 20, 58, true, false) - .setBackground(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK) - .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) - .setShowAmountOverlay(false) - .setOverlay(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK_OVERLAY)) - .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.PRIMITIVE_SLOT, 7, 84, - true)); + public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { + return new ModularPanel(this.getDefinition().getName()) + .size(176, 166) + .background(GTGuiTextures.BACKGROUND_PRIMITIVE) + // Top half of the screen + .child(createImportSlot(syncManager).margin(52, 0, 30, 0)) + .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) + .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) + .child(createExportSlot(syncManager).margin(103, 0, 30, 0)) + .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, GTGuiTextures.BACKGROUND_PRIMITIVE)) + .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); + } + + /* + * @Override + * public ModularUI createUI(Player entityPlayer) { + * return new ModularUI(176, 166, this, entityPlayer) + * .background(GuiTextures.PRIMITIVE_BACKGROUND) + * .widget(new LabelWidget(5, 5, getBlockState().getBlock().getDescriptionId())) + * .widget(new SlotWidget(importItems.storage, 0, 52, 30, true, true) + * .setBackgroundTexture( + * new GuiTextureGroup(GuiTextures.PRIMITIVE_SLOT, GuiTextures.PRIMITIVE_FURNACE_OVERLAY))) + * .widget(new ProgressWidget(recipeLogic::getProgressPercent, 76, 32, 20, 15, + * GuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR)) + * .widget(new SlotWidget(exportItems.storage, 0, 103, 30, true, false) + * .setBackgroundTexture( + * new GuiTextureGroup(GuiTextures.PRIMITIVE_SLOT, GuiTextures.PRIMITIVE_FURNACE_OVERLAY))) + * .widget(new TankWidget(exportFluids.getStorages()[0], 134, 13, 20, 58, true, false) + * .setBackground(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK) + * .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) + * .setShowAmountOverlay(false) + * .setOverlay(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK_OVERLAY)) + * .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.PRIMITIVE_SLOT, 7, 84, + * true)); + * } + */ + private ItemSlot createImportSlot(PanelSyncManager syncManager) { + syncManager.syncValue("import", new ItemSlotSH( + new ModularSlot(importItems.storage, 0) + .slotGroup(new SlotGroup("import", 1)) + .accessibility(true, true))); + return new ItemSlot() + .syncHandler("import", 0) + .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); + } + + private ItemSlot createExportSlot(PanelSyncManager syncManager) { + syncManager.syncValue("export", new ItemSlotSH( + new ModularSlot(exportItems.storage, 0) + .slotGroup(new SlotGroup("export", 1)) + .accessibility(false, true))); + return new ItemSlot() + .syncHandler("export", 0) + .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java index 9993ccec3a1..586b14a5881 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java @@ -313,6 +313,9 @@ public static class IDs { ColorType.DEFAULT); public static final UITexture FURNACE_OVERLAY_BRONZE = fullImage("textures/gui/overlay/furnace_overlay_bronze.png"); public static final UITexture FURNACE_OVERLAY_STEEL = fullImage("textures/gui/overlay/furnace_overlay_steel.png"); + public static final UITexture PRIMITIVE_FURNACE_OVERLAY = fullImage( + "textures/gui/primitive/overlay_primitive_furnace.png", + ColorType.DEFAULT); public static final UITexture HAMMER_OVERLAY = fullImage("textures/gui/overlay/hammer_overlay.png", ColorType.DEFAULT); public static final UITexture HAMMER_OVERLAY_BRONZE = fullImage("textures/gui/overlay/hammer_overlay_bronze.png"); @@ -436,6 +439,8 @@ public static class IDs { // PROGRESS BARS public static final UITexture PROGRESS_BAR_ARC_FURNACE = progressBar( "textures/gui/progress_bar/progress_bar_arc_furnace.png", ColorType.DEFAULT); + public static final UITexture PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR = progressBar( + "textures/gui/primitive/progress_bar_primitive_blast_furnace.png", ColorType.DEFAULT); public static final UITexture PROGRESS_BAR_ARROW = progressBar("textures/gui/progress_bar/progress_bar_arrow.png", ColorType.DEFAULT); public static final UITexture PROGRESS_BAR_ARROW_BRONZE = progressBar( From b621e78420a6694c2660ef381d0ec320c3e872d5 Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Wed, 24 Dec 2025 02:21:45 +0300 Subject: [PATCH 2/8] add fluidSlot --- .../multiblock/primitive/CokeOvenMachine.java | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index e1197fccc04..04b2588929f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -4,13 +4,14 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; +import com.gregtechceu.gtceu.api.mui.value.sync.FluidSlotSyncHandler; import com.gregtechceu.gtceu.api.mui.value.sync.ItemSlotSH; import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.mui.widgets.ProgressWidget; import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget; +import com.gregtechceu.gtceu.api.mui.widgets.slot.FluidSlot; import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot; import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot; -import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup; import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; @@ -47,10 +48,23 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet .size(176, 166) .background(GTGuiTextures.BACKGROUND_PRIMITIVE) // Top half of the screen - .child(createImportSlot(syncManager).margin(52, 0, 30, 0)) + .child(new ItemSlot().syncHandler(new ItemSlotSH( + new ModularSlot(importItems.storage, 0) + .slotGroup("import_items") + .accessibility(true, true))) + .margin(52, 30)) .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) - .child(createExportSlot(syncManager).margin(103, 0, 30, 0)) + + .child(new ItemSlot().syncHandler(new ItemSlotSH( + new ModularSlot(exportItems.storage, 0) + .slotGroup("export_items") + .accessibility(false, true))) + .margin(103, 30)) + .child(new FluidSlot() + .syncHandler(new FluidSlotSyncHandler( + exportFluids.getStorages()[0])) + .margin(121, 30)) .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, GTGuiTextures.BACKGROUND_PRIMITIVE)) .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); } @@ -78,25 +92,27 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet * true)); * } */ - private ItemSlot createImportSlot(PanelSyncManager syncManager) { - syncManager.syncValue("import", new ItemSlotSH( - new ModularSlot(importItems.storage, 0) - .slotGroup(new SlotGroup("import", 1)) - .accessibility(true, true))); - return new ItemSlot() - .syncHandler("import", 0) - .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); - } - - private ItemSlot createExportSlot(PanelSyncManager syncManager) { - syncManager.syncValue("export", new ItemSlotSH( - new ModularSlot(exportItems.storage, 0) - .slotGroup(new SlotGroup("export", 1)) - .accessibility(false, true))); - return new ItemSlot() - .syncHandler("export", 0) - .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); - } + /* + * private ItemSlot createImportItemSlot(PanelSyncManager syncManager) { + * syncManager.syncValue("import", new ItemSlotSH( + * new ModularSlot(importItems.storage, 0) + * .slotGroup(new SlotGroup("import", 1)) + * .accessibility(true, true))); + * return new ItemSlot() + * .syncHandler("import", 0) + * .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); + * } + * + * private ItemSlot createExportItemSlot(PanelSyncManager syncManager) { + * syncManager.syncValue("export", new ItemSlotSH( + * new ModularSlot(exportItems.storage, 0) + * .slotGroup(new SlotGroup("export", 1)) + * .accessibility(false, true))); + * return new ItemSlot() + * .syncHandler("export", 0) + * .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); + * } + */ @Override public void animateTick(RandomSource random) { From 7069a9af60a5c63893bd22b5f0bed2b45fe000a0 Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Wed, 24 Dec 2025 03:15:32 +0300 Subject: [PATCH 3/8] now works fine --- .../multiblock/primitive/CokeOvenMachine.java | 37 +++++-------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 04b2588929f..3c3eef7a22c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.mui.widgets.slot.FluidSlot; import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot; import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot; +import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup; import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; @@ -50,21 +51,22 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet // Top half of the screen .child(new ItemSlot().syncHandler(new ItemSlotSH( new ModularSlot(importItems.storage, 0) - .slotGroup("import_items") + .slotGroup(new SlotGroup("import_items", 1)) .accessibility(true, true))) - .margin(52, 30)) - .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) - .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) + .margin(52, 0, 30, 0)) .child(new ItemSlot().syncHandler(new ItemSlotSH( new ModularSlot(exportItems.storage, 0) - .slotGroup("export_items") + .slotGroup(new SlotGroup("export_items", 1)) .accessibility(false, true))) - .margin(103, 30)) + .margin(103, 0, 30, 0)) + .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) + .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) + .child(new FluidSlot() .syncHandler(new FluidSlotSyncHandler( exportFluids.getStorages()[0])) - .margin(121, 30)) + .margin(121, 0, 30, 0)) .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, GTGuiTextures.BACKGROUND_PRIMITIVE)) .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); } @@ -92,27 +94,6 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet * true)); * } */ - /* - * private ItemSlot createImportItemSlot(PanelSyncManager syncManager) { - * syncManager.syncValue("import", new ItemSlotSH( - * new ModularSlot(importItems.storage, 0) - * .slotGroup(new SlotGroup("import", 1)) - * .accessibility(true, true))); - * return new ItemSlot() - * .syncHandler("import", 0) - * .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); - * } - * - * private ItemSlot createExportItemSlot(PanelSyncManager syncManager) { - * syncManager.syncValue("export", new ItemSlotSH( - * new ModularSlot(exportItems.storage, 0) - * .slotGroup(new SlotGroup("export", 1)) - * .accessibility(false, true))); - * return new ItemSlot() - * .syncHandler("export", 0) - * .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY); - * } - */ @Override public void animateTick(RandomSource random) { From 7857dac88793fdb1f66d57f1cd8e845534c879fc Mon Sep 17 00:00:00 2001 From: zetrock1 Date: Wed, 24 Dec 2025 03:20:00 +0300 Subject: [PATCH 4/8] add slot background --- .../common/machine/multiblock/primitive/CokeOvenMachine.java | 2 ++ .../java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 3c3eef7a22c..c6e764688ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -53,12 +53,14 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet new ModularSlot(importItems.storage, 0) .slotGroup(new SlotGroup("import_items", 1)) .accessibility(true, true))) + .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) .margin(52, 0, 30, 0)) .child(new ItemSlot().syncHandler(new ItemSlotSH( new ModularSlot(exportItems.storage, 0) .slotGroup(new SlotGroup("export_items", 1)) .accessibility(false, true))) + .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) .margin(103, 0, 30, 0)) .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java index 586b14a5881..a1620b5f263 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java @@ -296,6 +296,8 @@ public static class IDs { public static final UITexture DUST_OVERLAY = fullImage("textures/gui/overlay/dust_overlay.png", ColorType.DEFAULT); public static final UITexture DUST_OVERLAY_BRONZE = fullImage("textures/gui/overlay/dust_overlay_bronze.png"); public static final UITexture DUST_OVERLAY_STEEL = fullImage("textures/gui/overlay/dust_overlay_steel.png"); + public static final UITexture PRIMITIVE_DUST_OVERLAY = fullImage( + "textures/gui/primitive/overlay_primitive_dust.png", ColorType.DEFAULT); public static final UITexture EXTRACTOR_OVERLAY = fullImage("textures/gui/overlay/extractor_overlay.png", ColorType.DEFAULT); public static final UITexture EXTRACTOR_OVERLAY_BRONZE = fullImage( @@ -334,6 +336,9 @@ public static class IDs { public static final UITexture IN_SLOT_OVERLAY_STEEL = fullImage("textures/gui/overlay/in_slot_overlay_steel.png"); public static final UITexture INGOT_OVERLAY = fullImage("textures/gui/overlay/ingot_overlay.png", ColorType.DEFAULT); + public static final UITexture PRIMITIVE_INGOT_OVERLAY = fullImage( + "textures/gui/primitive/overlay_primitive_ingot.png", + ColorType.DEFAULT); public static final UITexture INT_CIRCUIT_OVERLAY = fullImage("textures/gui/overlay/int_circuit_overlay.png", ColorType.DEFAULT); public static final UITexture LENS_OVERLAY = fullImage("textures/gui/overlay/lens_overlay.png", ColorType.DEFAULT); From ee253ef9e56b526f0b3d33fbad2a2efb92db3fea Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Tue, 23 Dec 2025 20:16:01 -0700 Subject: [PATCH 5/8] [MUI2] Fix Theme Deserialization (#4373) --- src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java | 3 +++ .../com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index fd04d3b2fac..405c9c4b7b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.item.LampBlockItem; import com.gregtechceu.gtceu.api.item.QuantumTankMachineItem; import com.gregtechceu.gtceu.api.mui.animation.AnimatorManager; +import com.gregtechceu.gtceu.api.mui.drawable.DrawableSerialization; import com.gregtechceu.gtceu.client.model.item.FacadeUnbakedModel; import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; import com.gregtechceu.gtceu.client.mui.CursorHandler; @@ -88,6 +89,8 @@ public static void init() { Layers.registerLayer(OreRenderLayer::new, "ore_veins"); Layers.registerLayer(FluidRenderLayer::new, "bedrock_fluids"); ForgeCommonEventListener.registerCapes(new RegisterGTCapesEvent()); + + DrawableSerialization.init(); } initializeDynamicRenders(); } diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index beeb8ad9a40..29c7630021c 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; +import com.gregtechceu.gtceu.api.mui.theme.ThemeManager; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; @@ -258,6 +259,7 @@ public static void registerReloadListeners(AddReloadListenerEvent event) { event.addListener(new GTOreLoader()); event.addListener(new BedrockFluidLoader()); event.addListener(new BedrockOreLoader()); + event.addListener(new ThemeManager()); } @SubscribeEvent From 3e618caadcf563984745b58c1563c1fce79ff7b2 Mon Sep 17 00:00:00 2001 From: noname Date: Wed, 24 Dec 2025 16:53:47 +0300 Subject: [PATCH 6/8] themes --- .../common/data/machines/GTMultiMachines.java | 2 ++ .../multiblock/primitive/CokeOvenMachine.java | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index 019c13fbeea..c736ca73ae7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -29,6 +29,7 @@ import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveBlastFurnaceMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitivePumpMachine; import com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine; +import com.gregtechceu.gtceu.common.mui.GTGuiTheme; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTUtil; @@ -108,6 +109,7 @@ public class GTMultiMachines { .build()) .workableCasingModel(GTCEu.id("block/casings/solid/machine_coke_bricks"), GTCEu.id("block/multiblock/coke_oven")) + .themeId((i) -> GTGuiTheme.PRIMITIVE.getId()) .register(); public static final MultiblockMachineDefinition PRIMITIVE_BLAST_FURNACE = REGISTRATE diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index c6e764688ed..7ca16291447 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -3,7 +3,10 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; +import com.gregtechceu.gtceu.api.mui.base.ITheme; +import com.gregtechceu.gtceu.api.mui.drawable.UITexture; import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; +import com.gregtechceu.gtceu.api.mui.theme.ThemeAPI; import com.gregtechceu.gtceu.api.mui.value.sync.FluidSlotSyncHandler; import com.gregtechceu.gtceu.api.mui.value.sync.ItemSlotSH; import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; @@ -45,22 +48,24 @@ public CokeOvenMachine(IMachineBlockEntity holder, Object... args) { } public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { + ITheme uiTheme = ThemeAPI.INSTANCE.getTheme(getDefinition().getThemeId()); return new ModularPanel(this.getDefinition().getName()) .size(176, 166) - .background(GTGuiTextures.BACKGROUND_PRIMITIVE) // Top half of the screen .child(new ItemSlot().syncHandler(new ItemSlotSH( new ModularSlot(importItems.storage, 0) .slotGroup(new SlotGroup("import_items", 1)) .accessibility(true, true))) - .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) + .background(uiTheme.getItemSlotTheme().getTheme().getBackground(), + GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) .margin(52, 0, 30, 0)) .child(new ItemSlot().syncHandler(new ItemSlotSH( new ModularSlot(exportItems.storage, 0) .slotGroup(new SlotGroup("export_items", 1)) .accessibility(false, true))) - .background(GTGuiTextures.SLOT_PRIMITIVE, GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) + .background(uiTheme.getItemSlotTheme().getTheme().getBackground(), + GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) .margin(103, 0, 30, 0)) .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) @@ -69,7 +74,8 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet .syncHandler(new FluidSlotSyncHandler( exportFluids.getStorages()[0])) .margin(121, 0, 30, 0)) - .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, GTGuiTextures.BACKGROUND_PRIMITIVE)) + .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, (UITexture) uiTheme.getPanelTheme().getTheme() + .getBackground())) .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); } From 3e924267cf1227d8ecb93f0649ea46148543e3bc Mon Sep 17 00:00:00 2001 From: noname Date: Wed, 24 Dec 2025 17:07:21 +0300 Subject: [PATCH 7/8] finally --- .../common/machine/multiblock/primitive/CokeOvenMachine.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 7ca16291447..da03d8b6b30 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -54,8 +54,7 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet // Top half of the screen .child(new ItemSlot().syncHandler(new ItemSlotSH( new ModularSlot(importItems.storage, 0) - .slotGroup(new SlotGroup("import_items", 1)) - .accessibility(true, true))) + .slotGroup(new SlotGroup("import_items", 1)))) .background(uiTheme.getItemSlotTheme().getTheme().getBackground(), GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) .margin(52, 0, 30, 0)) From 27abb1902ea54b90eaaf1e2d4ebc670633fdb912 Mon Sep 17 00:00:00 2001 From: noname Date: Thu, 25 Dec 2025 04:20:00 +0300 Subject: [PATCH 8/8] finally normal tank widget --- .../gtceu/common/data/mui/GTMuiWidgets.java | 5 +++++ .../multiblock/primitive/CokeOvenMachine.java | 16 +++++++++------- .../gtceu/common/mui/GTGuiTextures.java | 6 ++++++ .../gregtechceu/gtceu/common/mui/GTGuiTheme.java | 1 + 4 files changed, 21 insertions(+), 7 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..72a0279781d 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 @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; import com.gregtechceu.gtceu.api.mui.widgets.layout.Grid; import com.gregtechceu.gtceu.api.mui.widgets.layout.Row; +import com.gregtechceu.gtceu.api.mui.widgets.slot.FluidSlot; import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot; import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot; import com.gregtechceu.gtceu.api.recipe.gui.GTRecipeTypeUILayout; @@ -111,6 +112,10 @@ public static ProgressWidget createProgressBar(IRecipeLogicMachine workableMachi .progress(() -> workableMachine.getProgress() / (double) workableMachine.getMaxProgress()); } + public static FluidSlot createTankWidget() { + return new FluidSlot().size(20, 58).alwaysShowFull(false); + } + public static ItemSlot createBatterySlot(SimpleTieredMachine tieredMachine, PanelSyncManager syncManager) { ItemSlotSH battery = new ItemSlotSH(new ModularSlot(tieredMachine.getChargerInventory(), 0)); syncManager.syncValue("battery", battery); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index da03d8b6b30..4a1ea8a0a1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -12,10 +12,7 @@ import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.mui.widgets.ProgressWidget; import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget; -import com.gregtechceu.gtceu.api.mui.widgets.slot.FluidSlot; -import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot; -import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot; -import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup; +import com.gregtechceu.gtceu.api.mui.widgets.slot.*; import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; @@ -39,6 +36,8 @@ import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets.createTankWidget; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CokeOvenMachine extends PrimitiveWorkableMachine implements IMuiMachine { @@ -69,10 +68,13 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet .child(new ProgressWidget().progress(recipeLogic::getProgressPercent).size(20, 15) .texture(GTGuiTextures.PRIMITIVE_BLAST_FURNACE_PROGRESS_BAR, 18).margin(76, 32)) - .child(new FluidSlot() + .child(createTankWidget() + .overlayTexture(GTGuiTextures.PRIMITIVE_LARGE_FLUID_TANK_OVERLAY) + .background(GTGuiTextures.PRIMITIVE_LARGE_FLUID_TANK) .syncHandler(new FluidSlotSyncHandler( - exportFluids.getStorages()[0])) - .margin(121, 0, 30, 0)) + exportFluids.getStorages()[0]) + .canFillSlot(false)) + .margin(134, 0, 13, 0)) .child(GTMuiWidgets.createTitleBar(getDefinition(), 176, (UITexture) uiTheme.getPanelTheme().getTheme() .getBackground())) .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java index ae7ef659c02..4985060b84c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java @@ -311,6 +311,12 @@ public static class IDs { public static final UITexture PRIMITIVE_FURNACE_OVERLAY = fullImage( "textures/gui/primitive/overlay_primitive_furnace.png", ColorType.DEFAULT); + public static final UITexture PRIMITIVE_LARGE_FLUID_TANK = fullImage( + "textures/gui/primitive/primitive_large_fluid_tank.png", + ColorType.DEFAULT); + public static final UITexture PRIMITIVE_LARGE_FLUID_TANK_OVERLAY = fullImage( + "textures/gui/primitive/primitive_large_fluid_tank_overlay.png", + ColorType.DEFAULT); public static final UITexture HAMMER_OVERLAY = fullImage("textures/gui/overlay/hammer_overlay.png", ColorType.DEFAULT); public static final UITexture HAMMER_OVERLAY_BRONZE = fullImage("textures/gui/overlay/hammer_overlay_bronze.png"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTheme.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTheme.java index 3b23436d17b..26a9f09276a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTheme.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTheme.java @@ -66,6 +66,7 @@ public class GTGuiTheme { public static final GTGuiTheme PRIMITIVE = templateBuilder("gregtech_primitive") .panel(GTGuiTextures.IDs.PRIMITIVE_BACKGROUND) .itemSlot(GTGuiTextures.IDs.PRIMITIVE_SLOT) + .fluidSlot(GTGuiTextures.IDs.PRIMITIVE_SLOT) .build(); private final String themeId;