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.ForgeDirecti