Files
NotEnoughItems/src/main/java/codechicken/nei/config/OptionIntegerField.java
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

61 lines
1.5 KiB
Java
Raw Normal View History

package codechicken.nei.config;
2024-12-29 04:36:53 +02:00
import codechicken.lib.gui.GuiDraw;
public class OptionIntegerField extends OptionTextField {
2024-12-29 04:36:53 +02:00
public static final long UNSIGNED_INT_MAX = 0xFFFFFFFFL;
public final long min;
public final long max;
2024-12-29 04:36:53 +02:00
public OptionIntegerField(String name, long min, long max) {
super(name);
this.min = min;
this.max = max;
}
public OptionIntegerField(String name) {
this(name, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
2024-12-29 04:36:53 +02:00
@Override
protected int getMaxInputWidth() {
if (renderTag().getValue().startsWith("0x")) {
return GuiDraw.getStringWidth("0x" + Long.toHexString(this.max).toUpperCase()) + 32;
}
return GuiDraw.getStringWidth(String.valueOf(this.max)) + 32;
}
@Override
public boolean isValidInput(String s) {
2024-12-29 04:36:53 +02:00
if (s.isEmpty()) return true;
try {
2024-02-21 18:12:28 +02:00
if (s.startsWith("0x")) {
2024-12-29 04:36:53 +02:00
Long.parseUnsignedLong(s.substring(2), 16);
2024-02-21 18:12:28 +02:00
} else {
Integer.parseInt(s);
}
return true;
} catch (NumberFormatException nfe) {
return false;
}
}
@Override
public boolean isValidValue(String s) {
2024-12-29 04:36:53 +02:00
if (s.isEmpty() || !isValidInput(s)) return false;
long i = 0;
2024-02-21 18:12:28 +02:00
if (s.startsWith("0x")) {
2024-12-29 04:36:53 +02:00
i = Long.parseUnsignedLong(s.substring(2), 16);
2024-02-21 18:12:28 +02:00
} else {
i = Integer.parseInt(s);
}
2024-12-29 04:36:53 +02:00
return i >= this.min && i <= this.max;
}
}