Skip to content

Commit f5c64e4

Browse files
miner ui
1 parent 01a95bd commit f5c64e4

File tree

3 files changed

+73
-3
lines changed

3 files changed

+73
-3
lines changed

src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.gregtechceu.gtceu.api.machine.MachineDefinition;
44
import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine;
5+
import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem;
56
import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine;
67
import com.gregtechceu.gtceu.api.mui.base.IPanelHandler;
78
import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable;
@@ -31,6 +32,7 @@
3132
import net.minecraft.network.chat.Component;
3233
import net.minecraft.world.item.ItemStack;
3334
import net.minecraft.world.item.Items;
35+
import net.minecraftforge.items.IItemHandler;
3436

3537
import com.mojang.blaze3d.platform.InputConstants;
3638
import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
@@ -111,7 +113,13 @@ public static ItemSlot createBatterySlot(SimpleTieredMachine tieredMachine, Pane
111113
return new ItemSlot().syncHandler("battery").background(GTGuiTextures.SLOT, GTGuiTextures.CHARGER_OVERLAY);
112114
}
113115

114-
public static ToggleButton createAutoOutputItemButton(SimpleTieredMachine machine, PanelSyncManager syncManager) {
116+
public static ItemSlot createBatterySlot(IItemHandler itemHandler, int slot, PanelSyncManager syncManager) {
117+
ItemSlotSH battery = new ItemSlotSH(new ModularSlot(itemHandler, slot));
118+
syncManager.syncValue("battery", battery);
119+
return new ItemSlot().syncHandler("battery").background(GTGuiTextures.SLOT, GTGuiTextures.CHARGER_OVERLAY);
120+
}
121+
122+
public static ToggleButton createAutoOutputItemButton(IAutoOutputItem machine, PanelSyncManager syncManager) {
115123
BooleanSyncValue itemOutputs = new BooleanSyncValue(machine::isAutoOutputItems,
116124
machine::setAutoOutputItems);
117125
syncManager.syncValue("auto_output_items", itemOutputs);

src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,25 @@
1515
import com.gregtechceu.gtceu.api.machine.WorkableTieredMachine;
1616
import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem;
1717
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;
1919
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
2020
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;
2128
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;
2231
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;
2334
import com.gregtechceu.gtceu.common.item.PortableScannerBehavior;
2435
import com.gregtechceu.gtceu.common.machine.trait.miner.MinerLogic;
36+
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;
2537
import com.gregtechceu.gtceu.config.ConfigHolder;
2638
import com.gregtechceu.gtceu.data.lang.LangHandler;
2739
import com.gregtechceu.gtceu.utils.GTTransferUtils;
@@ -69,7 +81,7 @@
6981
@ParametersAreNonnullByDefault
7082
@MethodsReturnNonnullByDefault
7183
public class MinerMachine extends WorkableTieredMachine
72-
implements IMiner, IControllable, IFancyUIMachine, IDataInfoProvider, IAutoOutputItem {
84+
implements IMiner, IControllable, IMuiMachine, IDataInfoProvider, IAutoOutputItem {
7385

7486
protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(MinerMachine.class,
7587
WorkableTieredMachine.MANAGED_FIELD_HOLDER);
@@ -413,4 +425,45 @@ public List<Component> getDataInfo(PortableScannerBehavior.DisplayMode mode) {
413425
}
414426
return new ArrayList<>();
415427
}
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+
}
416469
}

src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.gregtechceu.gtceu.utils.GTTransferUtils;
2121
import com.gregtechceu.gtceu.utils.GTUtil;
2222

23+
import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced;
2324
import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted;
2425
import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder;
2526

@@ -70,12 +71,15 @@ public class MinerLogic extends RecipeLogic implements IRecipeCapabilityHolder {
7071
private final LinkedList<BlockPos> blocksToMine = new LinkedList<>();
7172
@Getter
7273
@Persisted
74+
@DescSynced
7375
protected int x = Integer.MAX_VALUE;
7476
@Getter
7577
@Persisted
78+
@DescSynced
7679
protected int y = Integer.MAX_VALUE;
7780
@Getter
7881
@Persisted
82+
@DescSynced
7983
protected int z = Integer.MAX_VALUE;
8084
@Getter
8185
@Persisted
@@ -91,12 +95,15 @@ public class MinerLogic extends RecipeLogic implements IRecipeCapabilityHolder {
9195
protected int pipeY = Integer.MAX_VALUE;
9296
@Getter
9397
@Persisted
98+
@DescSynced
9499
protected int mineX = Integer.MAX_VALUE;
95100
@Getter
96101
@Persisted
102+
@DescSynced
97103
protected int mineZ = Integer.MAX_VALUE;
98104
@Getter
99105
@Persisted
106+
@DescSynced
100107
protected int mineY = Integer.MAX_VALUE;
101108
@Getter
102109
private int minBuildHeight = Integer.MAX_VALUE;
@@ -111,8 +118,10 @@ public class MinerLogic extends RecipeLogic implements IRecipeCapabilityHolder {
111118
private int currentRadius;
112119
@Getter
113120
@Persisted
121+
@DescSynced
114122
private boolean isDone;
115123
@Getter
124+
@DescSynced
116125
private boolean isInventoryFull;
117126
@Getter
118127
private final Map<IO, List<RecipeHandlerList>> capabilitiesProxy;

0 commit comments

Comments
 (0)