Skip to content

Commit abc910b

Browse files
authored
Port many blocks to MUI2 (#2624)
1 parent 32c6d59 commit abc910b

11 files changed

+505
-228
lines changed

src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,16 @@
66
import gregtech.api.capability.IControllable;
77
import gregtech.api.capability.IElectricItem;
88
import gregtech.api.capability.impl.EnergyContainerBatteryBuffer;
9-
import gregtech.api.gui.GuiTextures;
10-
import gregtech.api.gui.ModularUI;
11-
import gregtech.api.gui.ModularUI.Builder;
12-
import gregtech.api.gui.widgets.SlotWidget;
139
import gregtech.api.metatileentity.*;
1410
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
11+
import gregtech.api.mui.GTGuiTextures;
12+
import gregtech.api.mui.GTGuis;
1513
import gregtech.api.util.TextFormattingUtil;
1614
import gregtech.client.renderer.texture.Textures;
1715
import gregtech.client.utils.PipelineUtil;
1816
import gregtech.common.ConfigHolder;
1917

2018
import net.minecraft.client.resources.I18n;
21-
import net.minecraft.entity.player.EntityPlayer;
2219
import net.minecraft.item.ItemStack;
2320
import net.minecraft.nbt.NBTTagCompound;
2421
import net.minecraft.util.EnumFacing;
@@ -37,6 +34,15 @@
3734
import codechicken.lib.render.CCRenderState;
3835
import codechicken.lib.render.pipeline.IVertexOperation;
3936
import codechicken.lib.vec.Matrix4;
37+
import com.cleanroommc.modularui.api.drawable.IKey;
38+
import com.cleanroommc.modularui.api.widget.IWidget;
39+
import com.cleanroommc.modularui.factory.PosGuiData;
40+
import com.cleanroommc.modularui.screen.ModularPanel;
41+
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
42+
import com.cleanroommc.modularui.value.sync.SyncHandlers;
43+
import com.cleanroommc.modularui.widgets.ItemSlot;
44+
import com.cleanroommc.modularui.widgets.SlotGroupWidget;
45+
import com.cleanroommc.modularui.widgets.layout.Grid;
4046
import org.jetbrains.annotations.NotNull;
4147
import org.jetbrains.annotations.Nullable;
4248

@@ -137,27 +143,42 @@ protected void initializeInventory() {
137143
}
138144

139145
@Override
140-
protected ModularUI createUI(EntityPlayer entityPlayer) {
146+
public boolean usesMui2() {
147+
return true;
148+
}
149+
150+
@Override
151+
public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager guiSyncManager) {
141152
int rowSize = (int) Math.sqrt(inventorySize);
142153
int colSize = rowSize;
143154
if (inventorySize == 8) {
144155
rowSize = 4;
145156
colSize = 2;
146157
}
147-
Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176,
148-
18 + 18 * colSize + 94)
149-
.label(6, 6, getMetaFullName());
158+
159+
guiSyncManager.registerSlotGroup("item_inv", rowSize);
150160

151161
int index = 0;
162+
List<List<IWidget>> widgets = new ArrayList<>();
152163
for (int y = 0; y < colSize; y++) {
164+
widgets.add(new ArrayList<>());
153165
for (int x = 0; x < rowSize; x++) {
154-
builder.widget(new SlotWidget(importItems, index++, 88 - rowSize * 9 + x * 18, 18 + y * 18, true, true)
155-
.setBackgroundTexture(GuiTextures.SLOT, GuiTextures.BATTERY_OVERLAY));
166+
widgets.get(y).add(new ItemSlot().slot(SyncHandlers.itemSlot(this.importItems, index++)
167+
.slotGroup("item_inv"))
168+
.background(GTGuiTextures.SLOT, GTGuiTextures.BATTERY_OVERLAY));
156169
}
157170
}
158171

159-
builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * colSize + 12);
160-
return builder.build(getHolder(), entityPlayer);
172+
// TODO: Change the position of the name when it's standardized.
173+
return GTGuis.createPanel(this, 176, 18 + 18 * colSize + 94)
174+
.child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5))
175+
.child(SlotGroupWidget.playerInventory().left(7).bottom(7))
176+
.child(new Grid()
177+
.top(18).height(colSize * 18).width(rowSize * 18)
178+
.minElementMargin(0, 0)
179+
.minColWidth(18).minRowHeight(18)
180+
.alignX(0.5f)
181+
.matrix(widgets));
161182
}
162183

163184
@Override

src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBlockBreaker.java

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package gregtech.common.metatileentities.electric;
22

33
import gregtech.api.GTValues;
4-
import gregtech.api.gui.GuiTextures;
5-
import gregtech.api.gui.ModularUI;
6-
import gregtech.api.gui.ModularUI.Builder;
7-
import gregtech.api.gui.widgets.SlotWidget;
84
import gregtech.api.items.itemhandlers.GTItemStackHandler;
95
import gregtech.api.metatileentity.MetaTileEntity;
106
import gregtech.api.metatileentity.TieredMetaTileEntity;
117
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
8+
import gregtech.api.mui.GTGuis;
129
import gregtech.api.util.BlockUtility;
1310
import gregtech.api.util.GTTransferUtils;
1411
import gregtech.api.util.GregFakePlayer;
@@ -38,8 +35,18 @@
3835
import codechicken.lib.render.CCRenderState;
3936
import codechicken.lib.render.pipeline.IVertexOperation;
4037
import codechicken.lib.vec.Matrix4;
38+
import com.cleanroommc.modularui.api.drawable.IKey;
39+
import com.cleanroommc.modularui.api.widget.IWidget;
40+
import com.cleanroommc.modularui.factory.PosGuiData;
41+
import com.cleanroommc.modularui.screen.ModularPanel;
42+
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
43+
import com.cleanroommc.modularui.value.sync.SyncHandlers;
44+
import com.cleanroommc.modularui.widgets.ItemSlot;
45+
import com.cleanroommc.modularui.widgets.SlotGroupWidget;
46+
import com.cleanroommc.modularui.widgets.layout.Grid;
4147
import org.jetbrains.annotations.Nullable;
4248

49+
import java.util.ArrayList;
4350
import java.util.Collections;
4451
import java.util.List;
4552

@@ -247,20 +254,34 @@ protected IItemHandlerModifiable createExportItemHandler() {
247254
}
248255

249256
@Override
250-
protected ModularUI createUI(EntityPlayer entityPlayer) {
257+
public boolean usesMui2() {
258+
return true;
259+
}
260+
261+
@Override
262+
public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager guiSyncManager) {
251263
int rowSize = (int) Math.sqrt(getInventorySize());
252-
Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, 18 + 18 * rowSize + 94)
253-
.label(10, 5, getMetaFullName());
254-
255-
for (int y = 0; y < rowSize; y++) {
256-
for (int x = 0; x < rowSize; x++) {
257-
int index = y * rowSize + x;
258-
builder.widget(new SlotWidget(exportItems, index, 89 - rowSize * 9 + x * 18, 18 + y * 18, true, false)
259-
.setBackgroundTexture(GuiTextures.SLOT));
264+
guiSyncManager.registerSlotGroup("item_inv", rowSize);
265+
266+
List<List<IWidget>> widgets = new ArrayList<>();
267+
for (int i = 0; i < rowSize; i++) {
268+
widgets.add(new ArrayList<>());
269+
for (int j = 0; j < rowSize; j++) {
270+
int index = i * rowSize + j;
271+
widgets.get(i).add(new ItemSlot().slot(SyncHandlers.itemSlot(exportItems, index)
272+
.slotGroup("item_inv").accessibility(false, true)));
260273
}
261274
}
262-
builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12);
263-
return builder.build(getHolder(), entityPlayer);
275+
276+
return GTGuis.createPanel(this, 176, 18 + 18 * rowSize + 94)
277+
.child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5))
278+
.child(SlotGroupWidget.playerInventory().left(7).bottom(7))
279+
.child(new Grid()
280+
.top(18).height(rowSize * 18)
281+
.minElementMargin(0, 0)
282+
.minColWidth(18).minRowHeight(18)
283+
.alignX(0.5f)
284+
.matrix(widgets));
264285
}
265286

266287
@Override

src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityFisher.java

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package gregtech.common.metatileentities.electric;
22

33
import gregtech.api.GTValues;
4-
import gregtech.api.gui.GuiTextures;
5-
import gregtech.api.gui.ModularUI;
6-
import gregtech.api.gui.widgets.SlotWidget;
74
import gregtech.api.items.itemhandlers.GTItemStackHandler;
85
import gregtech.api.metatileentity.MetaTileEntity;
96
import gregtech.api.metatileentity.TieredMetaTileEntity;
107
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
8+
import gregtech.api.mui.GTGuiTextures;
9+
import gregtech.api.mui.GTGuis;
1110
import gregtech.api.unification.OreDictUnifier;
1211
import gregtech.api.util.GTTransferUtils;
1312
import gregtech.client.renderer.texture.Textures;
1413

1514
import net.minecraft.block.BlockLiquid;
1615
import net.minecraft.block.material.Material;
1716
import net.minecraft.client.resources.I18n;
18-
import net.minecraft.entity.player.EntityPlayer;
1917
import net.minecraft.item.ItemStack;
2018
import net.minecraft.util.EnumFacing;
2119
import net.minecraft.util.ResourceLocation;
@@ -30,9 +28,19 @@
3028
import codechicken.lib.render.CCRenderState;
3129
import codechicken.lib.render.pipeline.IVertexOperation;
3230
import codechicken.lib.vec.Matrix4;
31+
import com.cleanroommc.modularui.api.drawable.IKey;
32+
import com.cleanroommc.modularui.api.widget.IWidget;
33+
import com.cleanroommc.modularui.factory.PosGuiData;
34+
import com.cleanroommc.modularui.screen.ModularPanel;
35+
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
36+
import com.cleanroommc.modularui.value.sync.SyncHandlers;
37+
import com.cleanroommc.modularui.widgets.ItemSlot;
38+
import com.cleanroommc.modularui.widgets.SlotGroupWidget;
39+
import com.cleanroommc.modularui.widgets.layout.Grid;
3340
import org.jetbrains.annotations.NotNull;
3441
import org.jetbrains.annotations.Nullable;
3542

43+
import java.util.ArrayList;
3644
import java.util.List;
3745

3846
public class MetaTileEntityFisher extends TieredMetaTileEntity {
@@ -57,25 +65,41 @@ public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
5765
}
5866

5967
@Override
60-
protected ModularUI createUI(EntityPlayer entityPlayer) {
61-
int rowSize = (int) Math.sqrt(inventorySize);
68+
public boolean usesMui2() {
69+
return true;
70+
}
6271

63-
ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176,
64-
18 + 18 * rowSize + 94)
65-
.label(10, 5, getMetaFullName())
66-
.widget(new SlotWidget(importItems, 0, 18, 18, true, true)
67-
.setBackgroundTexture(GuiTextures.SLOT, GuiTextures.STRING_SLOT_OVERLAY));
68-
69-
for (int y = 0; y < rowSize; y++) {
70-
for (int x = 0; x < rowSize; x++) {
71-
int index = y * rowSize + x;
72-
builder.widget(new SlotWidget(exportItems, index, 89 - rowSize * 9 + x * 18, 18 + y * 18, true, false)
73-
.setBackgroundTexture(GuiTextures.SLOT));
72+
@Override
73+
public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager guiSyncManager) {
74+
int rowSize = (int) Math.sqrt(inventorySize);
75+
guiSyncManager.registerSlotGroup("item_in", 1);
76+
guiSyncManager.registerSlotGroup("item_out", rowSize);
77+
78+
List<List<IWidget>> widgets = new ArrayList<>();
79+
for (int i = 0; i < rowSize; i++) {
80+
widgets.add(new ArrayList<>());
81+
for (int j = 0; j < rowSize; j++) {
82+
int index = i * rowSize + j;
83+
widgets.get(i).add(new ItemSlot()
84+
.slot(SyncHandlers.itemSlot(exportItems, index)
85+
.slotGroup("item_out")
86+
.accessibility(false, true)));
7487
}
7588
}
7689

77-
builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12);
78-
return builder.build(getHolder(), entityPlayer);
90+
return GTGuis.createPanel(this, 176, 18 + 18 * rowSize + 94)
91+
.child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5))
92+
.child(SlotGroupWidget.playerInventory().left(7).bottom(7))
93+
.child(new ItemSlot().slot(SyncHandlers.itemSlot(importItems, 0)
94+
.slotGroup("item_in"))
95+
.background(GTGuiTextures.SLOT, GTGuiTextures.STRING_SLOT_OVERLAY)
96+
.pos(7 + 9, 9 * (rowSize + 1)))
97+
.child(new Grid()
98+
.top(18).alignX(0.5f)
99+
.height(rowSize * 18)
100+
.minElementMargin(0, 0)
101+
.minColWidth(18).minRowHeight(18)
102+
.matrix(widgets));
79103
}
80104

81105
@Override

0 commit comments

Comments
 (0)