From d2d7e8db98aac6973c4c1022ab06ee0022399c8f Mon Sep 17 00:00:00 2001 From: ruriyoshinova Date: Fri, 25 Oct 2024 19:48:31 +0800 Subject: [PATCH] feat: BaritoneSettings - maxValues --- .../pathing/BaritoneSettings.java | 30 ++++++++++++++----- .../meteorclient/settings/DoubleSetting.java | 20 ++++++++++--- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java index d900c6419a..b61d621ec4 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java @@ -24,6 +24,8 @@ public class BaritoneSettings implements IPathManager.ISettings { private Setting walkOnWater, walkOnLava; private Setting step, noFall; + private static final Map SETTING_MAX_VALUES = new HashMap<>(); + public BaritoneSettings() { createWrappers(); } @@ -58,6 +60,10 @@ public void save() { SettingsUtil.save(BaritoneAPI.getSettings()); } + static { + SETTING_MAX_VALUES.put("pathCutoffFactor", 1.0); + } + // Wrappers @SuppressWarnings({"rawtypes", "unchecked"}) @@ -99,24 +105,32 @@ private void createWrappers() { } } else if (value instanceof Double) { - sgDouble.add(new DoubleSetting.Builder() + DoubleSetting.Builder builder = new DoubleSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) .defaultValue((double) setting.defaultValue) .onChanged(aDouble -> setting.value = aDouble) - .onModuleActivated(doubleSetting -> doubleSetting.set((Double) setting.value)) - .build() - ); + .onModuleActivated(doubleSetting -> doubleSetting.set((Double) setting.value)); + + if (SETTING_MAX_VALUES.containsKey(setting.getName())) { + builder.maxValue(SETTING_MAX_VALUES.get(setting.getName())); + } + + sgDouble.add(builder.build()); } else if (value instanceof Float) { - sgDouble.add(new DoubleSetting.Builder() + DoubleSetting.Builder builder = new DoubleSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) .defaultValue(((Float) setting.defaultValue).doubleValue()) .onChanged(aDouble -> setting.value = aDouble.floatValue()) - .onModuleActivated(doubleSetting -> doubleSetting.set(((Float) setting.value).doubleValue())) - .build() - ); + .onModuleActivated(doubleSetting -> doubleSetting.set(((Float) setting.value).doubleValue())); + + if (SETTING_MAX_VALUES.containsKey(setting.getName())) { + builder.maxValue(SETTING_MAX_VALUES.get(setting.getName())); + } + + sgDouble.add(builder.build()); } else if (value instanceof Integer) { Setting wrapper = sgInt.add(new IntSetting.Builder() diff --git a/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java index c52ba26132..b6a9cc69f8 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java @@ -15,14 +15,16 @@ public class DoubleSetting extends Setting { public final boolean onSliderRelease; public final int decimalPlaces; public final boolean noSlider; + public final double maxValue; - private DoubleSetting(String name, String description, double defaultValue, Consumer onChanged, Consumer> onModuleActivated, IVisible visible, double min, double max, double sliderMin, double sliderMax, boolean onSliderRelease, int decimalPlaces, boolean noSlider) { + private DoubleSetting(String name, String description, double defaultValue, Consumer onChanged, Consumer> onModuleActivated, IVisible visible, double min, double max, double sliderMin, double sliderMax, boolean onSliderRelease, int decimalPlaces, boolean noSlider, double maxValue) { super(name, description, defaultValue, onChanged, onModuleActivated, visible); this.min = min; this.max = max; this.sliderMin = sliderMin; - this.sliderMax = sliderMax; + this.maxValue = maxValue; + this.sliderMax = Math.min(sliderMax, maxValue); this.decimalPlaces = decimalPlaces; this.onSliderRelease = onSliderRelease; this.noSlider = noSlider; @@ -39,7 +41,7 @@ protected Double parseImpl(String str) { @Override protected boolean isValueValid(Double value) { - return value >= min && value <= max; + return value >= min && value <= Math.min(max, maxValue); } @Override @@ -62,6 +64,7 @@ public static class Builder extends SettingBuilder