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 a1c832bf32a..2f8c9759029 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 @@ -109,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/data/mui/GTMuiWidgets.java b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java index 0b24fb33566..d47cf44f747 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 @@ -24,6 +24,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; @@ -124,6 +125,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) { ItemSlotSyncHandler battery = new ItemSlotSyncHandler(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 e587e36b14d..8a5bb88fb8c 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 @@ -2,19 +2,23 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -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.feature.IUIMachine; +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.ItemSlotSyncHandler; +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.*; +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; @@ -32,34 +36,48 @@ import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets.createTankWidget; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class CokeOvenMachine extends PrimitiveWorkableMachine implements IUIMachine { +public class CokeOvenMachine extends PrimitiveWorkableMachine implements IMuiMachine { public CokeOvenMachine(BlockEntityCreationInfo info) { super(info); } - @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) { + ITheme uiTheme = ThemeAPI.INSTANCE.getTheme(getDefinition().getThemeId()); + return new ModularPanel(this.getDefinition().getName()) + .size(176, 166) + // Top half of the screen + .child(new ItemSlot().syncHandler(new ItemSlotSyncHandler( + new ModularSlot(importItems.storage, 0) + .slotGroup(new SlotGroup("import_items", 1)))) + .background(uiTheme.getItemSlotTheme().getTheme().getBackground(), + GTGuiTextures.PRIMITIVE_FURNACE_OVERLAY) + .margin(52, 0, 30, 0)) + + .child(new ItemSlot().syncHandler(new ItemSlotSyncHandler( + new ModularSlot(exportItems.storage, 0) + .slotGroup(new SlotGroup("export_items", 1)) + .accessibility(false, true))) + .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)) + + .child(createTankWidget() + .overlayTexture(GTGuiTextures.PRIMITIVE_LARGE_FLUID_TANK_OVERLAY) + .background(GTGuiTextures.PRIMITIVE_LARGE_FLUID_TANK) + .syncHandler(new FluidSlotSyncHandler( + 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)); } @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 db9859674ac..1570d72a83d 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;