aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers/redstone
diff options
context:
space:
mode:
authorAbdiel Kavash <19243993+AbdielKavash@users.noreply.github.com>2024-03-12 19:00:02 -0600
committerGitHub <noreply@github.com>2024-03-13 02:00:02 +0100
commit26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45 (patch)
treeed601445c225fc184a76cf7a0fa8b6d80113c2e0 /src/main/java/gregtech/common/covers/redstone
parent056eb3667f76e260d99b9ad72ea83253be162543 (diff)
downloadGT5-Unofficial-26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45.tar.gz
GT5-Unofficial-26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45.tar.bz2
GT5-Unofficial-26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45.zip
Numeric widget and localized number formatting. (#2532)
* Cover widgets * Volumetric flask * Misc textfields * Update GT_MetaTileEntity_MultiBlockBase.java * Update GT_MetaTileEntity_MultiBlockBase.java * Fixes decimal digits --------- Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/common/covers/redstone')
-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
3 files changed, 66 insertions, 56 deletions
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();