Stolen Realm
Install with App

Details

Latest version
0.3.2
Last Updated
First Uploaded
Downloads
2
Likes
0
Size
23KB
Dependants

Categories

Mods Menu

Adds a Mods tab to Stolen Realm's Options window (Esc → Options, after Twitch) with the settings of your installed mods.

  • Each mod gets a card with its name and version. Click the card to open it.
  • Settings use clones of the game's own Options controls: toggles, sliders, dropdowns and text fields.
  • Changes save to the mod's config file right away, and mods that support it react without a restart.

Mods Menu is a library. On its own it only shows its own card. Mods that support it appear automatically, and Show All Plugins also lists any other BepInEx mod that has settings.

Settings

Setting Default
Show All Plugins off Also list installed mods that didn't opt in but have settings
Log UI Layout off Write the Options window's layout to the BepInEx log once per launch (for mod developers)

The file is BepInEx\config\com.helvetica.modsmenu.cfg.

For mod developers

No code. Add a soft dependency to your plugin class. Your mod still loads when Mods Menu isn't installed:

[BepInDependency("com.helvetica.modsmenu", BepInDependency.DependencyFlags.SoftDependency)]

Every Config.Bind entry then appears on your mod's card, grouped by config section:

Setting type Control
bool toggle
enum dropdown
float/int with AcceptableValueRange slider + value
any type with AcceptableValueList dropdown
other simple types (string, unbounded numbers…) text field (invalid input reverts)

Labels come from the key (ShowOwnName → "Show Own Name"). The description is a dim line under the control. A change saves the .cfg at once and raises SettingChanged, so your mod can react live.

Order. Mods are listed A-Z, Mods Menu last. Inside a card, groups and settings follow the order of your Config.Bind calls, not the .cfg file's (BepInEx sorts sections alphabetically in the file).

Custom controls. Reference ModsMenu.dll with Private="false" so it isn't copied next to your mod. Put the calls in a separate class and only call it when Mods Menu is installed, so your mod still loads without it:

// OnModLoaded / Awake:
if (Chainloader.PluginInfos.ContainsKey("com.helvetica.modsmenu")) MenuCard.Register();

static class MenuCard
{
    internal static void Register() => ModsMenuApi.AddSection(MyPlugin.Guid, ui =>
    {
        ui.AddButton("Reset colors", ResetColors, "Restore the default palette");
        ui.AddLabel("Anything else goes here.");
    });
}

SectionBuilder offers AddHeader, AddSubheader, AddLabel, AddToggle, AddSlider, AddDropdown, AddInput, AddButton, AddConfigEntry and AddConfigFile. The callback runs each time your card opens, after your config settings.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.