From 56050ef5c99ecaef810e3bb38e2a43b15940a3da Mon Sep 17 00:00:00 2001 From: mornhussakuyo-hub Date: Tue, 8 Sep 2026 14:49:59 +0800 Subject: [PATCH] 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); + } + } +}