diff options
Diffstat (limited to 'src')
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 |
