|
15 | 15 | import com.gregtechceu.gtceu.api.machine.WorkableTieredMachine; |
16 | 16 | import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; |
17 | 17 | import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; |
18 | | -import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; |
| 18 | +import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; |
19 | 19 | import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; |
20 | 20 | import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; |
| 21 | +import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; |
| 22 | +import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; |
| 23 | +import com.gregtechceu.gtceu.api.mui.utils.Alignment; |
| 24 | +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; |
| 25 | +import com.gregtechceu.gtceu.api.mui.widgets.TextWidget; |
| 26 | +import com.gregtechceu.gtceu.api.mui.widgets.layout.Column; |
| 27 | +import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; |
21 | 28 | import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; |
| 29 | +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; |
| 30 | +import com.gregtechceu.gtceu.client.mui.screen.UISettings; |
22 | 31 | import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; |
| 32 | +import com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil; |
| 33 | +import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; |
23 | 34 | import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; |
24 | 35 | import com.gregtechceu.gtceu.common.machine.trait.miner.MinerLogic; |
| 36 | +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; |
25 | 37 | import com.gregtechceu.gtceu.config.ConfigHolder; |
26 | 38 | import com.gregtechceu.gtceu.data.lang.LangHandler; |
27 | 39 | import com.gregtechceu.gtceu.utils.GTTransferUtils; |
|
69 | 81 | @ParametersAreNonnullByDefault |
70 | 82 | @MethodsReturnNonnullByDefault |
71 | 83 | public class MinerMachine extends WorkableTieredMachine |
72 | | - implements IMiner, IControllable, IFancyUIMachine, IDataInfoProvider, IAutoOutputItem { |
| 84 | + implements IMiner, IControllable, IMuiMachine, IDataInfoProvider, IAutoOutputItem { |
73 | 85 |
|
74 | 86 | protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(MinerMachine.class, |
75 | 87 | WorkableTieredMachine.MANAGED_FIELD_HOLDER); |
@@ -413,4 +425,45 @@ public List<Component> getDataInfo(PortableScannerBehavior.DisplayMode mode) { |
413 | 425 | } |
414 | 426 | return new ArrayList<>(); |
415 | 427 | } |
| 428 | + |
| 429 | + @Override |
| 430 | + public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { |
| 431 | + return new ModularPanel(getDefinition().getName()) |
| 432 | + .width(220) |
| 433 | + .child(GTMuiWidgets.createTitleBar(getDefinition(), 220)) |
| 434 | + .bindPlayerInventory() |
| 435 | + .child(Flow.row() |
| 436 | + .coverChildrenHeight() |
| 437 | + .margin(5) |
| 438 | + .childPadding(5) |
| 439 | + .widthRel(1f) |
| 440 | + .child(Flow.column() |
| 441 | + .crossAxisAlignment(Alignment.CrossAxis.START) |
| 442 | + .padding(5) |
| 443 | + .background(GTGuiTextures.DISPLAY) |
| 444 | + .widthRel(.6f) |
| 445 | + .child(new TextWidget<>(IKey.dynamic(() -> { |
| 446 | + List<Component> text = new ArrayList<>(); |
| 447 | + addDisplayText(text); |
| 448 | + return text.stream() |
| 449 | + .map(Component::copy) |
| 450 | + .reduce((a, b) -> a.append("\n").append(b)) |
| 451 | + .orElse(Component.empty()); |
| 452 | + })))) |
| 453 | + .child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(exportItems, "export_inv", |
| 454 | + syncManager))) |
| 455 | + .child(new Column() |
| 456 | + .coverChildren() |
| 457 | + .leftRel(1.0f) |
| 458 | + .reverseLayout(true) |
| 459 | + .bottom(16) |
| 460 | + .padding(0, 8, 4, 4) |
| 461 | + .childPadding(2) |
| 462 | + .excludeAreaInXei() |
| 463 | + .background(GTGuiTextures.BACKGROUND.getSubArea(0.25f, 0f, 1.0f, 1.0f)) |
| 464 | + .child(GTMuiWidgets.createPowerButton(this::isWorkingEnabled, this::setWorkingEnabled, |
| 465 | + syncManager)) |
| 466 | + .child(GTMuiWidgets.createBatterySlot(getChargerInventory(), 0, syncManager)) |
| 467 | + .child(GTMuiWidgets.createAutoOutputItemButton(this, syncManager))); |
| 468 | + } |
416 | 469 | } |
0 commit comments