helvetica-ModsMenu icon

ModsMenu

Adds a Mods tab to Options with the settings of your installed mods: toggles, sliders, dropdowns and text fields built from each mod's config, in the game's own style. A library: mods opt in with one attribute.

Last updated 9 hours ago
Total downloads 0
Total rating 0 
Categories Libraries
Dependency string helvetica-ModsMenu-0.3.2
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305
StolenRealmModding-StolenRealmModAPI-0.2.0 icon
StolenRealmModding-StolenRealmModAPI

Community modding API for Stolen Realm - fluent builders for skills, enemies, quests, UI, combat events, and persistent data

Preferred version: 0.2.0

README

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.