aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java5
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java59
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Arm.java94
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java39
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_FluidLimiter.java11
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java45
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java90
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java43
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java25
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java14
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java40
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java68
-rw-r--r--src/main/java/gregtech/common/gui/MachineGUIProvider.java16
-rw-r--r--src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java60
-rw-r--r--src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java24
-rw-r--r--src/main/java/gregtech/common/items/GT_VolumetricFlask.java89
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java18
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java18
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java11
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Teleporter.java11
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java5
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java7
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java31
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java28
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java50
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multiblock/AdvChemicalProcessor.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multiblock/LaserEngraver.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java9
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java5
29 files changed, 509 insertions, 422 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java
index d09120fdef..c810614161 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java
@@ -7,6 +7,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.common.fluid.FluidStackTank;
@@ -309,6 +310,8 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
// Do nothing
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
builder.widget(
@@ -334,7 +337,7 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
new TextWidget("Liquid Amount").setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(10, 20))
.widget(
- TextWidget.dynamicString(() -> GT_Utility.parseNumberToString(mFluid != null ? mFluid.amount : 0))
+ new TextWidget().setStringSupplier(() -> numberFormat.format(mFluid != null ? mFluid.amount : 0))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(10, 30));
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
index 2bbd99a36a..e240625f99 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
@@ -16,7 +16,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
-import java.util.function.Function;
+import java.util.function.IntConsumer;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -43,6 +43,7 @@ import org.lwjgl.input.Keyboard;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Pos2d;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
@@ -2213,27 +2214,35 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
return true;
}
+ protected final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
protected String generateCurrentRecipeInfoString() {
- StringBuilder ret = new StringBuilder(EnumChatFormatting.WHITE + "Progress: ")
- .append(String.format("%,.2f", (double) mProgresstime / 20))
- .append("s / ")
- .append(String.format("%,.2f", (double) mMaxProgresstime / 20))
- .append("s (")
- .append(String.format("%,.1f", (double) mProgresstime / mMaxProgresstime * 100))
- .append("%)\n");
-
- Function<Integer, Void> appendRate = (Integer amount) -> {
+ StringBuffer ret = new StringBuffer(EnumChatFormatting.WHITE + "Progress: ");
+
+ numberFormat.setMinimumFractionDigits(2);
+ numberFormat.setMaximumFractionDigits(2);
+ numberFormat.format((double) mProgresstime / 20, ret);
+ ret.append("s / ");
+ numberFormat.format((double) mMaxProgresstime / 20, ret);
+ ret.append("s (");
+ numberFormat.setMinimumFractionDigits(1);
+ numberFormat.setMaximumFractionDigits(1);
+ numberFormat.format((double) mProgresstime / mMaxProgresstime * 100, ret);
+ ret.append("%)\n");
+ numberFormat.setMinimumFractionDigits(0);
+ numberFormat.setMaximumFractionDigits(2);
+
+ IntConsumer appendRate = (amount) -> {
double processPerTick = (double) amount / mMaxProgresstime * 20;
if (processPerTick > 1) {
- ret.append(" (")
- .append(formatNumbers(Math.round(processPerTick * 10) / 10.0))
- .append("/s)");
+ ret.append(" (");
+ numberFormat.format(Math.round(processPerTick * 10) / 10.0, ret);
+ ret.append("/s)");
} else {
- ret.append(" (")
- .append(formatNumbers(Math.round(1 / processPerTick * 10) / 10.0))
- .append("s/ea)");
+ ret.append(" (");
+ numberFormat.format(Math.round(1 / processPerTick * 10) / 10.0, ret);
+ ret.append("s/ea)");
}
- return null;
};
int lines = 0;
@@ -2251,10 +2260,10 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
.append(item.getDisplayName())
.append(EnumChatFormatting.WHITE)
.append(" x ")
- .append(EnumChatFormatting.GOLD)
- .append(formatNumbers(item.stackSize))
- .append(EnumChatFormatting.WHITE);
- appendRate.apply(item.stackSize);
+ .append(EnumChatFormatting.GOLD);
+ numberFormat.format(item.stackSize, ret);
+ ret.append(EnumChatFormatting.WHITE);
+ appendRate.accept(item.stackSize);
ret.append('\n');
}
}
@@ -2270,11 +2279,11 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
.append(fluid.getLocalizedName())
.append(EnumChatFormatting.WHITE)
.append(" x ")
- .append(EnumChatFormatting.GOLD)
- .append(formatNumbers(fluid.amount))
- .append("L")
+ .append(EnumChatFormatting.GOLD);
+ numberFormat.format(fluid.amount, ret);
+ ret.append("L")
.append(EnumChatFormatting.WHITE);
- appendRate.apply(fluid.amount);
+ appendRate.accept(fluid.amount);
ret.append('\n');
}
}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Arm.java b/src/main/java/gregtech/common/covers/GT_Cover_Arm.java
index dc44e2b390..f2440ebc44 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_Arm.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_Arm.java
@@ -1,16 +1,16 @@
package gregtech.common.covers;
-import net.minecraft.client.gui.GuiScreen;
+import java.text.FieldPosition;
+
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.gui.modularui.GT_UITextures;
@@ -21,7 +21,7 @@ import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
public class GT_Cover_Arm extends GT_CoverBehavior {
@@ -34,10 +34,6 @@ public class GT_Cover_Arm extends GT_CoverBehavior {
protected static final int SLOT_ID_MIN = 0;
protected static final int CONVERTED_BIT = 0x80000000;
- // This used to be translatable, but now that cover GUI is synced with server, having conflicting texts
- // among players doesn't make sense.
- private static final String ANY_TEXT = "Any";
-
public GT_Cover_Arm(int aTickRate, ITexture coverTexture) {
super(coverTexture);
this.mTickRate = aTickRate;
@@ -299,6 +295,21 @@ public class GT_Cover_Arm extends GT_CoverBehavior {
private int maxSlot;
+ /**
+ * Display the text "Any" instead of a number when the slot is set to -1.
+ */
+ protected static final NumberFormatMUI numberFormatAny = new NumberFormatMUI() {
+
+ @Override
+ public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (number < 0) {
+ return toAppendTo.append(GT_Utility.trans("ANY", "Any"));
+ } else {
+ return super.format(number, toAppendTo, pos);
+ }
+ }
+ };
+
protected ArmUIFactory(GT_CoverUIBuildContext buildContext) {
super(buildContext);
}
@@ -339,41 +350,34 @@ public class GT_Cover_Arm extends GT_CoverBehavior {
.addTooltip(GT_Utility.trans("007", "Import"))
.setPos(spaceX * 1, spaceY * 0))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> getTextFieldContent(getFlagInternalSlot(convert(coverData)) - 1),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) (getFlagInternalSlot(convert(coverData)) - 1),
(coverData, state) -> {
final int coverVariable = convert(coverData);
return new ISerializableObject.LegacyCoverData(
- getFlagExport(coverVariable) | ((getIntFromText(state) + 1) & SLOT_ID_MASK)
+ getFlagExport(coverVariable) | ((state.intValue() + 1) & SLOT_ID_MASK)
| (getFlagAdjacentSlot(coverVariable) << 14)
| CONVERTED_BIT);
},
- widget -> widget.setOnScrollText()
- .setValidator(val -> {
- final int valSlot = getIntFromText(val);
- if (valSlot > -1) {
- return widget.getDecimalFormatter()
- .format(Math.min(valSlot, maxSlot));
- } else {
- return ANY_TEXT;
- }
- })
- .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
- .setFocusOnGuiOpen(true)
+ widget -> widget.setBounds(-1, maxSlot)
+ .setDefaultValue(-1)
+ .setScrollValues(1, 100, 10)
+ .setNumberFormat(numberFormatAny)
.setPos(spaceX * 0, spaceY * 1 + 2)
.setSize(spaceX * 2 + 5, 12))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> getTextFieldContent(getFlagAdjacentSlot(convert(coverData)) - 1),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) (getFlagAdjacentSlot(convert(coverData)) - 1),
(coverData, state) -> {
final int coverVariable = convert(coverData);
return new ISerializableObject.LegacyCoverData(
getFlagExport(coverVariable) | getFlagInternalSlot(coverVariable)
- | (((getIntFromText(state) + 1) & SLOT_ID_MASK) << 14)
+ | (((state.intValue() + 1) & SLOT_ID_MASK) << 14)
| CONVERTED_BIT);
},
widget -> widget.setValidator(val -> {
- final int valSlot = getIntFromText(val);
+ // We need to check the adjacent inventory here, and can't simply set a maximum value,
+ // because it can change while this cover is alive.
final int adjacentMaxSlot;
final ICoverable tile = getUIBuildContext().getTile();
if (tile instanceof TileEntity && !tile.isDead()) {
@@ -384,30 +388,20 @@ public class GT_Cover_Arm extends GT_CoverBehavior {
} else {
adjacentMaxSlot = -1;
}
- if (valSlot > -1) {
- return widget.getDecimalFormatter()
- .format(Math.min(valSlot, adjacentMaxSlot));
- } else {
- return ANY_TEXT;
- }
+ return Math.min(val, adjacentMaxSlot);
})
- .setOnScroll((text, direction) -> {
- final int val = getIntFromText(text);
- int step = (GuiScreen.isShiftKeyDown() ? 50 : GuiScreen.isCtrlKeyDown() ? 5 : 1)
- * direction;
- return widget.getDecimalFormatter()
- .format(val + step);
- })
- .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
+ .setMinValue(-1)
+ .setDefaultValue(-1)
+ .setScrollValues(1, 100, 10)
+ .setNumberFormat(numberFormatAny)
.setPos(spaceX * 0, spaceY * 2 + 2)
.setSize(spaceX * 2 + 5, 12))
.setPos(startX, startY))
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> (convert(getCoverData()) & EXPORT_MASK) > 0 ? GT_Utility.trans("006", "Export")
: GT_Utility.trans("007", "Import"))
- .setSynced(false)
.setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX * 3, 4 + startY + spaceY * 0))
.widget(
@@ -427,18 +421,6 @@ public class GT_Cover_Arm extends GT_CoverBehavior {
}
}
- private String getTextFieldContent(int val) {
- return val < 0 ? ANY_TEXT : String.valueOf(val);
- }
-
- private int getIntFromText(String text) {
- try {
- return (int) MathExpression.parseMathExpression(text, -1);
- } catch (Exception e) {
- return -1;
- }
- }
-
private int getFlagExport(int coverVariable) {
return coverVariable & EXPORT_MASK;
}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java
index de1f934a71..0010f7745b 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java
@@ -13,8 +13,8 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
@@ -29,7 +29,7 @@ import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_CycleButtonWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
@@ -199,6 +199,8 @@ public class GT_Cover_EUMeter extends GT_CoverBehaviorBase<GT_Cover_EUMeter.EUMe
final String INVERTED = GT_Utility.trans("INVERTED", "Inverted");
final String NORMAL = GT_Utility.trans("NORMAL", "Normal");
+ final CoverDataFollower_NumericWidget<EUMeterData> numericWidget = new CoverDataFollower_NumericWidget<>();
+
builder.widget(
new CoverDataControllerWidget<>(this::getCoverData, this::setCoverData, GT_Cover_EUMeter.this)
.addFollower(
@@ -224,33 +226,36 @@ public class GT_Cover_EUMeter extends GT_CoverBehaviorBase<GT_Cover_EUMeter.EUMe
widget -> widget.addTooltip(0, NORMAL)
.addTooltip(1, INVERTED)
.setPos(spaceX * 0, spaceY * 1))
- .addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.threshold),
- (coverData, state) -> {
- coverData.threshold = (long) MathExpression.parseMathExpression(state);
- return coverData;
- },
- widget -> widget.setOnScrollNumbersLong(1000, 100, 100000)
- .setNumbersLong(() -> 0L, () -> Long.MAX_VALUE)
+ .addFollower(numericWidget, coverData -> (double) coverData.threshold, (coverData, state) -> {
+ coverData.threshold = state.longValue();
+ return coverData;
+ },
+ widget -> widget.setScrollValues(1000, 100, 100000)
.setFocusOnGuiOpen(true)
.setPos(spaceX * 0, spaceY * 2 + 2)
.setSize(spaceX * 8, 12))
.setPos(startX, startY))
.widget(
- TextWidget.dynamicString(() -> getCoverData() != null ? getCoverData().type.getTitle() : "")
- .setSynced(false)
+ new TextWidget()
+ .setStringSupplier(() -> getCoverData() != null ? getCoverData().type.getTitle() : "")
.setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX, 4 + startY))
.widget(
- TextWidget
- .dynamicString(() -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
- .setSynced(false)
+ new TextWidget()
+ .setStringSupplier(
+ () -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
.setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX, 4 + startY + spaceY))
.widget(
new TextWidget(GT_Utility.trans("222.1", "Energy threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX, startY + spaceY * 3 + 4));
+ .setPos(startX, startY + spaceY * 3 + 4))
+
+ .widget(
+ new FakeSyncWidget.LongSyncer(
+ () -> getCoverData() != null
+ ? getCoverData().type.getTileEntityEnergyCapacity(getUIBuildContext().getTile())
+ : Long.MAX_VALUE,
+ value -> numericWidget.setMaxValue(value)));
}
}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FluidLimiter.java b/src/main/java/gregtech/common/covers/GT_Cover_FluidLimiter.java
index 871f89a07b..142cb875c3 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_FluidLimiter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_FluidLimiter.java
@@ -13,7 +13,6 @@ import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -24,7 +23,7 @@ import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import io.netty.buffer.ByteBuf;
/***
@@ -190,13 +189,13 @@ public class GT_Cover_FluidLimiter extends GT_CoverBehaviorBase<GT_Cover_FluidLi
builder.widget(
new CoverDataControllerWidget<>(this::getCoverData, this::setCoverData, GT_Cover_FluidLimiter.this)
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(Math.round(coverData.threshold * 100)),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) Math.round(coverData.threshold * 100),
(coverData, val) -> {
- coverData.threshold = (float) (MathExpression.parseMathExpression(val) / 100);
+ coverData.threshold = val.floatValue() / 100;
return coverData;
},
- widget -> widget.setNumbers(0, 100)
+ widget -> widget.setBounds(0, 100)
.setFocusOnGuiOpen(true)
.setPos(startX, startY + spaceY * 2 - 24)
.setSize(spaceX * 4 - 3, 12)))
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java
index 7d2afb838d..483f882e91 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java
@@ -15,11 +15,10 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
import com.google.common.io.ByteArrayDataInput;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.drawable.Text;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.gui.modularui.GT_UITextures;
@@ -30,7 +29,7 @@ import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
@@ -252,6 +251,12 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehaviorBase<GT_Cover_Fluid
private static final int spaceX = 18;
private static final int spaceY = 18;
+ private static final NumberFormatMUI numberFormat;
+ static {
+ numberFormat = new NumberFormatMUI();
+ numberFormat.setMaximumFractionDigits(2);
+ }
+
public FluidRegulatorUIFactory(GT_CoverUIBuildContext buildContext) {
super(buildContext);
}
@@ -314,14 +319,14 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehaviorBase<GT_Cover_Fluid
.addTooltip(GT_Utility.trans("343.1", "Use Inverted Machine Processing State"))
.setPos(spaceX * 2, spaceY * 1))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.speed),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.speed,
(coverData, state) -> {
- coverData.speed = (int) MathExpression.parseMathExpression(state);
+ coverData.speed = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbersLong(1, 5, 50)
- .setNumbersLong(val -> {
+ widget -> widget.setBounds(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY)
+ .setValidator(val -> {
final int tickRate = getCoverData() != null ? getCoverData().tickRate : 0;
final long maxFlow = (long) mTransferRate
* GT_Utility.clamp(tickRate, TICK_RATE_MIN, TICK_RATE_MAX);
@@ -335,19 +340,19 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehaviorBase<GT_Cover_Fluid
}
return val;
})
- .setPattern(BaseTextFieldWidget.WHOLE_NUMS)
+ .setScrollValues(1, 144, 1000)
.setFocusOnGuiOpen(true)
.setPos(spaceX * 0, spaceY * 2 + 2)
.setSize(spaceX * 4 - 3, 12))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.tickRate),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.tickRate,
(coverData, state) -> {
- coverData.tickRate = (int) MathExpression.parseMathExpression(state);
+ coverData.tickRate = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbersLong(1, 5, 50)
- .setNumbersLong(val -> {
+ widget -> widget.setBounds(0, TICK_RATE_MAX)
+ .setValidator(val -> {
final int speed = getCoverData() != null ? getCoverData().speed : 0;
warn.set(false);
if (val > TICK_RATE_MAX) {
@@ -362,7 +367,6 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehaviorBase<GT_Cover_Fluid
}
return val;
})
- .setPattern(BaseTextFieldWidget.WHOLE_NUMS)
.setPos(spaceX * 5, spaceY * 2 + 2)
.setSize(spaceX * 2 - 3, 12))
.setPos(startX, startY))
@@ -378,16 +382,17 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehaviorBase<GT_Cover_Fluid
.widget(
new TextWidget(GT_Utility.trans("209", " ticks")).setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX * 7, 4 + startY + spaceY * 2))
- .widget(TextWidget.dynamicText(() -> {
+ .widget(new TextWidget().setTextSupplier(() -> {
FluidRegulatorData coverVariable = getCoverData();
if (coverVariable == null) return new Text("");
return new Text(
- String.format(
- GT_Utility.trans("210", "Average: %.2f L/sec"),
- coverVariable.tickRate == 0 ? 0 : coverVariable.speed * 20d / coverVariable.tickRate))
+ GT_Utility.trans("210.1", "Average:") + " "
+ + numberFormat.format(
+ coverVariable.tickRate == 0 ? 0 : coverVariable.speed * 20d / coverVariable.tickRate)
+ + " "
+ + GT_Utility.trans("210.2", "L/sec"))
.color(warn.get() ? COLOR_TEXT_WARN.get() : COLOR_TEXT_GRAY.get());
})
- .setSynced(false)
.setPos(startX + spaceX * 0, 4 + startY + spaceY * 3));
}
}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
index 2339bd2243..bb2364cf0e 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
@@ -1,5 +1,7 @@
package gregtech.common.covers;
+import java.text.FieldPosition;
+
import javax.annotation.Nonnull;
import net.minecraft.entity.player.EntityPlayer;
@@ -12,10 +14,9 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
@@ -26,7 +27,7 @@ import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import gregtech.common.gui.modularui.widget.ItemWatcherSlotWidget;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME;
@@ -204,7 +205,21 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter.
private static final int startY = 25;
private static final int spaceX = 18;
private static final int spaceY = 18;
- private static final String ALL_TEXT = "All";
+
+ /**
+ * Display the text "All" instead of a number when the slot is set to -1.
+ */
+ protected static final NumberFormatMUI numberFormatAll = new NumberFormatMUI() {
+
+ @Override
+ public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (number < 0) {
+ return toAppendTo.append(GT_Utility.trans("ALL", "All"));
+ } else {
+ return super.format(number, toAppendTo, pos);
+ }
+ }
+ };
private int maxSlot;
private int maxThreshold;
@@ -234,53 +249,46 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter.
.addTooltip(1, INVERTED)
.setPos(0, 0))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> getSlotTextFieldContent(coverData.slot),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.threshold,
(coverData, state) -> {
- coverData.slot = getIntFromText(state);
+ coverData.threshold = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollText()
- .setValidator(val -> {
- final int valSlot = getIntFromText(val);
- if (valSlot > -1) {
- return widget.getDecimalFormatter()
- .format(Math.min(valSlot, maxSlot));
- } else {
- return ALL_TEXT;
- }
- })
- .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
+ widget -> widget.setBounds(0, maxThreshold)
+ .setScrollValues(1, 64, 1000)
.setFocusOnGuiOpen(true)
- .setPos(0, spaceY + 2)
- .setSize(spaceX * 2 + 5, 12))
+ .setPos(0, 2 + spaceY)
+ .setSize(spaceX * 4 + 5, 12))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.threshold),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.slot,
(coverData, state) -> {
- coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ coverData.slot = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbers(1, 10, 64)
- .setNumbers(0, maxThreshold)
- .setPos(0, spaceY * 2 + 2)
- .setSize(spaceX * 4 + 5, 12))
+ widget -> widget.setBounds(-1, maxSlot)
+ .setDefaultValue(-1)
+ .setScrollValues(1, 100, 10)
+ .setNumberFormat(numberFormatAll)
+ .setPos(0, 2 + spaceY * 2)
+ .setSize(spaceX * 3 + 1, 12))
.setPos(startX, startY))
.widget(
new ItemWatcherSlotWidget().setGetter(this::getTargetItem)
- .setPos(startX + spaceX * 8 - 4, startY + spaceY))
+ .setPos(startX + spaceX * 3 + 8, startY + spaceY * 2))
.widget(
- TextWidget
- .dynamicString(() -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
- .setSynced(false)
+ new TextWidget()
+ .setStringSupplier(
+ () -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
.setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 3, 4 + startY))
+ .setPos(startX + spaceX, 4 + startY))
.widget(
- new TextWidget(GT_Utility.trans("254", "Detect slot#")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 3, 4 + startY + spaceY))
+ new TextWidget(GT_Utility.trans("254", "Detect slot #")).setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 4 + 9, 4 + startY + spaceY * 2))
.widget(
new TextWidget(GT_Utility.trans("221", "Item threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 5 - 10, startY + spaceY * 2 + 4));
+ .setPos(startX + spaceX * 4 + 9, 4 + startY + spaceY));
}
private void setMaxSlot() {
@@ -303,18 +311,6 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter.
}
}
- private int getIntFromText(String text) {
- try {
- return (int) MathExpression.parseMathExpression(text, -1);
- } catch (Exception e) {
- return -1;
- }
- }
-
- private String getSlotTextFieldContent(int val) {
- return val < 0 ? ALL_TEXT : String.valueOf(val);
- }
-
private ItemStack getTargetItem() {
ItemMeterData coverVariable = getCoverData();
if (coverVariable == null || coverVariable.slot < 0) {
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java
index e011954cdd..c3a4b4ff89 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java
@@ -15,7 +15,6 @@ import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -27,7 +26,7 @@ import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalTankBase;
import io.netty.buffer.ByteBuf;
@@ -178,6 +177,7 @@ public class GT_Cover_LiquidMeter extends GT_CoverBehaviorBase<GT_Cover_LiquidMe
private static final int startY = 25;
private static final int spaceX = 18;
private static final int spaceY = 18;
+ private int maxCapacity;
public LiquidMeterUIFactory(GT_CoverUIBuildContext buildContext) {
super(buildContext);
@@ -188,17 +188,8 @@ public class GT_Cover_LiquidMeter extends GT_CoverBehaviorBase<GT_Cover_LiquidMe
protected void addUIWidgets(ModularWindow.Builder builder) {
final String INVERTED = GT_Utility.trans("INVERTED", "Inverted");
final String NORMAL = GT_Utility.trans("NORMAL", "Normal");
- final int maxCapacity;
- if (getUIBuildContext().getTile() instanceof IFluidHandler) {
- FluidTankInfo[] tanks = ((IFluidHandler) getUIBuildContext().getTile())
- .getTankInfo(ForgeDirection.UNKNOWN);
- maxCapacity = Arrays.stream(tanks)
- .mapToInt(tank -> tank.capacity)
- .sum();
- } else {
- maxCapacity = -1;
- }
+ setMaxCapacity();
builder.widget(
new CoverDataControllerWidget<>(this::getCoverData, this::setCoverData, GT_Cover_LiquidMeter.this)
@@ -213,28 +204,40 @@ public class GT_Cover_LiquidMeter extends GT_CoverBehaviorBase<GT_Cover_LiquidMe
.addTooltip(1, INVERTED)
.setPos(spaceX * 0, spaceY * 0))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.threshold),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.threshold,
(coverData, state) -> {
- coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ coverData.threshold = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbers(1000, 100, 100000)
- .setNumbers(0, maxCapacity > 0 ? maxCapacity : Integer.MAX_VALUE)
+ widget -> widget.setBounds(0, maxCapacity > 0 ? maxCapacity : Integer.MAX_VALUE)
+ .setScrollValues(1000, 144, 100000)
.setFocusOnGuiOpen(true)
.setPos(spaceX * 0, spaceY * 1 + 2)
.setSize(spaceX * 4 + 5, 12))
.setPos(startX, startY))
.widget(
- TextWidget
- .dynamicString(() -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
- .setSynced(false)
+ new TextWidget()
+ .setStringSupplier(
+ () -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
.setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX * 1, 4 + startY + spaceY * 0))
.widget(
new TextWidget(GT_Utility.trans("222", "Fluid threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX * 5 - 10, startY + spaceY * 1 + 4));
}
+
+ private void setMaxCapacity() {
+ final ICoverable tile = getUIBuildContext().getTile();
+ if (!tile.isDead() && tile instanceof IFluidHandler) {
+ FluidTankInfo[] tanks = ((IFluidHandler) tile).getTankInfo(ForgeDirection.UNKNOWN);
+ maxCapacity = Arrays.stream(tanks)
+ .mapToInt(tank -> tank.capacity)
+ .sum();
+ } else {
+ maxCapacity = -1;
+ }
+ }
}
public static class LiquidMeterData implements ISerializableObject {
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
index 45441025e5..df298c2489 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
@@ -4,7 +4,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -16,7 +15,7 @@ import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
@@ -195,16 +194,18 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
new CoverDataControllerWidget<>(
this::getCoverData,
this::setCoverData,
- GT_Cover_RedstoneWirelessBase.this).addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(getFlagFrequency(convert(coverData))),
- (coverData, text) -> new ISerializableObject.LegacyCoverData(
- (int) MathExpression.parseMathExpression(text) | getFlagCheckbox(convert(coverData))),
- widget -> widget.setOnScrollNumbers()
- .setNumbers(0, MAX_CHANNEL)
- .setFocusOnGuiOpen(true)
- .setPos(spaceX * 0, spaceY * 0 + 2)
- .setSize(spaceX * 4 - 3, 12))
+ GT_Cover_RedstoneWirelessBase.this)
+
+ .addFollower(
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) getFlagFrequency(convert(coverData)),
+ (coverData, state) -> new ISerializableObject.LegacyCoverData(
+ state.intValue() | getFlagCheckbox(convert(coverData))),
+ widget -> widget.setBounds(0, MAX_CHANNEL)
+ .setScrollValues(1, 1000, 10)
+ .setFocusOnGuiOpen(true)
+ .setPos(spaceX * 0, spaceY * 0 + 2)
+ .setSize(spaceX * 4 - 3, 12))
.addFollower(
CoverDataFollower_ToggleButtonWidget.ofCheck(),
coverData -> getFlagCheckbox(convert(coverData)) > 0,
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java
index e04a6664ac..d19db38177 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java
@@ -13,7 +13,6 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -25,7 +24,7 @@ import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
@@ -270,15 +269,14 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_A
protected void addUIForDataController(CoverDataControllerWidget<T> controller) {
controller.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.frequency),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.frequency,
(coverData, state) -> {
- coverData.frequency = (int) MathExpression.parseMathExpression(state);
+ coverData.frequency = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbers()
- .setNumbers(0, Integer.MAX_VALUE)
- .setFocusOnGuiOpen(true)
+ widget -> widget.setScrollValues(1, 1000, 10)
+ .setBounds(0, Integer.MAX_VALUE)
.setPos(1, 2 + spaceY * getFrequencyRow())
.setSize(spaceX * 5 - 4, 12))
.addFollower(
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java
index ab5d26356f..9a9d419be6 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java
@@ -1,5 +1,6 @@
package gregtech.common.covers.redstone;
+import java.util.Arrays;
import java.util.UUID;
import javax.annotation.Nonnull;
@@ -8,9 +9,10 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.FluidTankInfo;
+import net.minecraftforge.fluids.IFluidHandler;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -21,7 +23,7 @@ import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.covers.GT_Cover_LiquidMeter;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import io.netty.buffer.ByteBuf;
public class GT_Cover_WirelessFluidDetector
@@ -127,42 +129,58 @@ public class GT_Cover_WirelessFluidDetector
private class WirelessFluidDetectorUIFactory extends AdvancedRedstoneTransmitterBaseUIFactory {
+ private int maxCapacity;
+
public WirelessFluidDetectorUIFactory(GT_CoverUIBuildContext buildContext) {
super(buildContext);
}
@Override
protected int getFrequencyRow() {
- return 1;
+ return 0;
}
@Override
protected int getButtonRow() {
- return 2;
+ return 1;
}
@Override
protected void addUIWidgets(ModularWindow.Builder builder) {
+ setMaxCapacity();
super.addUIWidgets(builder);
builder.widget(
new TextWidget(GT_Utility.trans("222", "Fluid threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 5, 4 + startY));
+ .setPos(startX + spaceX * 5, 4 + startY + spaceY * 2));
}
@Override
protected void addUIForDataController(CoverDataControllerWidget<FluidTransmitterData> controller) {
super.addUIForDataController(controller);
controller.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.threshold),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.threshold,
(coverData, state) -> {
- coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ coverData.threshold = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbers()
- .setNumbers(0, Integer.MAX_VALUE)
- .setPos(1, 2)
+ widget -> widget.setBounds(0, maxCapacity > 0 ? maxCapacity : Integer.MAX_VALUE)
+ .setScrollValues(1000, 144, 100000)
+ .setFocusOnGuiOpen(true)
+ .setPos(1, 2 + spaceY * 2)
.setSize(spaceX * 5 - 4, 12));
}
+
+ private void setMaxCapacity() {
+ final ICoverable tile = getUIBuildContext().getTile();
+ if (!tile.isDead() && tile instanceof IFluidHandler) {
+ FluidTankInfo[] tanks = ((IFluidHandler) tile).getTankInfo(ForgeDirection.UNKNOWN);
+ maxCapacity = Arrays.stream(tanks)
+ .mapToInt(tank -> tank.capacity)
+ .sum();
+ } else {
+ maxCapacity = -1;
+ }
+ }
}
}
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java
index fb7fa93ea7..3cc7f60984 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java
@@ -1,5 +1,6 @@
package gregtech.common.covers.redstone;
+import java.text.FieldPosition;
import java.util.UUID;
import javax.annotation.Nonnull;
@@ -12,10 +13,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
@@ -25,7 +25,7 @@ import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.covers.GT_Cover_ItemMeter;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.ItemWatcherSlotWidget;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase;
import io.netty.buffer.ByteBuf;
@@ -149,10 +149,22 @@ public class GT_Cover_WirelessItemDetector
private class WirelessItemDetectorUIFactory extends AdvancedRedstoneTransmitterBaseUIFactory {
- private static final String ALL_TEXT = "All";
-
private int maxSlot;
private int maxThreshold;
+ /**
+ * Display the text "All" instead of a number when the slot is set to -1.
+ */
+ private static final NumberFormatMUI numberFormatAll = new NumberFormatMUI() {
+
+ @Override
+ public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (number < 0) {
+ return toAppendTo.append(GT_Utility.trans("ALL", "All"));
+ } else {
+ return super.format(number, toAppendTo, pos);
+ }
+ }
+ };
public WirelessItemDetectorUIFactory(GT_CoverUIBuildContext buildContext) {
super(buildContext);
@@ -180,7 +192,7 @@ public class GT_Cover_WirelessItemDetector
new TextWidget(GT_Utility.trans("221", "Item threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX * 5, 4 + startY + spaceY * 2))
.widget(
- new TextWidget(GT_Utility.trans("254.0", "Detect Slot")).setDefaultColor(COLOR_TEXT_GRAY.get())
+ new TextWidget(GT_Utility.trans("254", "Detect Slot #")).setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(startX + spaceX * 5, 4 + startY + spaceY * 3));
}
@@ -188,34 +200,28 @@ public class GT_Cover_WirelessItemDetector
protected void addUIForDataController(CoverDataControllerWidget<ItemTransmitterData> controller) {
super.addUIForDataController(controller);
controller.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.threshold),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.threshold,
(coverData, state) -> {
- coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ coverData.threshold = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbers(1, 10, 64)
- .setNumbers(0, maxThreshold)
+ widget -> widget.setBounds(0, maxThreshold)
+ .setScrollValues(1, 64, 1000)
+ .setFocusOnGuiOpen(true)
.setPos(1, 2 + spaceY * 2)
.setSize(spaceX * 5 - 4, 12))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> getSlotTextFieldContent(coverData.slot),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.slot,
(coverData, state) -> {
- coverData.slot = getIntFromText(state);
+ coverData.slot = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollText()
- .setValidator(val -> {
- final int valSlot = getIntFromText(val);
- if (valSlot > -1) {
- return widget.getDecimalFormatter()
- .format(Math.min(valSlot, maxSlot));
- } else {
- return ALL_TEXT;
- }
- })
- .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
+ widget -> widget.setBounds(-1, maxSlot)
+ .setDefaultValue(-1)
+ .setScrollValues(1, 100, 10)
+ .setNumberFormat(numberFormatAll)
.setPos(1, 2 + spaceY * 3)
.setSize(spaceX * 4 - 8, 12));
}
@@ -240,18 +246,6 @@ public class GT_Cover_WirelessItemDetector
}
}
- private int getIntFromText(String text) {
- try {
- return (int) MathExpression.parseMathExpression(text, -1);
- } catch (Exception e) {
- return -1;
- }
- }
-
- private String getSlotTextFieldContent(int val) {
- return val < 0 ? ALL_TEXT : String.valueOf(val);
- }
-
private ItemStack getTargetItem() {
final ICoverable tile = getUIBuildContext().getTile();
final ItemTransmitterData coverVariable = getCoverData();
diff --git a/src/main/java/gregtech/common/gui/MachineGUIProvider.java b/src/main/java/gregtech/common/gui/MachineGUIProvider.java
index 91d14c209a..3cc889f000 100644
--- a/src/main/java/gregtech/common/gui/MachineGUIProvider.java
+++ b/src/main/java/gregtech/common/gui/MachineGUIProvider.java
@@ -13,6 +13,7 @@ import javax.annotation.Nonnull;
import net.minecraft.util.StatCollector;
import com.gtnewhorizons.modularui.api.ModularUITextures;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.drawable.ItemDrawable;
import com.gtnewhorizons.modularui.api.drawable.UITexture;
@@ -59,6 +60,8 @@ public class MachineGUIProvider<T extends GUIHost & ProcessingLogicHost<? extend
@Nonnull
protected static final Pos2d RECIPE_LOCKING_BUTTON_DEFAULT_POS = new Pos2d(0, 0);
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
public MachineGUIProvider(@Nonnull T host) {
super(host);
}
@@ -252,10 +255,19 @@ public class MachineGUIProvider<T extends GUIHost & ProcessingLogicHost<? extend
@Nonnull UIBuildContext uiBuildContext) {
PowerLogic power = host.getPowerLogic();
tab.addChild(
- TextWidget.dynamicString(() -> power.getStoredEnergy() + "/" + power.getCapacity() + " EU")
+ new TextWidget()
+ .setStringSupplier(
+ () -> numberFormat.format(power.getStoredEnergy()) + "/"
+ + numberFormat.format(power.getCapacity())
+ + " EU")
.setPos(10, 30))
.addChild(
- TextWidget.dynamicString(() -> power.getVoltage() + " EU/t" + "(" + power.getMaxAmperage() + " A)")
+ new TextWidget()
+ .setStringSupplier(
+ () -> numberFormat.format(power.getVoltage()) + " EU/t"
+ + "("
+ + numberFormat.format(power.getMaxAmperage())
+ + " A)")
.setPos(10, 60));
}
diff --git a/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java
new file mode 100644
index 0000000000..f641ed090b
--- /dev/null
+++ b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java
@@ -0,0 +1,60 @@
+package gregtech.common.gui.modularui.widget;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import com.gtnewhorizons.modularui.api.math.Alignment;
+import com.gtnewhorizons.modularui.api.math.Color;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
+
+import gregtech.api.gui.modularui.GT_UITextures;
+import gregtech.api.gui.modularui.IDataFollowerWidget;
+import gregtech.api.util.ISerializableObject;
+
+public class CoverDataFollower_NumericWidget<T extends ISerializableObject> extends NumericWidget
+ implements IDataFollowerWidget<T, Double> {
+
+ private Function<T, Double> dataToStateGetter;
+
+ public CoverDataFollower_NumericWidget() {
+ super();
+ setGetter(() -> 0); // fake getter; used only for init
+ setSynced(false, false);
+ setTextColor(Color.WHITE.dark(1));
+ setTextAlignment(Alignment.CenterLeft);
+ setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2));
+ }
+
+ @Override
+ public void onPostInit() {
+ // Widget#onPostInit is called earlier than IDataFollowerWidget#onPostInit,
+ // so we make sure cursor is set after text is set
+ super.onPostInit();
+
+ // On first call #handler does not contain text.
+ // On second call, it contains correct text to update #lastText,
+ // but #shouldGetFocus call is skipped by Cursor#updateFocused,
+ // so we need to manually call this.
+ if (focusOnGuiOpen) {
+ shouldGetFocus();
+ }
+ }
+
+ @Override
+ public CoverDataFollower_NumericWidget<T> setDataToStateGetter(Function<T, Double> dataToStateGetter) {
+ this.dataToStateGetter = dataToStateGetter;
+ return this;
+ }
+
+ @Override
+ public CoverDataFollower_NumericWidget<T> setStateSetter(Consumer<Double> setter) {
+ super.setSetter(setter::accept);
+ return this;
+ }
+
+ @Override
+ public void updateState(T data) {
+ setValue(dataToStateGetter.apply(data));
+ }
+
+}
diff --git a/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java
index df2dfa48f7..1907aaf22f 100644
--- a/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java
+++ b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java
@@ -5,9 +5,9 @@ import java.util.function.Function;
import net.minecraft.client.gui.GuiScreen;
+import com.gtnewhorizon.gtnhlib.util.parsing.MathExpressionParser;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Color;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
import gregtech.api.gui.modularui.GT_UITextures;
@@ -60,6 +60,10 @@ public class CoverDataFollower_TextFieldWidget<T extends ISerializableObject> ex
setText(dataToStateGetter.apply(data));
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollNumbers(int baseStep, int ctrlStep, int shiftStep) {
setOnScrollNumbers((val, direction) -> {
int step = (GuiScreen.isShiftKeyDown() ? shiftStep : GuiScreen.isCtrlKeyDown() ? ctrlStep : baseStep)
@@ -74,13 +78,21 @@ public class CoverDataFollower_TextFieldWidget<T extends ISerializableObject> ex
return this;
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollNumbers() {
return setOnScrollNumbers(1, 50, 1000);
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollText(int baseStep, int ctrlStep, int shiftStep) {
setOnScroll((text, direction) -> {
- int val = (int) MathExpression.parseMathExpression(text, -1);
+ int val = (int) MathExpressionParser.parse(text);
int step = (GuiScreen.isShiftKeyDown() ? shiftStep : GuiScreen.isCtrlKeyDown() ? ctrlStep : baseStep)
* direction;
try {
@@ -94,10 +106,18 @@ public class CoverDataFollower_TextFieldWidget<T extends ISerializableObject> ex
return this;
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollText() {
return setOnScrollText(1, 5, 50);
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollNumbersLong(long baseStep, long ctrlStep, long shiftStep) {
setOnScrollNumbersLong((val, direction) -> {
long step = (GuiScreen.isShiftKeyDown() ? shiftStep : GuiScreen.isCtrlKeyDown() ? ctrlStep : baseStep)
diff --git a/src/main/java/gregtech/common/items/GT_VolumetricFlask.java b/src/main/java/gregtech/common/items/GT_VolumetricFlask.java
index fc19daff83..4dc761dc60 100644
--- a/src/main/java/gregtech/common/items/GT_VolumetricFlask.java
+++ b/src/main/java/gregtech/common/items/GT_VolumetricFlask.java
@@ -7,7 +7,6 @@ import static ic2.core.util.LiquidUtil.fillContainerStack;
import static ic2.core.util.LiquidUtil.placeFluid;
import java.util.List;
-import java.util.function.Function;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -34,15 +33,12 @@ import net.minecraftforge.fluids.IFluidHandler;
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Color;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
-import com.gtnewhorizons.modularui.api.math.Pos2d;
-import com.gtnewhorizons.modularui.api.math.Size;
import com.gtnewhorizons.modularui.api.screen.IItemWithModularUI;
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.VanillaButtonWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -315,78 +311,47 @@ public class GT_VolumetricFlask extends GT_Generic_Item implements IFluidContain
private class VolumetricFlaskUIFactory {
private final UIBuildContext buildContext;
+ private int capacity;
private final int maxCapacity;
- private TextFieldWidget textField;
public VolumetricFlaskUIFactory(UIBuildContext buildContext, ItemStack flask) {
this.buildContext = buildContext;
- this.maxCapacity = ((GT_VolumetricFlask) flask.getItem()).getMaxCapacity();
+ GT_VolumetricFlask flaskItem = (GT_VolumetricFlask) flask.getItem();
+ this.capacity = flaskItem.getCapacity(flask);
+ this.maxCapacity = flaskItem.getMaxCapacity();
}
public ModularWindow createWindow() {
- ModularWindow.Builder builder = ModularWindow.builder(176, 107);
+ ModularWindow.Builder builder = ModularWindow.builder(150, 54);
builder.setBackground(ModularUITextures.VANILLA_BACKGROUND);
- textField = new TextFieldWidget() {
-
- @Override
- public void onDestroy() {
- if (isClient()) return;
- setCapacity(getCurrentItem(), (int) MathExpression.parseMathExpression(getText(), 1));
- getContext().onWidgetUpdate();
- }
- };
- textField.setText(
- String.valueOf(((GT_VolumetricFlask) getCurrentItem().getItem()).getCapacity(getCurrentItem())));
builder.widget(
- textField.setNumbers(() -> 1, () -> maxCapacity)
- .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
- .setTextAlignment(Alignment.CenterLeft)
+ new NumericWidget().setGetter(() -> capacity)
+ .setSetter(value -> setCapacity(getCurrentItem(), capacity = (int) value))
+ .setBounds(1, maxCapacity)
+ .setScrollValues(1, 144, 1000)
+ .setDefaultValue(capacity)
.setTextColor(Color.WHITE.dark(1))
+ .setTextAlignment(Alignment.CenterLeft)
.setFocusOnGuiOpen(true)
- .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD_LIGHT_GRAY.withOffset(-1, -1, 2, 2))
- .setPos(60, 55)
- .setSize(59, 12));
-
- addChangeAmountButton(builder, "+1", new Pos2d(20, 26), new Size(22, 20), val -> val + 1);
- addChangeAmountButton(builder, "+10", new Pos2d(48, 26), new Size(28, 20), val -> val + 10);
- addChangeAmountButton(builder, "+100", new Pos2d(82, 26), new Size(32, 20), val -> val + 100);
- addChangeAmountButton(builder, "+1000", new Pos2d(120, 26), new Size(38, 20), val -> val + 1000);
- addChangeAmountButton(builder, "-1", new Pos2d(20, 75), new Size(22, 20), val -> val - 1);
- addChangeAmountButton(builder, "-10", new Pos2d(48, 75), new Size(28, 20), val -> val - 10);
- addChangeAmountButton(builder, "-100", new Pos2d(82, 75), new Size(32, 20), val -> val - 100);
- addChangeAmountButton(builder, "-1000", new Pos2d(120, 75), new Size(38, 20), val -> val - 1000);
- builder.widget(
- new VanillaButtonWidget().setDisplayString("Accept")
- .setClickableGetter(() -> MathExpression.parseMathExpression(textField.getText()) > 0)
- .setOnClick((clickData, widget) -> {
- if (widget.isClient()) {
- textField.onRemoveFocus();
- } else {
- widget.getWindow()
- .tryClose();
- }
- })
- .setPos(128, 51)
- .setSize(38, 20));
+ .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2))
+ .setPos(8, 8)
+ .setSize(77, 12))
+ .widget(new TextWidget("Capacity").setPos(88, 10))
+ .widget(
+ new VanillaButtonWidget().setDisplayString("Confirm")
+ .setOnClick((clickData, widget) -> {
+ if (!widget.isClient()) {
+ widget.getWindow()
+ .tryClose();
+ }
+ })
+ .setPos(8, 26)
+ .setSize(48, 20));
return builder.build();
}
- private void addChangeAmountButton(ModularWindow.Builder builder, String text, Pos2d pos, Size size,
- Function<Integer, Integer> function) {
- builder.widget(
- new VanillaButtonWidget().setDisplayString(text)
- .setOnClick((clickData, widget) -> {
- String currentText = textField.getText();
- int amount = (int) MathExpression.parseMathExpression(currentText, 1);
- amount = Math.min(maxCapacity, Math.max(1, function.apply(amount)));
- textField.setText(String.valueOf(amount));
- })
- .setPos(pos)
- .setSize(size));
- }
-
private ItemStack getCurrentItem() {
return buildContext.getPlayer().inventory.getCurrentItem();
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java
index 41d9b21de1..91d1355869 100644
--- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java
+++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java
@@ -40,7 +40,7 @@ import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.SlotGroup;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier;
@@ -699,10 +699,10 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
.setPos(3, 2)
.setSize(74, 14))
.widget(
- new TextFieldWidget().setSetterInt(val -> minAutoPullStackSize = val)
- .setGetterInt(() -> minAutoPullStackSize)
- .setNumbers(1, Integer.MAX_VALUE)
- .setOnScrollNumbers(1, 4, 64)
+ new NumericWidget().setSetter(val -> minAutoPullStackSize = (int) val)
+ .setGetter(() -> minAutoPullStackSize)
+ .setBounds(1, Integer.MAX_VALUE)
+ .setScrollValues(1, 4, 64)
.setTextAlignment(Alignment.Center)
.setTextColor(Color.WHITE.normal)
.setSize(70, 18)
@@ -713,10 +713,10 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch
.setPos(3, 42)
.setSize(74, 14))
.widget(
- new TextFieldWidget().setSetterInt(val -> autoPullRefreshTime = val)
- .setGetterInt(() -> autoPullRefreshTime)
- .setNumbers(1, Integer.MAX_VALUE)
- .setOnScrollNumbers(1, 4, 64)
+ new NumericWidget().setSetter(val -> autoPullRefreshTime = (int) val)
+ .setGetter(() -> autoPullRefreshTime)
+ .setBounds(1, Integer.MAX_VALUE)
+ .setScrollValues(1, 4, 64)
.setTextAlignment(Alignment.Center)
.setTextColor(Color.WHITE.normal)
.setSize(70, 18)
diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java
index ea723c18fa..20be0f0005 100644
--- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java
+++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java
@@ -45,7 +45,7 @@ import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget;
import com.gtnewhorizons.modularui.common.widget.SlotGroup;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier;
@@ -778,10 +778,10 @@ public class GT_MetaTileEntity_Hatch_Input_ME extends GT_MetaTileEntity_Hatch_In
.setPos(3, 2)
.setSize(74, 14))
.widget(
- new TextFieldWidget().setSetterInt(val -> minAutoPullAmount = val)
- .setGetterInt(() -> minAutoPullAmount)
- .setNumbers(1, Integer.MAX_VALUE)
- .setOnScrollNumbers(1, 4, 64)
+ new NumericWidget().setSetter(val -> minAutoPullAmount = (int) val)
+ .setGetter(() -> minAutoPullAmount)
+ .setBounds(1, Integer.MAX_VALUE)
+ .setScrollValues(1, 4, 64)
.setTextAlignment(Alignment.Center)
.setTextColor(Color.WHITE.normal)
.setSize(70, 18)
@@ -792,10 +792,10 @@ public class GT_MetaTileEntity_Hatch_Input_ME extends GT_MetaTileEntity_Hatch_In
.setPos(3, 42)
.setSize(74, 14))
.widget(
- new TextFieldWidget().setSetterInt(val -> autoPullRefreshTime = val)
- .setGetterInt(() -> autoPullRefreshTime)
- .setNumbers(1, Integer.MAX_VALUE)
- .setOnScrollNumbers(1, 4, 64)
+ new NumericWidget().setSetter(val -> autoPullRefreshTime = (int) val)
+ .setGetter(() -> autoPullRefreshTime)
+ .setBounds(1, Integer.MAX_VALUE)
+ .setScrollValues(1, 4, 64)
.setTextAlignment(Alignment.Center)
.setTextColor(Color.WHITE.normal)
.setSize(70, 18)
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java
index d7ddd84d21..fc6afbd06f 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java
@@ -18,6 +18,7 @@ import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
@@ -412,6 +413,8 @@ public class GT_MetaTileEntity_MicrowaveEnergyTransmitter extends GT_MetaTileEnt
return true;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
builder.widget(
@@ -419,19 +422,19 @@ public class GT_MetaTileEntity_MicrowaveEnergyTransmitter extends GT_MetaTileEnt
.setSize(90, 72)
.setPos(43, 4))
.widget(
- TextWidget.dynamicString(() -> "X: " + GT_Utility.parseNumberToString(mTargetX))
+ new TextWidget().setStringSupplier(() -> "X: " + numberFormat.format(mTargetX))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 8))
.widget(
- TextWidget.dynamicString(() -> "Y: " + GT_Utility.parseNumberToString(mTargetY))
+ new TextWidget().setStringSupplier(() -> "Y: " + numberFormat.format(mTargetY))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 16))
.widget(
- TextWidget.dynamicString(() -> "Z: " + GT_Utility.parseNumberToString(mTargetZ))
+ new TextWidget().setStringSupplier(() -> "Z: " + numberFormat.format(mTargetZ))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 24))
.widget(
- TextWidget.dynamicString(() -> "Dim: " + GT_Utility.parseNumberToString(mTargetD))
+ new TextWidget().setStringSupplier(() -> "Dim: " + numberFormat.format(mTargetD))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 32))
.widget(
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Teleporter.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Teleporter.java
index 6b343b5ca8..0666c55ac4 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Teleporter.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Teleporter.java
@@ -41,6 +41,7 @@ import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
@@ -520,6 +521,8 @@ public class GT_MetaTileEntity_Teleporter extends GT_MetaTileEntity_BasicTank
return true;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
builder.widget(
@@ -527,19 +530,19 @@ public class GT_MetaTileEntity_Teleporter extends GT_MetaTileEntity_BasicTank
.setSize(90, 72)
.setPos(43, 4))
.widget(
- TextWidget.dynamicString(() -> "X: " + GT_Utility.parseNumberToString(mTargetX))
+ new TextWidget().setStringSupplier(() -> "X: " + numberFormat.format(mTargetX))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 8))
.widget(
- TextWidget.dynamicString(() -> "Y: " + GT_Utility.parseNumberToString(mTargetY))
+ new TextWidget().setStringSupplier(() -> "Y: " + numberFormat.format(mTargetY))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 16))
.widget(
- TextWidget.dynamicString(() -> "Z: " + GT_Utility.parseNumberToString(mTargetZ))
+ new TextWidget().setStringSupplier(() -> "Z: " + numberFormat.format(mTargetZ))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 24))
.widget(
- TextWidget.dynamicString(() -> "Dim: " + GT_Utility.parseNumberToString(mTargetD))
+ new TextWidget().setStringSupplier(() -> "Dim: " + numberFormat.format(mTargetD))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(46, 32))
.widget(
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java
index ce8abe7a73..e520b87e43 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java
@@ -12,6 +12,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import com.google.common.collect.ImmutableList;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
@@ -158,6 +159,8 @@ public abstract class GT_MetaTileEntity_ConcreteBackfillerBase extends GT_MetaTi
return true;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inventorySlot) {
super.drawTexts(screenElements, inventorySlot);
@@ -167,7 +170,7 @@ public abstract class GT_MetaTileEntity_ConcreteBackfillerBase extends GT_MetaTi
.dynamicString(
() -> StatCollector.translateToLocalFormatted(
"GT5U.gui.text.backfiller_current_area",
- GT_Utility.formatNumbers(clientYHead)))
+ numberFormat.format(clientYHead)))
.setSynced(false)
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(widget -> getBaseMetaTileEntity().isActive() && workState == STATE_UPWARD))
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java
index 168fda93ca..89f180f1c1 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java
@@ -32,6 +32,7 @@ import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructa
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
@@ -565,6 +566,8 @@ public abstract class GT_MetaTileEntity_FusionComputer
return 166;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
builder
@@ -610,7 +613,7 @@ public abstract class GT_MetaTileEntity_FusionComputer
.setTexture(GT_UITextures.PROGRESSBAR_STORED_EU, 147)
.setPos(5, 156)
.setSize(147, 5))
- .widget(TextWidget.dynamicString(() -> {
+ .widget(new TextWidget().setStringSupplier(() -> {
long energy = getBaseMetaTileEntity().getStoredEU();
if (energy > 160_000_000L && energy < 160_010_000L) {
energy = 160_000_000L;
@@ -624,7 +627,7 @@ public abstract class GT_MetaTileEntity_FusionComputer
if (energy > 5_120_000_000L && energy < 5_120_080_000L) {
energy = 5_120_000_000L;
}
- return GT_Utility.formatNumbers(energy) + " EU";
+ return numberFormat.format(energy) + " EU";
})
.setDefaultColor(COLOR_TEXT_RED.get())
.setPos(50, 155))
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java
index 254f5bf0b0..c4028f1819 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java
@@ -36,6 +36,7 @@ import net.minecraftforge.fluids.FluidStack;
import org.jetbrains.annotations.NotNull;
import com.google.common.collect.ImmutableList;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
@@ -401,7 +402,7 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
builder.add(
StatCollector.translateToLocalFormatted(
"GT5U.gui.text.pump_rate.1",
- EnumChatFormatting.AQUA + getFlowRatePerTick())
+ EnumChatFormatting.AQUA + numberFormat.format(getFlowRatePerTick()))
+ StatCollector.translateToLocal("GT5U.gui.text.pump_rate.2"),
getReservoirContents() + StatCollector.translateToLocal("GT5U.gui.text.pump_recovery.2"));
} else {
@@ -423,9 +424,8 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
return ImmutableList.of(failureReason);
}
- @NotNull
- protected String getFlowRatePerTick() {
- return GT_Utility.formatNumbers(this.mMaxProgresstime > 0 ? (mOilFlow / this.mMaxProgresstime) : 0);
+ protected int getFlowRatePerTick() {
+ return this.mMaxProgresstime > 0 ? (mOilFlow / this.mMaxProgresstime) : 0;
}
@NotNull
@@ -438,7 +438,7 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
}
private @NotNull String clientFluidType = "";
- private @NotNull String clientPumpRate = "";
+ private int clientPumpRate = 0;
private @NotNull String clientReservoirContents = "";
@NotNull
@@ -455,42 +455,41 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
.translateToLocalFormatted("GT5U.gui.text.pump_recovery.1", GT_Utility.formatNumbers(amount));
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inventorySlot) {
super.drawTexts(screenElements, inventorySlot);
screenElements
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> EnumChatFormatting.GRAY
+ StatCollector.translateToLocalFormatted("GT5U.gui.text.pump_fluid_type", clientFluidType))
- .setSynced(false)
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(widget -> getBaseMetaTileEntity().isActive() && workState == STATE_AT_BOTTOM))
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> EnumChatFormatting.GRAY
+ StatCollector.translateToLocalFormatted(
"GT5U.gui.text.pump_rate.1",
- EnumChatFormatting.AQUA + clientPumpRate)
+ EnumChatFormatting.AQUA + numberFormat.format(clientPumpRate))
+ EnumChatFormatting.GRAY
+ StatCollector.translateToLocal("GT5U.gui.text.pump_rate.2"))
- .setSynced(false)
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(widget -> getBaseMetaTileEntity().isActive() && workState == STATE_AT_BOTTOM))
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> EnumChatFormatting.GRAY + clientReservoirContents
+ EnumChatFormatting.GRAY
+ StatCollector.translateToLocal("GT5U.gui.text.pump_recovery.2"))
- .setSynced(false)
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(widget -> getBaseMetaTileEntity().isActive() && workState == STATE_AT_BOTTOM))
.widget(new FakeSyncWidget.IntegerSyncer(() -> workState, newInt -> workState = newInt))
.widget(new FakeSyncWidget.StringSyncer(this::getFluidName, newString -> clientFluidType = newString))
- .widget(new FakeSyncWidget.StringSyncer(this::getFlowRatePerTick, newString -> clientPumpRate = newString))
+ .widget(new FakeSyncWidget.IntegerSyncer(this::getFlowRatePerTick, newInt -> clientPumpRate = newInt))
.widget(
new FakeSyncWidget.StringSyncer(
this::getReservoirContents,
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
index e719f8db0f..045374823f 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
@@ -30,6 +30,7 @@ import net.minecraftforge.fluids.FluidStack;
import org.jetbrains.annotations.NotNull;
import com.google.common.collect.ImmutableList;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
@@ -588,40 +589,39 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
return tt;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inventorySlot) {
super.drawTexts(screenElements, inventorySlot);
screenElements
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> EnumChatFormatting.GRAY + StatCollector.translateToLocalFormatted(
"GT5U.gui.text.drill_ores_left_chunk",
- GT_Utility.formatNumbers(clientOreListSize)))
- .setSynced(false)
+ numberFormat.format(clientOreListSize)))
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(
widget -> getBaseMetaTileEntity().isActive() && clientOreListSize > 0
&& workState == STATE_AT_BOTTOM))
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> EnumChatFormatting.GRAY + StatCollector.translateToLocalFormatted(
"GT5U.gui.text.drill_ores_left_layer",
- GT_Utility.formatNumbers(clientYHead),
- GT_Utility.formatNumbers(clientOreListSize)))
- .setSynced(false)
+ numberFormat.format(clientYHead),
+ numberFormat.format(clientOreListSize)))
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(
widget -> getBaseMetaTileEntity().isActive() && clientYHead > 0 && workState == STATE_DOWNWARD))
.widget(
- TextWidget
- .dynamicString(
+ new TextWidget()
+ .setStringSupplier(
() -> EnumChatFormatting.GRAY + StatCollector.translateToLocalFormatted(
"GT5U.gui.text.drill_chunks_left",
- GT_Utility.formatNumbers(clientCurrentChunk),
- GT_Utility.formatNumbers(clientTotalChunks)))
- .setSynced(false)
+ numberFormat.format(clientCurrentChunk),
+ numberFormat.format(clientTotalChunks)))
.setTextAlignment(Alignment.CenterLeft)
.setEnabled(
widget -> getBaseMetaTileEntity().isActive() && clientCurrentChunk > 0
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java
index 0f6fa77197..547ec67921 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java
@@ -54,7 +54,7 @@ import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
import com.gtnewhorizons.modularui.common.widget.MultiChildWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
@@ -1050,9 +1050,9 @@ public class GT_MetaTileEntity_PCBFactory extends
.setSize(20, 16)
.setPos(173, 98))
.widget(
- new TextFieldWidget().setGetterInt(() -> mSetTier)
- .setSetterInt(val -> mSetTier = val)
- .setNumbers(1, 3)
+ new NumericWidget().setGetter(() -> mSetTier)
+ .setSetter(val -> mSetTier = (int) val)
+ .setBounds(1, 3)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("PCB Factory Tier")
@@ -1161,9 +1161,9 @@ public class GT_MetaTileEntity_PCBFactory extends
.setEnabled(widget -> !getBaseMetaTileEntity().isActive())
.setPos(0, 4))
.widget(
- new TextFieldWidget().setGetterInt(() -> (int) ((1f / mRoughnessMultiplier) * 100f))
- .setSetterInt(val -> mRoughnessMultiplier = 100f / val)
- .setNumbers(50, 200)
+ new NumericWidget().setGetter(() -> (int) ((1f / mRoughnessMultiplier) * 100f))
+ .setSetter(val -> mRoughnessMultiplier = 100f / (int) val)
+ .setBounds(50, 200)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip(
@@ -1184,18 +1184,18 @@ public class GT_MetaTileEntity_PCBFactory extends
.widget(
new DynamicPositionedRow().setSynced(false)
.widget(
- new TextFieldWidget().setGetterInt(() -> mBioOffsets[0])
- .setSetterInt(val -> mBioOffsets[0] = val)
- .setNumbers(-16, 16)
+ new NumericWidget().setGetter(() -> mBioOffsets[0])
+ .setSetter(val -> mBioOffsets[0] = (int) val)
+ .setBounds(-16, 16)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("X Offset")
.setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD)
.setSize(36, 18))
.widget(
- new TextFieldWidget().setGetterInt(() -> mBioOffsets[1])
- .setSetterInt(val -> mBioOffsets[1] = val)
- .setNumbers(-16, 16)
+ new NumericWidget().setGetter(() -> mBioOffsets[1])
+ .setSetter(val -> mBioOffsets[1] = (int) val)
+ .setBounds(-16, 16)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("Z Offset")
@@ -1208,18 +1208,18 @@ public class GT_MetaTileEntity_PCBFactory extends
.widget(
new DynamicPositionedRow().setSynced(false)
.widget(
- new TextFieldWidget().setGetterInt(() -> mOCTier1Offsets[0])
- .setSetterInt(val -> mOCTier1Offsets[0] = val)
- .setNumbers(-16, 16)
+ new NumericWidget().setGetter(() -> mOCTier1Offsets[0])
+ .setSetter(val -> mOCTier1Offsets[0] = (int) val)
+ .setBounds(-16, 16)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("X Offset")
.setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD)
.setSize(36, 18))
.widget(
- new TextFieldWidget().setGetterInt(() -> mOCTier1Offsets[1])
- .setSetterInt(val -> mOCTier1Offsets[1] = val)
- .setNumbers(-16, 16)
+ new NumericWidget().setGetter(() -> mOCTier1Offsets[1])
+ .setSetter(val -> mOCTier1Offsets[1] = (int) val)
+ .setBounds(-16, 16)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("Z Offset")
@@ -1232,18 +1232,18 @@ public class GT_MetaTileEntity_PCBFactory extends
.widget(
new DynamicPositionedRow().setSynced(false)
.widget(
- new TextFieldWidget().setGetterInt(() -> mOCTier2Offsets[0])
- .setSetterInt(val -> mOCTier2Offsets[0] = val)
- .setNumbers(-16, 16)
+ new NumericWidget().setGetter(() -> mOCTier2Offsets[0])
+ .setSetter(val -> mOCTier2Offsets[0] = (int) val)
+ .setBounds(-16, 16)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("X Offset")
.setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD)
.setSize(36, 18))
.widget(
- new TextFieldWidget().setGetterInt(() -> mOCTier2Offsets[1])
- .setSetterInt(val -> mOCTier2Offsets[1] = val)
- .setNumbers(-16, 16)
+ new NumericWidget().setGetter(() -> mOCTier2Offsets[1])
+ .setSetter(val -> mOCTier2Offsets[1] = (int) val)
+ .setBounds(-16, 16)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("Z Offset")
diff --git a/src/main/java/gregtech/common/tileentities/machines/multiblock/AdvChemicalProcessor.java b/src/main/java/gregtech/common/tileentities/machines/multiblock/AdvChemicalProcessor.java
index a253f6ac1e..87e986f941 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multiblock/AdvChemicalProcessor.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multiblock/AdvChemicalProcessor.java
@@ -38,7 +38,7 @@ import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
import com.gtnewhorizons.modularui.common.widget.MultiChildWidget;
import com.gtnewhorizons.modularui.common.widget.SlotGroup;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
@@ -390,9 +390,9 @@ public class AdvChemicalProcessor
.setPos(20 * (i % 4) + 18, 18 + (i / 4) * 20));
}
child.addChild(
- new TextFieldWidget().setGetterInt(() -> maxComplexParallels)
- .setSetterInt(parallel -> setMaxComplexParallels(parallel, true))
- .setNumbers(1, MAX_PROCESSES)
+ new NumericWidget().setGetter(() -> maxComplexParallels)
+ .setSetter(parallel -> setMaxComplexParallels((int) parallel, true))
+ .setBounds(1, MAX_PROCESSES)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("Tier")
diff --git a/src/main/java/gregtech/common/tileentities/machines/multiblock/LaserEngraver.java b/src/main/java/gregtech/common/tileentities/machines/multiblock/LaserEngraver.java
index 93bcc09a0b..d4a7283f3e 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multiblock/LaserEngraver.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multiblock/LaserEngraver.java
@@ -23,7 +23,7 @@ import com.gtnewhorizons.modularui.api.math.Color;
import com.gtnewhorizons.modularui.api.widget.IWidgetBuilder;
import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
import com.gtnewhorizons.modularui.common.widget.MultiChildWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
@@ -250,9 +250,9 @@ public class LaserEngraver extends ComplexParallelController<LaserEngraver, Lase
.setPos(20 * (i % 4) + 18, 18 + (i / 4) * 20));
}
child.addChild(
- new TextFieldWidget().setGetterInt(() -> maxComplexParallels)
- .setSetterInt(parallel -> setMaxComplexParallels(parallel, true))
- .setNumbers(1, MAX_PROCESSES)
+ new NumericWidget().setGetter(() -> maxComplexParallels)
+ .setSetter(parallel -> setMaxComplexParallels((int) parallel, true))
+ .setBounds(1, MAX_PROCESSES)
.setTextColor(Color.WHITE.normal)
.setTextAlignment(Alignment.Center)
.addTooltip("Tier")
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
index fa4147f34c..91ff46c007 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
@@ -19,6 +19,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
@@ -522,6 +523,8 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
return true;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
builder.widget(
@@ -545,9 +548,9 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
new TextWidget("Item Amount").setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(10, 20))
.widget(
- TextWidget
- .dynamicString(
- () -> GT_Utility.parseNumberToString(
+ new TextWidget()
+ .setStringSupplier(
+ () -> numberFormat.format(
this instanceof GT_MetaTileEntity_QuantumChest
? ((GT_MetaTileEntity_QuantumChest) this).mItemCount
: 0))
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java
index 0c640d9ace..bb4ef5e709 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java
@@ -26,6 +26,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
@@ -543,6 +544,8 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
return true;
}
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
fluidTank.setAllowOverflow(allowOverflow());
@@ -570,7 +573,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(10, 20))
.widget(
- TextWidget.dynamicString(() -> GT_Utility.parseNumberToString(mFluid != null ? mFluid.amount : 0))
+ new TextWidget().setStringSupplier(() -> numberFormat.format(mFluid != null ? mFluid.amount : 0))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(10, 30))
.widget(