From 56050ef5c99ecaef810e3bb38e2a43b15940a3da Mon Sep 17 00:00:00 2001 From: mornhussakuyo-hub Date: Tue, 8 Sep 2026 14:49:59 +0800 Subject: [PATCH 1/3] Fix truncation of Baritone long settings --- .../gui/DefaultSettingsWidgetFactory.java | 10 ++++ .../pathing/BaritoneSettings.java | 8 +-- .../meteorclient/settings/LongSetting.java | 55 +++++++++++++++++++ 3 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index e085d15736b..7442d0b482f 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -47,6 +47,7 @@ public DefaultSettingsWidgetFactory(GuiTheme theme) { factories.put(BoolSetting.class, (table, setting) -> boolW(table, (BoolSetting) setting)); factories.put(IntSetting.class, (table, setting) -> intW(table, (IntSetting) setting)); + factories.put(LongSetting.class, (table, setting) -> longW(table, (LongSetting) setting)); factories.put(DoubleSetting.class, (table, setting) -> doubleW(table, (DoubleSetting) setting)); factories.put(StringSetting.class, (table, setting) -> stringW(table, (StringSetting) setting)); factories.put(EnumSetting.class, (table, setting) -> enumW(table, (EnumSetting>) setting)); @@ -178,6 +179,15 @@ private void intW(WTable table, IntSetting setting) { reset(table, setting, () -> edit.set(setting.get())); } + private void longW(WTable table, LongSetting setting) { + WTextBox textBox = table.add(theme.textBox(setting.get().toString(), (text, c) -> Character.isDigit(c) || c == '-' && !text.contains("-"))).expandX().widget(); + textBox.actionOnUnfocused = () -> { + if (!setting.parse(textBox.get())) textBox.set(setting.get().toString()); + }; + + reset(table, setting, () -> textBox.set(setting.get().toString())); + } + private void doubleW(WTable table, DoubleSetting setting) { WDoubleEdit edit = theme.doubleEdit(setting.get(), setting.min, setting.max, setting.sliderMin, setting.sliderMax, setting.decimalPlaces, setting.noSlider); table.add(edit).expandX(); diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java index 49234e307c5..62f5077d882 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java @@ -145,12 +145,12 @@ private void createWrappers() { .build(); } } else if (value instanceof Long) { - sgInt.add(new IntSetting.Builder() + sgInt.add(new LongSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) - .defaultValue(((Long) setting.defaultValue).intValue()) - .onChanged(integer -> setting.value = integer.longValue()) - .onModuleActivated(integerSetting -> integerSetting.set(((Long) setting.value).intValue())) + .defaultValue((Long) setting.defaultValue) + .onChanged(longValue -> setting.value = longValue) + .onModuleActivated(longSetting -> longSetting.set((Long) setting.value)) .build() ); } else if (value instanceof String) { diff --git a/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java new file mode 100644 index 00000000000..c530a6cf59c --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java @@ -0,0 +1,55 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.settings; + +import net.minecraft.nbt.CompoundTag; + +import java.util.function.Consumer; + +public class LongSetting extends Setting { + private LongSetting(String name, String description, long defaultValue, Consumer onChanged, Consumer> onModuleActivated, IVisible visible) { + super(name, description, defaultValue, onChanged, onModuleActivated, visible); + } + + @Override + protected Long parseImpl(String str) { + try { + return Long.parseLong(str.trim()); + } catch (NumberFormatException _) { + return null; + } + } + + @Override + protected boolean isValueValid(Long value) { + return true; + } + + @Override + public CompoundTag save(CompoundTag tag) { + tag.putLong("value", get()); + + return tag; + } + + @Override + public Long load(CompoundTag tag) { + set(tag.getLongOr("value", 0)); + + return get(); + } + + public static class Builder extends SettingBuilder { + public Builder() { + super(0L); + } + + @Override + public LongSetting build() { + return new LongSetting(name, description, defaultValue, onChanged, onModuleActivated, visible); + } + } +} From b7bbedf64713c97560a6aa40cb46265d899e7ac5 Mon Sep 17 00:00:00 2001 From: MornHus <248266228+mornhussakuyo-hub@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:20:30 +0800 Subject: [PATCH 2/3] Add min/max constraints to long settings --- .../gui/DefaultSettingsWidgetFactory.java | 3 +- .../meteorclient/settings/LongSetting.java | 29 +++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index 7442d0b482f..80a2b21ba76 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -182,7 +182,8 @@ private void intW(WTable table, IntSetting setting) { private void longW(WTable table, LongSetting setting) { WTextBox textBox = table.add(theme.textBox(setting.get().toString(), (text, c) -> Character.isDigit(c) || c == '-' && !text.contains("-"))).expandX().widget(); textBox.actionOnUnfocused = () -> { - if (!setting.parse(textBox.get())) textBox.set(setting.get().toString()); + setting.parse(textBox.get()); + textBox.set(setting.get().toString()); }; reset(table, setting, () -> textBox.set(setting.get().toString())); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java index c530a6cf59c..5a3c91c9b46 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java @@ -10,8 +10,13 @@ import java.util.function.Consumer; public class LongSetting extends Setting { - private LongSetting(String name, String description, long defaultValue, Consumer onChanged, Consumer> onModuleActivated, IVisible visible) { + public final long min, max; + + private LongSetting(String name, String description, long defaultValue, Consumer onChanged, Consumer> onModuleActivated, IVisible visible, long min, long max) { super(name, description, defaultValue, onChanged, onModuleActivated, visible); + + this.min = min; + this.max = max; } @Override @@ -25,7 +30,7 @@ protected Long parseImpl(String str) { @Override protected boolean isValueValid(Long value) { - return true; + return value >= min && value <= max; } @Override @@ -43,13 +48,31 @@ public Long load(CompoundTag tag) { } public static class Builder extends SettingBuilder { + private long min = Long.MIN_VALUE, max = Long.MAX_VALUE; + public Builder() { super(0L); } + public Builder min(long min) { + this.min = min; + return this; + } + + public Builder max(long max) { + this.max = max; + return this; + } + + public Builder range(long min, long max) { + this.min = Math.min(min, max); + this.max = Math.max(min, max); + return this; + } + @Override public LongSetting build() { - return new LongSetting(name, description, defaultValue, onChanged, onModuleActivated, visible); + return new LongSetting(name, description, defaultValue, onChanged, onModuleActivated, visible, min, max); } } } From a36c8dc2f858702f8ce6ef8cb06d176d2518f0ba Mon Sep 17 00:00:00 2001 From: MornHus <248266228+mornhussakuyo-hub@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:45:44 +0800 Subject: [PATCH 3/3] Use default value when loading missing long settings --- .../meteordevelopment/meteorclient/settings/LongSetting.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java index 5a3c91c9b46..11683416f49 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/LongSetting.java @@ -42,7 +42,7 @@ public CompoundTag save(CompoundTag tag) { @Override public Long load(CompoundTag tag) { - set(tag.getLongOr("value", 0)); + set(tag.getLongOr("value", defaultValue)); return get(); }