diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index f8e36254899..62b3dd92059 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3377,10 +3377,9 @@ "gtceu.multiblock.hpca.info_bridging_disabled": "pǝןqɐsıᗡ buıbpıɹᗺ", "gtceu.multiblock.hpca.info_bridging_enabled": "pǝןqɐuƎ buıbpıɹᗺ", "gtceu.multiblock.hpca.info_coolant_name": "ʇuɐןooƆ ᗺƆԀ", + "gtceu.multiblock.hpca.info_cooling_demand": "%d / %s :puɐɯǝᗡ buıןooƆ", "gtceu.multiblock.hpca.info_max_computation": "%s :ʇ/∩MƆ xɐW", "gtceu.multiblock.hpca.info_max_coolant_required": "%s :pǝpǝǝN ʇuɐןooƆ", - "gtceu.multiblock.hpca.info_max_cooling_available": "%s :ǝןqɐןıɐʌⱯ buıןooƆ", - "gtceu.multiblock.hpca.info_max_cooling_demand": "%s :puɐɯǝᗡ buıןooƆ", "gtceu.multiblock.hpca.temperature": "%s :ǝɹnʇɐɹǝdɯǝ⟘", "gtceu.multiblock.hpca.warning_low_cooling": "buıןooɔ ɥbnouǝ ʇoN -", "gtceu.multiblock.hpca.warning_multiple_bridges": ")ʇıɟǝuǝq ןɐuoıʇıppɐ ou sǝpıʌoɹd( ǝɹnʇɔnɹʇs uı sǝbpıɹq ǝןdıʇןnW -", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 0988c78be6a..74d320926d4 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3377,10 +3377,9 @@ "gtceu.multiblock.hpca.info_bridging_disabled": "Bridging Disabled", "gtceu.multiblock.hpca.info_bridging_enabled": "Bridging Enabled", "gtceu.multiblock.hpca.info_coolant_name": "PCB Coolant", + "gtceu.multiblock.hpca.info_cooling_demand": "Cooling Demand: %s / %d", "gtceu.multiblock.hpca.info_max_computation": "Max CWU/t: %s", "gtceu.multiblock.hpca.info_max_coolant_required": "Coolant Needed: %s", - "gtceu.multiblock.hpca.info_max_cooling_available": "Cooling Available: %s", - "gtceu.multiblock.hpca.info_max_cooling_demand": "Cooling Demand: %s", "gtceu.multiblock.hpca.temperature": "Temperature: %s", "gtceu.multiblock.hpca.warning_low_cooling": "- Not enough cooling", "gtceu.multiblock.hpca.warning_multiple_bridges": "- Multiple bridges in structure (provides no additional benefit)", diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 89b0be5835f..10807292e85 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -8,6 +8,8 @@ import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.api.mui.base.widget.IWidget; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; @@ -410,4 +412,15 @@ public boolean checkPatternWithTryLock() { return false; } } + + /** + * Can be overridden to just add widgets to the black box in the middle instead of overriding the whole UI. + * Don't forget to invoke {@code super.getWidgetsForDisplay} to add the default lines (progress, voltage, etc.). + * + * @param syncManager the sync manager + * @return list of widgets to be displayed inside the black box in the middle of a standard multiblock UI + */ + public List getWidgetsForDisplay(PanelSyncManager syncManager) { + return new ArrayList<>(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 9ef6cb99589..7cf357186b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -6,29 +6,27 @@ import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; -import com.gregtechceu.gtceu.api.gui.fancy.*; import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.mui.base.widget.IWidget; import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.mui.widget.ParentWidget; import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget; -import com.gregtechceu.gtceu.api.mui.widgets.layout.Column; -import com.gregtechceu.gtceu.api.mui.widgets.layout.Row; +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.GTMuiWidgets; import com.gregtechceu.gtceu.common.data.mui.GTMultiblockPanelUtil; +import com.gregtechceu.gtceu.common.data.mui.GTMultiblockTextUtil; import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.common.mui.GTGuis; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.gui.widget.*; - import net.minecraft.MethodsReturnNonnullByDefault; import lombok.Getter; @@ -100,19 +98,20 @@ public void setBatchEnabled(boolean batch) { ////////////////////////////////////// @Override public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { - var panel = GTGuis.createPanel(this, 176, 164); + var panel = GTGuis.createPanel(this, 196, 237); var panelUtil = new GTMultiblockPanelUtil(this); - panel.child(GTMuiWidgets.createTitleBar(this.getDefinition(), 176)) + panel.child(GTMuiWidgets.createTitleBar(this.getDefinition(), 196)) .child(new ParentWidget<>() .widthRel(0.95f) - .heightRel(.45f) + .heightRel(.65f) .margin(4, 0) - .left(3).top(5) - .child(new Row() - .child(panelUtil.getMainTextPanel(syncManager, 170, 70)))) - .child(new Column() + .left(3).top(2) + .horizontalCenter() + .child(Flow.row() + .child(panelUtil.getMainTextPanel(syncManager, 186, 146)))) + .child(Flow.col() .coverChildren() .leftRel(1.0f) .reverseLayout(true) @@ -122,11 +121,20 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet .background(GTGuiTextures.BACKGROUND.getSubArea(0.25f, 0f, 1.0f, 1.0f)) .child(GTMuiWidgets.createPowerButton(this, syncManager)) .child(GTMuiWidgets.createVoidingButton(this, syncManager))) - .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7)); + .child(SlotGroupWidget.playerInventory(false).left(7).bottom(7).horizontalCenter()); return panel; } + @Override + public List getWidgetsForDisplay(PanelSyncManager syncManager) { + List widgets = new ArrayList<>(); + widgets.add(GTMultiblockTextUtil.addEnergyTierLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addEnergyUsageLine(this, syncManager)); + widgets.addAll(super.getWidgetsForDisplay(syncManager)); + return widgets; + } + // @Override // public void addDisplayText(List textList) { // int numParallels; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 220b01daf32..be76b7048d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -10,11 +10,14 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.*; +import com.gregtechceu.gtceu.api.mui.base.widget.IWidget; +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.common.data.mui.GTMultiblockTextUtil; import com.gregtechceu.gtceu.utils.ISubscription; import net.minecraft.MethodsReturnNonnullByDefault; @@ -320,4 +323,17 @@ public void setVoidingMode(VoidingMode mode) { voidingMode = mode; getRecipeLogic().updateTickSubscription(); } + + @Override + public List getWidgetsForDisplay(PanelSyncManager syncManager) { + List widgets = super.getWidgetsForDisplay(syncManager); + widgets.add(GTMultiblockTextUtil.addProgressLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addWorkingStatusLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addParallelLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addBatchModeLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addSubtickParallelsLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addTotalRunsLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addOutputLines(this, syncManager)); + return widgets; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMultiblockPanelUtil.java b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMultiblockPanelUtil.java index 7b6abd71386..0a48dfd1c4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMultiblockPanelUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMultiblockPanelUtil.java @@ -2,8 +2,6 @@ import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.mui.base.widget.IWidget; import com.gregtechceu.gtceu.api.mui.drawable.Icon; @@ -18,15 +16,13 @@ public class GTMultiblockPanelUtil { - private MultiblockControllerMachine controller; + private final MultiblockControllerMachine controller; public GTMultiblockPanelUtil(MultiblockControllerMachine controller) { this.controller = controller; } public Widget getMainTextPanel(PanelSyncManager syncManager, int width, int height) { - boolean isFormed = controller.isFormed(); - var parentWidget = new ParentWidget<>(); var listWidget = new ListWidget<>() .width(width - 6) @@ -37,20 +33,7 @@ public Widget getMainTextPanel(PanelSyncManager syncManager, int width, int h parentWidget.size(width, height) .background(GTGuiTextures.MUI_DISPLAY); - if (controller instanceof WorkableMultiblockMachine rlMachine) { - listWidget.child(GTMultiblockTextUtil.addProgressLine(rlMachine, syncManager)); - - if (rlMachine instanceof WorkableElectricMultiblockMachine workableElectricMachine) { - listWidget.child(GTMultiblockTextUtil.addEnergyTierLine(workableElectricMachine, syncManager)); - listWidget.child(GTMultiblockTextUtil.addEnergyUsageLine(workableElectricMachine, syncManager)); - } - listWidget.child(GTMultiblockTextUtil.addWorkingStatusLine(rlMachine, syncManager)); - listWidget.child(GTMultiblockTextUtil.addParallelLine(rlMachine, syncManager)); - listWidget.child(GTMultiblockTextUtil.addBatchModeLine(rlMachine, syncManager)); - listWidget.child(GTMultiblockTextUtil.addSubtickParallelsLine(rlMachine, syncManager)); - listWidget.child(GTMultiblockTextUtil.addTotalRunsLine(rlMachine, syncManager)); - listWidget.child(GTMultiblockTextUtil.addOutputLines(rlMachine, syncManager)); - } + listWidget.children(controller.getWidgetsForDisplay(syncManager)); parentWidget.child(listWidget.left(3).top(3)); return parentWidget; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index 816c5fcbfb6..d3c71b5451c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.util.TimedProgressSupplier; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; @@ -18,17 +17,27 @@ import com.gregtechceu.gtceu.api.machine.trait.hpca.HPCAComputationProviderTrait; import com.gregtechceu.gtceu.api.machine.trait.hpca.HPCACoolantProviderTrait; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable; +import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; +import com.gregtechceu.gtceu.api.mui.base.widget.IWidget; +import com.gregtechceu.gtceu.api.mui.value.sync.GenericSyncValue; +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.Grid; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.sync_system.ISyncManaged; import com.gregtechceu.gtceu.api.sync_system.SyncDataHolder; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; +import com.gregtechceu.gtceu.client.mui.screen.RichTooltip; +import com.gregtechceu.gtceu.common.data.mui.GTMultiblockTextUtil; import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAComponentPartMachine; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTStringUtils; import com.gregtechceu.gtceu.utils.GTTransferUtils; - -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.gregtechceu.gtceu.utils.serialization.network.ByteBufAdapters; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; @@ -39,6 +48,8 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -240,6 +251,37 @@ private void consumeEnergy() { } } + @Override + public List getWidgetsForDisplay(PanelSyncManager syncManager) { + if (isRemote()) { + hpcaHandler.clearClientComponents(); + if (isFormed()) { + hpcaHandler.tryGatherClientComponents(getLevel(), getBlockPos(), getFrontFacing(), getUpwardsFacing(), + isFlipped()); + } + } + GenericSyncValue text = GenericSyncValue.builder(Component.class) + .adapter(ByteBufAdapters.COMPONENT) + .getter(() -> { + List list = new ArrayList<>(); + hpcaHandler.addErrors(list); + hpcaHandler.addWarnings(list); + hpcaHandler.addInfo(list); + return GTStringUtils.toComponent(list); + }) + .build(); + syncManager.syncValue("text", text); + List widgets = new ArrayList<>(); + widgets.add(GTMultiblockTextUtil.addWorkingStatusLine(this, syncManager)); + widgets.add(GTMultiblockTextUtil.addEnergyUsageExactLine(this, syncManager)); + widgets.add(new TextWidget<>(IKey.dynamic(text::getValue))); + widgets.add(new Grid() + .mapTo(3, 9, i -> hpcaHandler.getComponentTexture(i).asWidget() + .tooltip(hpcaHandler.getComponentTooltip(i))) + .horizontalCenter()); + return widgets; + } + // @Override // public Widget createUIWidget() { // WidgetGroup builder = (WidgetGroup) super.createUIWidget(); @@ -635,21 +677,25 @@ public int getMaxCoolantDemand() { } public void addInfo(List textList) { - // Max Computation - MutableComponent data = Component.literal(Integer.toString(getMaxCWUt())).withStyle(ChatFormatting.AQUA); - textList.add(Component.translatable("gtceu.multiblock.hpca.info_max_computation", data) + // CWU/t + Component cwutInfo = Component.literal(cachedCWUt + " / " + getMaxCWUt() + " CWU/t") + .withStyle(ChatFormatting.AQUA); + textList.add(Component.translatable("gtceu.multiblock.hpca.computation", cwutInfo) + .withStyle(ChatFormatting.GRAY)); + + // Temperature + Component tempInfo = Component.literal(Math.round(controller.temperature / 10.0D) + " °C") + .withStyle(controller.getDisplayTemperatureColor()); + textList.add(Component.translatable("gtceu.multiblock.hpca.temperature", tempInfo) .withStyle(ChatFormatting.GRAY)); // Cooling ChatFormatting coolingColor = getMaxCoolingAmount() < getMaxCoolingDemand() ? ChatFormatting.RED : ChatFormatting.GREEN; - data = Component.literal(Integer.toString(getMaxCoolingDemand())).withStyle(coolingColor); - textList.add(Component.translatable("gtceu.multiblock.hpca.info_max_cooling_demand", data) - .withStyle(ChatFormatting.GRAY)); - - data = Component.literal(Integer.toString(getMaxCoolingAmount())).withStyle(coolingColor); - textList.add(Component.translatable("gtceu.multiblock.hpca.info_max_cooling_available", data) - .withStyle(ChatFormatting.GRAY)); + MutableComponent data = Component.literal(Integer.toString(getMaxCoolingDemand())).withStyle(coolingColor); + textList.add( + Component.translatable("gtceu.multiblock.hpca.info_cooling_demand", data, getMaxCoolingAmount()) + .withStyle(ChatFormatting.GRAY)); // Coolant Required if (getMaxCoolantDemand() > 0) { @@ -702,13 +748,26 @@ public void addErrors(List textList) { } } - public ResourceTexture getComponentTexture(int index) { + public IDrawable getComponentTexture(int index) { if (components.size() <= index) { - return GuiTextures.BLANK_TRANSPARENT; + return GTGuiTextures.BLANK_TRANSPARENT; } if (components.get(index).getMachine() instanceof HPCAComponentPartMachine componentPartMachine) return componentPartMachine.getComponentIcon(); - return GuiTextures.BLANK_TRANSPARENT; + return GTGuiTextures.BLANK_TRANSPARENT; + } + + public RichTooltip getComponentTooltip(int index) { + if (components.size() <= index) { + return new RichTooltip(); + } + if (components.get(index).getMachine() instanceof HPCAComponentPartMachine componentPartMachine) { + ItemStack stack = componentPartMachine.getDefinition().asStack(); + RichTooltip tooltip = new RichTooltip(); + stack.getTooltipLines(null, TooltipFlag.NORMAL).forEach(tooltip::addLine); + return tooltip; + } + return new RichTooltip(); } public void tryGatherClientComponents(Level world, BlockPos pos, Direction frontFacing, diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java index 39b92b49c7e..68eabcd3f6a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCABridgePartMachine.java @@ -2,10 +2,9 @@ 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.machine.trait.hpca.HPCAComponentTrait; - -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import net.minecraft.MethodsReturnNonnullByDefault; @@ -25,7 +24,7 @@ public boolean isAdvanced() { } @Override - public ResourceTexture getComponentIcon() { - return GuiTextures.HPCA_ICON_BRIDGE_COMPONENT; + public IDrawable getComponentIcon() { + return GTGuiTextures.HPCA_BRIDGE_COMPONENT; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java index 2a8a773c546..9fa0e84a7d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java @@ -3,10 +3,9 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.trait.hpca.HPCAComponentTrait; +import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable; import com.gregtechceu.gtceu.common.data.GTBlocks; -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; - import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; @@ -35,7 +34,7 @@ public HPCAComponentPartMachine(BlockEntityCreationInfo info, public abstract boolean isAdvanced(); - public abstract ResourceTexture getComponentIcon(); + public abstract IDrawable getComponentIcon(); @Override public boolean shouldOpenUI(Player player, InteractionHand hand, BlockHitResult hit) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java index ffaf98023c2..220aaad2c51 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComputationPartMachine.java @@ -2,11 +2,10 @@ 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.machine.trait.hpca.HPCAComponentTrait; import com.gregtechceu.gtceu.api.machine.trait.hpca.HPCAComputationProviderTrait; - -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import net.minecraft.MethodsReturnNonnullByDefault; @@ -35,12 +34,12 @@ public static HPCAComponentTrait createHPCATrait(HPCAComponentPartMachine machin } @Override - public ResourceTexture getComponentIcon() { + public IDrawable getComponentIcon() { if (hpcaComponentTrait.isDamaged()) { - return advanced ? GuiTextures.HPCA_ICON_DAMAGED_ADVANCED_COMPUTATION_COMPONENT : - GuiTextures.HPCA_ICON_DAMAGED_COMPUTATION_COMPONENT; + return advanced ? GTGuiTextures.HPCA_DAMAGED_ADVANCED_COMPUTATION_COMPONENT : + GTGuiTextures.HPCA_DAMAGED_COMPUTATION_COMPONENT; } - return advanced ? GuiTextures.HPCA_ICON_ADVANCED_COMPUTATION_COMPONENT : - GuiTextures.HPCA_ICON_COMPUTATION_COMPONENT; + return advanced ? GTGuiTextures.HPCA_ADVANCED_COMPUTATION_COMPONENT : + GTGuiTextures.HPCA_COMPUTATION_COMPONENT; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java index bed1051e82a..849491d8f59 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCACoolerPartMachine.java @@ -2,11 +2,10 @@ 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.machine.trait.hpca.HPCAComponentTrait; import com.gregtechceu.gtceu.api.machine.trait.hpca.HPCACoolantProviderTrait; - -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import net.minecraft.MethodsReturnNonnullByDefault; @@ -35,7 +34,7 @@ public static HPCAComponentTrait createHPCATrait(HPCAComponentPartMachine machin } @Override - public ResourceTexture getComponentIcon() { - return advanced ? GuiTextures.HPCA_ICON_ACTIVE_COOLER_COMPONENT : GuiTextures.HPCA_ICON_HEAT_SINK_COMPONENT; + public IDrawable getComponentIcon() { + return advanced ? GTGuiTextures.HPCA_ACTIVE_COOLER_COMPONENT : GTGuiTextures.HPCA_HEAT_SINK_COMPONENT; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java index e919369ef5b..6d5b0dcf713 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAEmptyPartMachine.java @@ -1,10 +1,9 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.trait.hpca.HPCAComponentTrait; - -import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable; +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import net.minecraft.MethodsReturnNonnullByDefault; @@ -24,7 +23,7 @@ public boolean isAdvanced() { } @Override - public ResourceTexture getComponentIcon() { - return GuiTextures.HPCA_ICON_EMPTY_COMPONENT; + public IDrawable getComponentIcon() { + return GTGuiTextures.HPCA_EMPTY_COMPONENT; } } 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 409963a09f1..50e8493d946 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTGuiTextures.java @@ -86,6 +86,8 @@ public static class IDs { .name(IDs.STEEL_BACKGROUND) .build(); + public static final UITexture BLANK_TRANSPARENT = fullImage("textures/gui/base/blank_transparent.png"); + // todo move to textures/gui/base public static final UITexture BACKGROUND_PRIMITIVE = UITexture.builder() .location(GTCEu.MOD_ID, "textures/gui/primitive/primitive_background.png") @@ -772,6 +774,23 @@ public static class IDs { .adaptable(2) .build(); + // HPCA + public static final UITexture HPCA_COMPUTATION_COMPONENT = fullImage( + "textures/gui/widget/hpca/computation_component.png"); + public static final UITexture HPCA_ADVANCED_COMPUTATION_COMPONENT = fullImage( + "textures/gui/widget/hpca/advanced_computation_component.png"); + public static final UITexture HPCA_DAMAGED_COMPUTATION_COMPONENT = fullImage( + "textures/gui/widget/hpca/damaged_computation_component.png"); + public static final UITexture HPCA_DAMAGED_ADVANCED_COMPUTATION_COMPONENT = fullImage( + "textures/gui/widget/hpca/damaged_advanced_computation_component.png"); + public static final UITexture HPCA_ACTIVE_COOLER_COMPONENT = fullImage( + "textures/gui/widget/hpca/active_cooler_component.png"); + public static final UITexture HPCA_HEAT_SINK_COMPONENT = fullImage( + "textures/gui/widget/hpca/heat_sink_component.png"); + public static final UITexture HPCA_EMPTY_COMPONENT = fullImage("textures/gui/widget/hpca/empty.png"); + public static final UITexture HPCA_BRIDGE_COMPONENT = fullImage("textures/gui/widget/hpca/bridge_component.png"); + public static final UITexture HPCA_COMPONENT_OUTLINE = fullImage("textures/gui/widget/hpca/component_outline.png"); + // MISC public static void init() {/**/} 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 49a5fbe8f7b..6415bc9de8d 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -971,8 +971,7 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.multiblock.hpca.warning_no_computation", "- No computation providers"); provider.add("gtceu.multiblock.hpca.warning_low_cooling", "- Not enough cooling"); provider.add("gtceu.multiblock.hpca.info_max_computation", "Max CWU/t: %s"); - provider.add("gtceu.multiblock.hpca.info_max_cooling_demand", "Cooling Demand: %s"); - provider.add("gtceu.multiblock.hpca.info_max_cooling_available", "Cooling Available: %s"); + provider.add("gtceu.multiblock.hpca.info_cooling_demand", "Cooling Demand: %s / %d"); provider.add("gtceu.multiblock.hpca.info_max_coolant_required", "Coolant Needed: %s"); provider.add("gtceu.multiblock.hpca.info_coolant_name", "PCB Coolant"); provider.add("gtceu.multiblock.hpca.info_bridging_enabled", "Bridging Enabled"); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java index 2a91fa4f9e5..ad869d2072a 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java @@ -224,6 +224,14 @@ public static Component toComponent(ListTag arr) { return component; } + public static Component toComponent(List components) { + MutableComponent component = Component.empty(); + for (Component comp : components) { + component.append(comp).append("\n"); + } + return component; + } + public static String formatInt(long n) { Map suffixes = Map.of( 1L, "",