Files
NotEnoughItems/src/main/java/codechicken/nei/recipe/debug/IntegerField.java
T

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

109 lines
3.1 KiB
Java
Raw Normal View History

2026-03-22 14:10:10 +02:00
package codechicken.nei.recipe.debug;
import java.util.function.BiConsumer;
2026-05-07 18:57:15 +03:00
import java.util.function.IntPredicate;
2026-03-22 14:10:10 +02:00
import net.minecraft.client.Minecraft;
import org.lwjgl.input.Keyboard;
import codechicken.nei.FormattedTextField;
import codechicken.nei.TextField;
public class IntegerField extends TextField implements IUpdatableWidget {
protected int defaultValue = 0;
protected BiConsumer<IntegerField, String> onChange;
2026-05-07 18:57:15 +03:00
protected IntPredicate validator;
2026-03-22 14:10:10 +02:00
2026-05-07 18:57:15 +03:00
public IntegerField(String ident, BiConsumer<IntegerField, String> onChange, IntPredicate validator,
int defaultValue) {
2026-03-22 14:10:10 +02:00
super(ident);
this.onChange = onChange;
2026-05-07 18:57:15 +03:00
this.validator = validator;
2026-03-22 14:10:10 +02:00
this.defaultValue = defaultValue;
this.h = 16;
this.z = 2;
((FormattedTextField) field).setPlaceholder(Integer.toString(this.defaultValue));
}
@Override
protected void initInternalTextField() {
field = new FormattedTextField(Minecraft.getMinecraft().fontRenderer, 0, 0, 0, 0) {
@Override
public String getText() {
final String text = super.getText();
return !isFocused() && this.placeholder.equals(text) ? "" : text;
}
@Override
protected boolean beforeWrite(String text) {
if (text == null || text.isEmpty()) return true;
try {
Integer.parseInt(text);
return true;
} catch (NumberFormatException e) {
return false;
}
}
@Override
public boolean textboxKeyTyped(char keyChar, int keyID) {
if (!isFocused()) return false;
if (super.textboxKeyTyped(keyChar, keyID)) {
return true;
} else if (keyID == Keyboard.KEY_DOWN) {
setText(Integer.toString(getInteger() - 1));
return true;
} else if (keyID == Keyboard.KEY_UP) {
setText(Integer.toString(getInteger() + 1));
return true;
}
return false;
}
};
field.setMaxStringLength(maxSearchLength);
field.setCursorPositionZero();
}
protected int getInteger() {
2026-05-07 18:57:15 +03:00
return getInteger(text());
}
protected int getInteger(String text) {
2026-03-22 14:10:10 +02:00
try {
2026-05-07 18:57:15 +03:00
return Integer.parseInt(text);
2026-03-22 14:10:10 +02:00
} catch (NumberFormatException nfe) {
return this.defaultValue;
}
}
@Override
public boolean onMouseWheel(int i, int mx, int my) {
if (!contains(mx, my)) return false;
2026-05-06 19:31:00 +03:00
setText(Integer.toString(getInteger() - i));
2026-03-22 14:10:10 +02:00
return true;
}
2026-05-07 18:57:15 +03:00
@Override
public void setText(String newValue) {
if (validator == null || validator.test(getInteger(newValue))) {
super.setText(newValue);
}
}
2026-03-22 14:10:10 +02:00
public void updateValue(String newValue) {
setText(newValue);
}
@Override
public void onTextChange(String oldText) {
onChange.accept(this, oldText);
}
}