diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index c6df7873d8..3189bc754e 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3085,19 +3085,16 @@ "gtceu.machine.me_import_item_hatch.configs.tooltip": "ʞɔoʇs uı sǝdʎʇ ɯǝʇı 9Ɩ sdǝǝʞ", "gtceu.machine.miner.chunkradius": "%d :snıpɐᴚ ʞunɥƆ", "gtceu.machine.miner.fluid_usage": "˙ʞɔoןɔɹǝʌo ɹǝd pǝןqnop 'ㄥ§%sɟ§ ɟoㄥ§ ʇ/ᗺɯ %dɟ§ sǝs∩", - "gtceu.machine.miner.minex": "%d :Xɯ", - "gtceu.machine.miner.miney": "%d :ʎɯ", - "gtceu.machine.miner.minez": "%d :Zɯ", "gtceu.machine.miner.multi.description": "˙ǝɹo ɟo ʎʇıʇuɐnb ǝbnɥ sǝɔnpoɹd puɐ ɐǝɹɐ ǝbɹɐן ɐ sɹǝʌoɔ ʇɐɥʇ ǝuıɥɔɐɯ buıuıɯ ʞɔoןqıʇןnɯ Ɐ", "gtceu.machine.miner.multi.modes": "˙sǝpoW pǝubıןⱯ ʞunɥƆ puɐ ɥɔno⟘ ʞןıS sɐH", "gtceu.machine.miner.multi.production": "˙ㄥ§ɹoʇɐɹǝɔɐWɟ§ ɐ uɐɥʇ ǝɹo pǝɥsnɹɔ ǝɹoɯ ㄥ§xƐɟ§ sǝɔnpoɹԀ", "gtceu.machine.miner.per_block": "ʞɔoןᗺ ɹǝdㄥ§ %dsɟ§ sǝʞɐʇㄥ§", "gtceu.machine.miner.progress": "%d/%d :ssǝɹboɹԀ", "gtceu.machine.miner.radius": "%d :snıpɐᴚ", - "gtceu.machine.miner.startx": "%d :Xs", - "gtceu.machine.miner.starty": "%d :ʎs", - "gtceu.machine.miner.startz": "%d :Zs", "gtceu.machine.miner.tooltip": "ɐǝɹɐㄥ§ %sx%sɟ§ sɐ sʇɹɐʇS ¡ɹǝuıW ǝɥʇ ʍoןǝq sǝɹo sǝuıWㄥ§", + "gtceu.machine.miner.x": "%d :Xɯ '%d :Xs", + "gtceu.machine.miner.y": "%d :ʎɯ '%d :ʎs", + "gtceu.machine.miner.z": "%d :Zɯ '%d :Zs", "gtceu.machine.muffle.off": "pǝןqɐsıᗡ :buıןɟɟnW punoS", "gtceu.machine.muffle.on": "pǝןqɐuƎ :buıןɟɟnW punoS", "gtceu.machine.muffler_hatch.tooltip.0": "sǝuıɥɔɐɯ ɯoɹɟ ǝʇsɐʍ sɹǝʌoɔǝᴚ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index bef044ec8c..c64082ced6 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3085,19 +3085,16 @@ "gtceu.machine.me_import_item_hatch.configs.tooltip": "Keeps 16 item types in stock", "gtceu.machine.miner.chunkradius": "Chunk Radius: %d", "gtceu.machine.miner.fluid_usage": "Uses §f%d mB/t §7of §f%s§7, doubled per overclock.", - "gtceu.machine.miner.minex": "mX: %d", - "gtceu.machine.miner.miney": "mY: %d", - "gtceu.machine.miner.minez": "mZ: %d", "gtceu.machine.miner.multi.description": "A multiblock mining machine that covers a large area and produces huge quantity of ore.", "gtceu.machine.miner.multi.modes": "Has Silk Touch and Chunk Aligned Modes.", "gtceu.machine.miner.multi.production": "Produces §f3x§7 more crushed ore than a §fMacerator§7.", "gtceu.machine.miner.per_block": "§7takes §f%ds §7per Block", "gtceu.machine.miner.progress": "Progress: %d/%d", "gtceu.machine.miner.radius": "Radius: %d", - "gtceu.machine.miner.startx": "sX: %d", - "gtceu.machine.miner.starty": "sY: %d", - "gtceu.machine.miner.startz": "sZ: %d", "gtceu.machine.miner.tooltip": "§7Mines ores below the Miner! Starts as §f%sx%s §7area", + "gtceu.machine.miner.x": "sX: %d, mX: %d", + "gtceu.machine.miner.y": "sY: %d, mY: %d", + "gtceu.machine.miner.z": "sZ: %d, mZ: %d", "gtceu.machine.muffle.off": "Sound Muffling: Disabled", "gtceu.machine.muffle.on": "Sound Muffling: Enabled", "gtceu.machine.muffler_hatch.tooltip.0": "Recovers waste from machines", diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 33e7bef000..1cbab0e678 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -361,32 +361,6 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet return panel; } - /* - * @Override - * public ModularUI createUI(Player entityPlayer) { - * return new ModularUI(176, 166, this, entityPlayer) - * .background(GuiTextures.BACKGROUND_STEAM.get(isHighPressure)) - * .widget(new LabelWidget(6, 6, getBlockState().getBlock().getDescriptionId())) - * .widget(new ProgressWidget(this::getTemperaturePercent, 96, 26, 10, 54) - * .setProgressTexture(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(isHighPressure), - * GuiTextures.PROGRESS_BAR_BOILER_HEAT) - * .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) - * .setDynamicHoverTips(pct -> I18n.get("gtceu.multiblock.large_boiler.temperature", - * currentTemperature + 274, getMaxTemperature() + 274))) - * .widget(new TankWidget(waterTank.getStorages()[0], 83, 26, 10, 54, false, true) - * .setShowAmount(false) - * .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) - * .setBackground(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(isHighPressure))) - * .widget(new TankWidget(steamTank.getStorages()[0], 70, 26, 10, 54, true, false) - * .setShowAmount(false) - * .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) - * .setBackground(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(isHighPressure))) - * .widget(new ImageWidget(43, 44, 18, 18, GuiTextures.CANISTER_OVERLAY_STEAM.get(isHighPressure))) - * .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), - * GuiTextures.SLOT_STEAM.get(isHighPressure), 7, 84, true)); - * } - */ - ////////////////////////////////////// // ********* Client *********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index eea750ec50..f48b98a929 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -155,6 +155,7 @@ public class GTMachines { int maxArea = IMiner.getWorkingArea(isHP ? 6 : 4); tooltip.add(Component.translatable("gtceu.universal.tooltip.working_area", maxArea, maxArea)); }) + .themeId((i) -> i > 0 ? GTGuiTheme.STEEL.getId() : GTGuiTheme.BRONZE.getId()) .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.UP) .workableSteamHullModel(isHP, isHP ? GTCEu.id("block/machines/high_pressure_steam_miner") : diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index 4d3f886fcd..4440ed17fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; import com.gregtechceu.gtceu.api.mui.utils.Alignment; +import com.gregtechceu.gtceu.api.mui.utils.Color; import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.mui.widgets.TextWidget; import com.gregtechceu.gtceu.api.mui.widgets.layout.Column; @@ -141,15 +142,15 @@ protected void chargeBattery() { } } - private void addDisplayText(@NotNull List textList) { + private void addDisplayText(List textList) { int workingArea = IMiner.getWorkingArea(getRecipeLogic().getCurrentRadius()); textList.add(recipeLogic.getCustomProgressLine()); - textList.add(Component.translatable("gtceu.machine.miner.startx", getRecipeLogic().getX()).append(" ") - .append(Component.translatable("gtceu.machine.miner.minex", getRecipeLogic().getMineX()))); - textList.add(Component.translatable("gtceu.machine.miner.starty", getRecipeLogic().getY()).append(" ") - .append(Component.translatable("gtceu.machine.miner.miney", getRecipeLogic().getMineY()))); - textList.add(Component.translatable("gtceu.machine.miner.startz", getRecipeLogic().getZ()).append(" ") - .append(Component.translatable("gtceu.machine.miner.minez", getRecipeLogic().getMineZ()))); + textList.add( + Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getX(), getRecipeLogic().getMineX())); + textList.add( + Component.translatable("gtceu.machine.miner.y", getRecipeLogic().getY(), getRecipeLogic().getMineY())); + textList.add( + Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getZ(), getRecipeLogic().getMineZ())); textList.add(Component.translatable("gtceu.universal.tooltip.working_area", workingArea, workingArea)); if (getRecipeLogic().isDone()) textList.add(Component.translatable("gtceu.multiblock.large_miner.done") @@ -242,7 +243,7 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet .map(Component::copy) .reduce((a, b) -> a.append("\n").append(b)) .orElse(Component.empty()); - })))) + })).color(Color.WHITE.main))) .child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(exportItems, "export_inv", syncManager))) .child(new Column() diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index 049a773e40..29f075a945 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -4,39 +4,43 @@ import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IMiner; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.UITemplate; -import com.gregtechceu.gtceu.api.gui.widget.PredicatedImageWidget; -import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.steam.SteamWorkableMachine; import com.gregtechceu.gtceu.api.machine.trait.ExhaustVentMachineTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; +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.utils.Alignment; +import com.gregtechceu.gtceu.api.mui.utils.Color; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; +import com.gregtechceu.gtceu.api.mui.widgets.TextWidget; +import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; +import com.gregtechceu.gtceu.client.mui.screen.UISettings; +import com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil; +import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; import com.gregtechceu.gtceu.common.item.behavior.PortableScannerBehavior; import com.gregtechceu.gtceu.common.machine.trait.miner.SteamMinerLogic; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.gregtechceu.gtceu.utils.ISubscription; -import com.lowdragmc.lowdraglib.gui.modular.ModularUI; -import com.lowdragmc.lowdraglib.gui.widget.ComponentPanelWidget; -import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; -import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; - import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; import net.minecraftforge.fluids.capability.IFluidHandler; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -48,7 +52,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamMinerMachine extends SteamWorkableMachine implements IControllable, - IUIMachine, IDataInfoProvider, IMiner { + IDataInfoProvider, IMiner, IMuiMachine { @SaveField public final NotifiableItemStackHandler importItems; @@ -148,53 +152,64 @@ protected void autoOutput() { ////////////////////////////////////// // *********** GUI ***********// ////////////////////////////////////// + @Override - public ModularUI createUI(Player entityPlayer) { - int rowSize = (int) Math.sqrt(inventorySize); - - ModularUI builder = new ModularUI(175, 176, this, entityPlayer) - .background(GuiTextures.BACKGROUND_STEAM.get(isHighPressure())); - builder.widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), - GuiTextures.SLOT_STEAM.get(isHighPressure()), 7, - 94, true)); - - for (int y = 0; y < rowSize; y++) { - for (int x = 0; x < rowSize; x++) { - int index = y * rowSize + x; - builder.widget(new SlotWidget(exportItems, index, 142 - rowSize * 9 + x * 18, 18 + y * 18, true, false) - .setBackgroundTexture(GuiTextures.SLOT_STEAM.get(isHighPressure()))); - } + public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { + var theme = getDefinition().getThemeId(); + var backgroundTexture = (UITexture) ThemeAPI.INSTANCE.getTheme(theme).getPanelTheme().getTheme() + .getBackground(); + if (backgroundTexture == null) { + backgroundTexture = GTGuiTextures.BACKGROUND; } - builder.widget(new LabelWidget(5, 5, getBlockState().getBlock().getDescriptionId())); - builder.widget(new PredicatedImageWidget(79, 42, 18, 18, GuiTextures.INDICATOR_NO_STEAM.get(isHighPressure())) - .setPredicate(() -> !drainInput(true))); - builder.widget(new ImageWidget(7, 16, 105, 75, GuiTextures.DISPLAY_STEAM.get(isHighPressure()))); - builder.widget(new ComponentPanelWidget(10, 19, this::addDisplayText) - .setMaxWidthLimit(84)); - builder.widget(new ComponentPanelWidget(70, 19, this::addDisplayText2) - .setMaxWidthLimit(84)); - - return builder; + return new ModularPanel(getDefinition().getName()) + .width(200) + .child(GTMuiWidgets.createTitleBar(getDefinition(), 200)) + .bindPlayerInventory() + .child(Flow.row() + .coverChildrenHeight() + .margin(5) + .childPadding(5) + .widthRel(1f) + .child(Flow.column() + .crossAxisAlignment(Alignment.CrossAxis.START) + .padding(5) + .background(GTGuiTextures.DISPLAY) + .widthRel(.6f) + .coverChildrenHeight() + .child(new TextWidget<>(IKey.dynamic(() -> { + List text = new ArrayList<>(); + addDisplayText(text); + return text.stream() + .map(Component::copy) + .reduce((a, b) -> a.append("\n").append(b)) + .orElse(Component.empty()); + })).color(Color.WHITE.main))) + .child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(exportItems, "export_inv", + syncManager).alignX(0.875f).alignY(0.5f))); } - void addDisplayText(List textList) { + private void addDisplayText(List textList) { int workingArea = IMiner.getWorkingArea(getRecipeLogic().getCurrentRadius()); - textList.add(Component.translatable("gtceu.machine.miner.startx", this.getRecipeLogic().getX())); - textList.add(Component.translatable("gtceu.machine.miner.starty", this.getRecipeLogic().getY())); - textList.add(Component.translatable("gtceu.machine.miner.startz", this.getRecipeLogic().getZ())); + textList.add(recipeLogic.getCustomProgressLine()); + textList.add( + Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getX(), getRecipeLogic().getMineX())); + textList.add( + Component.translatable("gtceu.machine.miner.y", getRecipeLogic().getY(), getRecipeLogic().getMineY())); + textList.add( + Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getZ(), getRecipeLogic().getMineZ())); textList.add(Component.translatable("gtceu.universal.tooltip.working_area", workingArea, workingArea)); - if (this.getRecipeLogic().isDone()) + if (getRecipeLogic().isDone()) textList.add(Component.translatable("gtceu.multiblock.large_miner.done") - .withStyle(ChatFormatting.GREEN)); - else if (this.getRecipeLogic().isWorking()) + .setStyle(Style.EMPTY.withColor(ChatFormatting.GREEN))); + else if (getRecipeLogic().isWorking()) textList.add(Component.translatable("gtceu.multiblock.large_miner.working") - .withStyle(ChatFormatting.GOLD)); + .setStyle(Style.EMPTY.withColor(ChatFormatting.GOLD))); else if (!this.isWorkingEnabled()) textList.add(Component.translatable("gtceu.multiblock.work_paused")); if (getRecipeLogic().isInventoryFull()) textList.add(Component.translatable("gtceu.multiblock.large_miner.invfull") - .withStyle(ChatFormatting.RED)); + .setStyle(Style.EMPTY.withColor(ChatFormatting.RED))); if (exhaustVentTrait.isVentingBlocked()) textList.add(Component.translatable("gtceu.multiblock.large_miner.vent") .withStyle(ChatFormatting.RED)); @@ -203,12 +218,6 @@ else if (!drainInput(true)) .withStyle(ChatFormatting.RED)); } - void addDisplayText2(List textList) { - textList.add(Component.translatable("gtceu.machine.miner.minex", this.getRecipeLogic().getMineX())); - textList.add(Component.translatable("gtceu.machine.miner.miney", this.getRecipeLogic().getMineY())); - textList.add(Component.translatable("gtceu.machine.miner.minez", this.getRecipeLogic().getMineZ())); - } - @Override public boolean drainInput(boolean simulate) { long resultSteam = steamTank.getFluidInTank(0).getAmount() - energyPerTick; @@ -220,7 +229,6 @@ public boolean drainInput(boolean simulate) { return false; } - @NotNull @Override public List getDataInfo(PortableScannerBehavior.DisplayMode mode) { if (mode == PortableScannerBehavior.DisplayMode.SHOW_ALL || diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuis.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuis.java index 3108211f62..e55977acc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuis.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuis.java @@ -20,8 +20,8 @@ public static ModularPanel createPanel(String name, int width, int height) { return ModularPanel.defaultPanel(name, width, height); } - public static ModularPanel createPanel(MetaMachine mte, int width, int height) { - return createPanel(mte.getDefinition().getId().getPath(), width, height); + public static ModularPanel createPanel(MetaMachine machine, int width, int height) { + return createPanel(machine.getDefinition().getId().getPath(), width, height); } public static ModularPanel createPanel(CoverBehavior cover, int width, int height) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java index 6415bc9de8..93348fc679 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -476,12 +476,9 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.machine.miner.fluid_usage", "Uses §f%d mB/t §7of §f%s§7, doubled per overclock."); provider.add("gtceu.machine.miner.multi.description", "A multiblock mining machine that covers a large area and produces huge quantity of ore."); - provider.add("gtceu.machine.miner.startx", "sX: %d"); - provider.add("gtceu.machine.miner.starty", "sY: %d"); - provider.add("gtceu.machine.miner.startz", "sZ: %d"); - provider.add("gtceu.machine.miner.minex", "mX: %d"); - provider.add("gtceu.machine.miner.miney", "mY: %d"); - provider.add("gtceu.machine.miner.minez", "mZ: %d"); + provider.add("gtceu.machine.miner.x", "sX: %d, mX: %d"); + provider.add("gtceu.machine.miner.y", "sY: %d, mY: %d"); + provider.add("gtceu.machine.miner.z", "sZ: %d, mZ: %d"); provider.add("gtceu.machine.miner.radius", "Radius: %d"); provider.add("gtceu.machine.miner.chunkradius", "Chunk Radius: %d"); provider.add("gtceu.machine.miner.progress", "Progress: %d/%d");