Skip to content

Commit 468492d

Browse files
authored
[MUI2] Extract createSquareSlotgroupFromInventory (#4255)
1 parent 8b1f7ed commit 468492d

4 files changed

Lines changed: 33 additions & 77 deletions

File tree

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

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.gregtechceu.gtceu.common.data.mui;
22

33
import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank;
4-
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
54
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
65
import com.gregtechceu.gtceu.api.mui.value.sync.SyncHandlers;
76
import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget;
@@ -10,9 +9,11 @@
109
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
1110
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;
1211

12+
import net.minecraftforge.items.IItemHandler;
13+
1314
public class GTMuiMachineUtil {
1415

15-
public static SlotGroupWidget createSlotGroupFromInventory(NotifiableItemStackHandler itemHandler,
16+
public static SlotGroupWidget createSlotGroupFromInventory(IItemHandler itemHandler,
1617
String slotGroupName, int maxSlots, char key,
1718
String... matrix) {
1819
SlotGroup slotGroup = new SlotGroup(slotGroupName, maxSlots);
@@ -26,6 +27,29 @@ public static SlotGroupWidget createSlotGroupFromInventory(NotifiableItemStackHa
2627
return slotWidget;
2728
}
2829

30+
public static SlotGroupWidget createSquareSlotGroupFromInventory(IItemHandler itemHandler,
31+
String slotGroupName) {
32+
SlotGroup slotGroup = new SlotGroup(slotGroupName, itemHandler.getSlots());
33+
int size = (int) Math.sqrt(itemHandler.getSlots());
34+
String[] matrix = new String[size];
35+
for (int i = 0; i < size; i++) {
36+
var row = new StringBuilder(size + 1);
37+
for (int j = 0; j < size; j++) {
38+
row.append("I");
39+
}
40+
matrix[i] = row.toString();
41+
}
42+
43+
SlotGroupWidget slotWidget = SlotGroupWidget.builder()
44+
.matrix(matrix)
45+
.key('I', i -> new ItemSlot()
46+
.slot(new ModularSlot(itemHandler, i)
47+
.slotGroup(slotGroup)))
48+
.build();
49+
50+
return slotWidget;
51+
}
52+
2953
public static SlotGroupWidget createSlotGroupFromMatrix(String slotGroupName, int maxSlots, char key,
3054
String... matrix) {
3155
SlotGroup slotGroup = new SlotGroup(slotGroupName, maxSlots);

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

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -441,15 +441,12 @@ public void setWorkingEnabled(boolean workingEnabled) {
441441
public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) {
442442
ModularPanel panel = new ModularPanel(this.getDefinition().getName());
443443
var slotHeight = (int) Math.sqrt(inventorySize);
444-
var outputGrid = createGrid(inventorySize, slotHeight, true, 'o');
445444
panel
446445
.size(176, 104 + 18 * slotHeight)
447446
.child(GTMuiWidgets.createTitleBar(this.getDefinition(), 190))
448447
.child(new Column()
449448
.coverChildren()
450-
.child(GTMuiMachineUtil.createSlotGroupFromInventory(this.cache,
451-
"output_cache", this.cache.getSize(), 'o',
452-
outputGrid))
449+
.child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(this.cache, "output_cache"))
453450
.alignX(Alignment.CENTER)
454451
.top(10))
455452
.child(SlotGroupWidget.playerInventory(false).left(7).bottom(7))
@@ -501,35 +498,6 @@ public ItemSlot createBatterySlot(PanelSyncManager syncManager) {
501498
return new ItemSlot().syncHandler("battery").background(GTGuiTextures.SLOT, GTGuiTextures.CHARGER_OVERLAY);
502499
}
503500

504-
// TODO: when onion branch is merged, call this from GTMuiUtils instead
505-
private static String[] createGrid(int amount, int rowSize, boolean output, char key) {
506-
int rows = (int) Math.ceil((float) amount / rowSize);
507-
String[] grid = new String[rows];
508-
for (int i = 0; i < rows; i++) {
509-
StringBuilder r = new StringBuilder();
510-
if (output) {
511-
for (int j = 0; j < rowSize; j++) {
512-
if ((i * rowSize + j) > (amount - 1)) {
513-
r.insert(0, " ");
514-
} else {
515-
r.insert(0, key);
516-
}
517-
}
518-
} else {
519-
for (int j = 0; j < rowSize; j++) {
520-
if ((i * rowSize + j) > (amount - 1)) {
521-
r.append(" ");
522-
} else {
523-
r.append(key);
524-
}
525-
}
526-
}
527-
grid[i] = r.toString();
528-
}
529-
530-
return grid;
531-
}
532-
533501
//////////////////////////////////////
534502
// ******* Rendering ********//
535503
//////////////////////////////////////

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
import com.gregtechceu.gtceu.api.mui.widget.ParentWidget;
2020
import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget;
2121
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
22-
import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot;
23-
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
24-
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;
2522
import com.gregtechceu.gtceu.api.recipe.GTRecipe;
2623
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
2724
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
@@ -55,6 +52,8 @@
5552

5653
import javax.annotation.ParametersAreNonnullByDefault;
5754

55+
import static com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil.createSquareSlotGroupFromInventory;
56+
5857
@MethodsReturnNonnullByDefault
5958
@ParametersAreNonnullByDefault
6059
public class DataAccessHatchMachine extends TieredPartMachine
@@ -102,24 +101,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate
102101
@Override
103102
public @NotNull ModularPanel buildUI(@NotNull PosGuiData data, @NotNull PanelSyncManager syncManager,
104103
@NotNull UISettings settings) {
105-
SlotGroup slotGroup = new SlotGroup("inventory", getInventorySize());
106-
107104
int size = (int) Math.sqrt(getInventorySize());
108-
String[] matrix = new String[size];
109-
for (int i = 0; i < size; i++) {
110-
var row = new StringBuilder(size + 1);
111-
for (int j = 0; j < size; j++) {
112-
row.append("I");
113-
}
114-
matrix[i] = row.toString();
115-
}
116-
117-
SlotGroupWidget slotWidget = SlotGroupWidget.builder()
118-
.matrix(matrix)
119-
.key('I', i -> new ItemSlot()
120-
.slot(new ModularSlot(importItems, i)
121-
.slotGroup(slotGroup)))
122-
.build();
123105

124106
return new ModularPanel(this.getDefinition().getName())
125107
.size(176, 100 + (18 * size))
@@ -131,7 +113,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate
131113
.crossAxisAlignment(Alignment.CrossAxis.CENTER)
132114
.align(Alignment.CENTER)
133115
.coverChildren()
134-
.child(slotWidget
116+
.child(createSquareSlotGroupFromInventory(importItems, "data_inventory")
135117
.marginLeft(30)
136118
.marginRight(30)
137119
.verticalCenter())))

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
import com.gregtechceu.gtceu.api.mui.widget.ParentWidget;
1616
import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget;
1717
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
18-
import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot;
19-
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
20-
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;
2118
import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler;
2219
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
2320
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
@@ -42,6 +39,8 @@
4239

4340
import javax.annotation.ParametersAreNonnullByDefault;
4441

42+
import static com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil.createSquareSlotGroupFromInventory;
43+
4544
@ParametersAreNonnullByDefault
4645
@MethodsReturnNonnullByDefault
4746
public class MufflerPartMachine extends TieredPartMachine implements IMufflerMachine, IMuiMachine {
@@ -137,24 +136,7 @@ private void tryBreakSnow() {
137136
@Override
138137
public @NotNull ModularPanel buildUI(@NotNull PosGuiData data, @NotNull PanelSyncManager syncManager,
139138
@NotNull UISettings settings) {
140-
SlotGroup slotGroup = new SlotGroup("inventory", inventory.getSlots());
141-
142139
int size = (int) Math.sqrt(inventory.getSlots());
143-
String[] matrix = new String[size];
144-
for (int i = 0; i < size; i++) {
145-
var row = new StringBuilder(size + 1);
146-
for (int j = 0; j < size; j++) {
147-
row.append("I");
148-
}
149-
matrix[i] = row.toString();
150-
}
151-
152-
SlotGroupWidget slotWidget = SlotGroupWidget.builder()
153-
.matrix(matrix)
154-
.key('I', i -> new ItemSlot()
155-
.slot(new ModularSlot(inventory, i)
156-
.slotGroup(slotGroup)))
157-
.build();
158140

159141
return new ModularPanel(this.getDefinition().getName())
160142
.size(Math.max(176, 20 + (18 * size)), 100 + (18 * size))
@@ -166,7 +148,7 @@ private void tryBreakSnow() {
166148
.crossAxisAlignment(Alignment.CrossAxis.CENTER)
167149
.align(Alignment.CENTER)
168150
.coverChildren()
169-
.child(slotWidget
151+
.child(createSquareSlotGroupFromInventory(inventory, "muffler_inventory")
170152
.marginLeft(30)
171153
.marginRight(30)
172154
.verticalCenter())))

0 commit comments

Comments
 (0)