aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/items
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/items
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/items')
-rw-r--r--src/main/java/gregtech/common/items/GT_VolumetricFlask.java89
1 files changed, 27 insertions, 62 deletions
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();
}