Even Yet another server-specific settings API wrapper for EXILED
- Built-in support for:
- Buttons (
ButtonOption) - Two Button Options (
TwoButtonOption) - Sliders (
SliderOption) - Dropdowns (
DropdownOption) - Input fields (
InputTextOption,TextAreaOption)
- Buttons (
- Easy to extend with your own options and logic
- Download the latest release from GitHub Releases.
- Place the
.dllinto your server'sPlugins/folder. - Start the server once to generate default configuration files.
- Create and register your own nodes to expose settings in-game.
Yeah no im too lazy
public class TestButton : ButtonOption
{
public override string GetLabel(Player player) => $"Hello {player.Nickname}";
public override string GetButtonText(Player player) => $"Heal {player.MaxHealth - player.Health} HP";
public override string GetHint(Player player) => "Heals you to full health";
public override float GetHoldTime(Player player) => (player.MaxHealth - player.Health) / 10;
public override void OnValueChanged(Player? player)
{
player?.Heal(player.MaxHealth - player.Health);
}
}All options must be placed inside a SettingNode, which defines a section in the in-game menu.
public class TestNode : SettingNode
{
public override string GetHeaderName(Player player) => "Test node";
public override string GetHeaderHintDescription(Player player) => "Is test";
public override IOption[] Options { get; } =
[
new TestButton(),
new TestSlider(),
new TestDropdown(),
new TestInputText(),
new TestTextArea(),
new TestTwoButton()
];
}Nodes need to be registered using SettingNode::Register();
Example: new TestNode().Register();
Some class and structural ideas in this project were inspired by Yassa, another settings system for EXILED under the Apache 2.0 License.
This project reuses or adapts class names such as SettingNode, ButtonOption, and interface design patterns introduced in Yassa.