aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2022-12-12 15:15:43 +0900
committerGitHub <noreply@github.com>2022-12-12 07:15:43 +0100
commit271b177799b1d9ba7d66c575caf4b7bccd6b9357 (patch)
tree8eef75e928feaa3d6cddb0949921c3ef121be791 /src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity
parent889d0fc3c5a1235aaac6df9be02d496078cfe44f (diff)
downloadGT5-Unofficial-271b177799b1d9ba7d66c575caf4b7bccd6b9357.tar.gz
GT5-Unofficial-271b177799b1d9ba7d66c575caf4b7bccd6b9357.tar.bz2
GT5-Unofficial-271b177799b1d9ba7d66c575caf4b7bccd6b9357.zip
Rewrite GUIs with ModularUI (#110)
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/NeutronSensor.java99
1 files changed, 72 insertions, 27 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/NeutronSensor.java b/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/NeutronSensor.java
index 6a0f7d5d8f..e176e103b7 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/NeutronSensor.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/NeutronSensor.java
@@ -1,10 +1,17 @@
package goodgenerator.blocks.tileEntity.GTMetaTileEntity;
-import goodgenerator.client.GUI.NeutronSensorGUIClient;
-import goodgenerator.common.container.NeutronSensorGUIContainer;
-import goodgenerator.main.GoodGenerator;
-import goodgenerator.network.MessageOpenNeutronSensorGUI;
+import com.gtnewhorizons.modularui.api.drawable.Text;
+import com.gtnewhorizons.modularui.api.math.Alignment;
+import com.gtnewhorizons.modularui.api.math.Color;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import goodgenerator.blocks.tileEntity.NeutronActivator;
+import goodgenerator.util.CharExchanger;
import gregtech.api.enums.Textures;
+import gregtech.api.gui.modularui.GT_UIInfos;
+import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -12,10 +19,9 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.render.TextureFactory;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
public class NeutronSensor extends GT_MetaTileEntity_Hatch {
@@ -81,29 +87,10 @@ public class NeutronSensor extends GT_MetaTileEntity_Hatch {
}
@Override
- public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
- return new NeutronSensorGUIClient(
- aPlayerInventory,
- aBaseMetaTileEntity,
- GoodGenerator.MOD_ID + ":textures/gui/NeutronSensorGUI.png",
- this.texts);
- }
-
- @Override
- public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
- return new NeutronSensorGUIContainer(aPlayerInventory, aBaseMetaTileEntity);
- }
-
- @Override
public boolean onRightclick(
IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) {
- if (aBaseMetaTileEntity.isClientSide()) return true;
- if (aSide == aBaseMetaTileEntity.getFrontFacing() && aPlayer instanceof EntityPlayerMP) {
- GoodGenerator.CHANNEL.sendTo(
- new MessageOpenNeutronSensorGUI(aBaseMetaTileEntity, texts), (EntityPlayerMP) aPlayer);
- return true;
- }
- return false;
+ GT_UIInfos.openGTTileEntityUI(aBaseMetaTileEntity, aPlayer);
+ return true;
}
public void setText(String text) {
@@ -165,4 +152,62 @@ public class NeutronSensor extends GT_MetaTileEntity_Hatch {
public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
return false;
}
+
+ @Override
+ public boolean useModularUI() {
+ return true;
+ }
+
+ @Override
+ public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
+ TextFieldWidget textField = new TextFieldWidget();
+ builder.widget(textField
+ .setGetter(this::getText)
+ .setSetter(this::setText)
+ .setValidator(str -> isValidExpression(str)
+ ? str
+ : textField.getLastText().size() > 0
+ ? textField.getLastText().get(0)
+ : "")
+ .setFocusOnGuiOpen(true)
+ .setTextColor(Color.WHITE.dark(1))
+ .setTextAlignment(Alignment.CenterLeft)
+ .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2))
+ .setPos(8, 48)
+ .setSize(100, 18))
+ .widget(new TextWidget(StatCollector.translateToLocal("gui.NeutronSensor.0"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(8, 8))
+ .widget(new TextWidget(StatCollector.translateToLocal("gui.NeutronSensor.1"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(8, 32))
+ .widget(TextWidget.dynamicText(() -> isValidExpression(textField.getText())
+ ? new Text(StatCollector.translateToLocal("gui.NeutronSensor.2")).color(0x077d02)
+ : new Text(StatCollector.translateToLocal("gui.NeutronSensor.3"))
+ .color(COLOR_TEXT_RED.get()))
+ .setSynced(false)
+ .setPos(120, 53));
+ }
+
+ private boolean isValidExpression(String exp) {
+ return isValidSuffix(exp) && CharExchanger.isValidCompareExpress(NeutronActivator.rawProcessExp(exp));
+ }
+
+ private boolean isValidSuffix(String exp) {
+ int index;
+ index = exp.length() - 1;
+ if (index < 0) return false;
+ if (exp.charAt(index) != 'V' && exp.charAt(index) != 'v') return false;
+ index = exp.length() - 2;
+ if (index < 0) return false;
+ if (exp.charAt(index) != 'E' && exp.charAt(index) != 'e') return false;
+ index = exp.length() - 3;
+ if (index < 0) return false;
+ return exp.charAt(index) == 'M'
+ || exp.charAt(index) == 'm'
+ || exp.charAt(index) == 'K'
+ || exp.charAt(index) == 'k'
+ || Character.isDigit(exp.charAt(index));
+ }
}