Documentation
ModdingSettings

Range Handler

Numeric slider

public abstract class RangeHandler : IHandler {
    public float Value { get; }
    protected void SetRange(float min, float max);
    protected void SetStep(float step);
    protected void SetValueKey(string key);
    protected void SetTypeKey(string key, params string[] @params);
    protected abstract void OnValueChanged(float value);
}

Example

public class MyVolume : RangeHandler {
    public MyVolume() {
        SetRange(0f, 100f); SetStep(1f);
        SetValue(Config.Load().Get(new[] { "settings", "my-mod", "volume" }, 80f), notify: false);
        SetLabelKey("settings.entry.my_mod.audio.volume.label");
        SetValueKey("settings.range.value.percent");
    }

    public override string[] GetPath()
        => new[] { "my-mod", "audio", "volume" };

    protected override GameObject GetPrefab()
        => Main.CoreAPI.AssetAPI.GetAsset<GameObject>("settings:prefabs/range.prefab");

    protected override void OnValueChanged(float value)
        => Config.Load().Set(new[] { "settings", "my-mod", "volume" }, value).Save();
}

Value Display Keys

KeyExample
settings.range.value.percent80%
settings.range.value.seconds30 s
settings.range.value.meters200 m
settings.range.value.framerate144 FPS
settings.range.value.float80.00
settings.range.value.integer80

On this page