diff --git a/src/main/java/com/ldtteam/structurize/client/gui/WindowReplaceBlock.java b/src/main/java/com/ldtteam/structurize/client/gui/WindowReplaceBlock.java index c7cd60111..0ab3f826a 100644 --- a/src/main/java/com/ldtteam/structurize/client/gui/WindowReplaceBlock.java +++ b/src/main/java/com/ldtteam/structurize/client/gui/WindowReplaceBlock.java @@ -5,6 +5,7 @@ import com.ldtteam.structurize.Network; import com.ldtteam.structurize.api.util.ItemStackUtils; import com.ldtteam.structurize.blocks.ModBlocks; +import com.ldtteam.structurize.client.gui.util.InputFilters; import com.ldtteam.structurize.client.gui.util.ItemPositionsStorage; import com.ldtteam.structurize.client.gui.util.ItemUtil; import com.ldtteam.structurize.network.messages.ReplaceBlockMessage; @@ -51,6 +52,7 @@ public WindowReplaceBlock( Component.translatable("com.ldtteam.structurize.gui.scan.replace.pct")); this.toReplace = toReplace; findPaneOfTypeByID("count", TextField.class).setText("100"); + findPaneOfTypeByID(COUNT, TextField.class).setFilter(InputFilters.PERCENT); } @Override diff --git a/src/main/java/com/ldtteam/structurize/client/gui/WindowSelectRes.java b/src/main/java/com/ldtteam/structurize/client/gui/WindowSelectRes.java index e76d82b32..2b64e63c8 100644 --- a/src/main/java/com/ldtteam/structurize/client/gui/WindowSelectRes.java +++ b/src/main/java/com/ldtteam/structurize/client/gui/WindowSelectRes.java @@ -187,7 +187,7 @@ public WindowSelectRes( if (this.selectCountText != null) { countField.setVisible(true); - countField.setFilter(InputFilters.ONLY_POSITIVE_NUMBERS); + countField.setFilter(InputFilters.ONLY_POSITIVE_NUMBERS_MAX1k); countText.setVisible(true); countText.setText(selectCountText); } diff --git a/src/main/java/com/ldtteam/structurize/client/gui/util/InputFilters.java b/src/main/java/com/ldtteam/structurize/client/gui/util/InputFilters.java index dc381c382..22394d53e 100644 --- a/src/main/java/com/ldtteam/structurize/client/gui/util/InputFilters.java +++ b/src/main/java/com/ldtteam/structurize/client/gui/util/InputFilters.java @@ -19,7 +19,7 @@ public boolean isAllowedCharacter(final char c) } }; - public static TextField.Filter ONLY_POSITIVE_NUMBERS = new TextField.Filter() + public static TextField.Filter ONLY_POSITIVE_NUMBERS_MAX1k = new TextField.Filter() { @Override public String filter(final String s) @@ -29,7 +29,12 @@ public String filter(final String s) int i = Integer.parseInt(s); if (i > 0) { - return s; + if (i > 999) + { + i = 999; + } + + return String.valueOf(i); } } catch (Exception ignored) @@ -44,4 +49,35 @@ public boolean isAllowedCharacter(final char c) return Character.isDigit(c); } }; + + public static TextField.Filter PERCENT = new TextField.Filter() + { + @Override + public String filter(final String s) + { + try + { + int i = Integer.parseInt(s); + if (i >= 0) + { + if (i > 100) + { + i = 100; + } + + return String.valueOf(i); + } + } + catch (Exception ignored) + { + } + return "0"; + } + + @Override + public boolean isAllowedCharacter(final char c) + { + return Character.isDigit(c); + } + }; }