Source-checkedAdmin & protection

ModSettingsMenu

by Ice_Box_Studio_Sunkenland · for Sunkenland

Adds a Mod Settings button below Settings in the main menu and to the in-game pause menu, providing a unified configuration interface for mods.

457Downloads
48d agoLast updated
BepInExLoaders
ThunderstoreSource

About ModSettingsMenu

From Thunderstore

Adds a Mod Settings button below Settings in the main menu and to the in-game pause menu, providing a unified configuration interface for mods.

Note: This description is bilingual. The Chinese section is provided below the English section. 说明:本描述为中英双语版本,中文内容位于英文内容下方。


Mod Settings Menu (English)

Adds a Mod Settings button below Settings in the main menu and to the in-game pause menu, providing a unified configuration interface for mods.

Main Features

  • Shows configurable mod names on the left and the selected mod's settings on the right.
  • Lets mod authors optionally register a display name, description, author, version, Nexus Mods ID, and Thunderstore package.

For Players

This mod does not change gameplay by itself. It provides a common settings screen for compatible mods. Only loaded mods with at least one configuration entry appear in the list. The available settings depend on the mods you have installed.

Mod Author API

  • Registration is optional. A loaded BepInEx plugin with normal Config.Bind entries is detected automatically.
  • Use ModSettingsRegistry.Register only when you want to provide custom metadata or Nexus Mods and Thunderstore links.
  • Use ModSettingsTags.Section and ModSettingsTags.Entry in ConfigDescription for display metadata, ordering, and custom slider steps. Lower order values appear first; unspecified values use 1000.

Complete example mods: Sunkenland example mods

Sorting example:

Config.Bind("General", "Enabled", true, new ConfigDescription(
    "Enable this mod.",
    null,
    ModSettingsTags.Section("General", order: 10),
    ModSettingsTags.Entry(order: 10)));

Config.Bind("General", "SpeedMultiplier", 1f, new ConfigDescription(
    "Adjust the speed multiplier.",
    new AcceptableValueRange<float>(0.5f, 3f),
    ModSettingsTags.Entry(order: 20, sliderStep: 0.25d)));

Put the section tag on any one entry in that section. Registered mods can alternatively use ConfigureSection and ConfigureEntry; registered values override tag values. Set ModSettingsEntryOptions.SliderStep to configure a registered range slider. Without a custom step, integer sliders use 1 and floating-point sliders use 0.1.

Optional hard dependency example:

using BepInEx;
using BepInEx.Configuration;
using ModSettingsMenu.Api;
using UnityEngine;

[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
[BepInDependency(ModSettingsMenu.PluginInfo.PLUGIN_GUID)]
public sealed class MyPlugin : BaseUnityPlugin
{
    private void Awake()
    {
        Config.Bind("General", "Enabled", true, "Enable this mod.");
        Config.Bind("General", "SpeedMultiplier", 1f, new ConfigDescription("Adjust the speed multiplier.", new AcceptableValueRange<float>(0.1f, 5f)));
        Config.Bind("Controls", "QuickAction", KeyCode.F7, "Choose the quick action key.");

        ModSettingsRegistry.Register(
            PluginInfo.PLUGIN_GUID,
            new ModSettingsModOptions
            {
                Name = "My Mod",
                Description = "A short description shown above this mod's settings.",
                Author = "Author Name",
                Version = PluginInfo.PLUGIN_VERSION,
                NexusModsId = 6,
                ThunderstoreTeam = "MyTeam",
                ThunderstoreModName = "MyMod"
            });
    }
}

Localization API Example

For localized config entries and mod metadata, register the Sunkenland Localization API JSON file from the same directory as your plugin DLL. ModSettingsModOptions.Description is saved when the mod is registered, so register again after LocalizationApi.LanguageChanged to refresh the current-language description.

using System.IO;
using System.Reflection;
using BepInEx;
using BepInEx.Configuration;
using ModSettingsMenu.Api;
using SunkenlandLocalizationAPI.Api;
using UnityEngine;

[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
[BepInDependency(ModSettingsMenu.PluginInfo.PLUGIN_GUID)]
[BepInDependency(SunkenlandLocalizationAPI.PluginInfo.PLUGIN_GUID)]
public sealed class MyPlugin : BaseUnityPlugin
{
    private ModLocalizer _localizer;

    private void Awake()
    {
        _localizer = LocalizationApi.For(PluginInfo.PLUGIN_GUID);
        string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        _localizer.RegisterJson(Path.Combine(directory, "MyPlugin.Localization.json"));
        LocalizationApi.LanguageChanged += OnLanguageChanged;

        Config.Bind("General", "Enabled", true, _localizer.Config("config.enabled", 10, "General", "config.section.general", 10));
        Config.Bind("General", "SpeedMultiplier", 1f, _localizer.Config("config.speed_multiplier", 20, "General", "config.section.general", 10, new AcceptableValueRange<float>(0.5f, 3f), sliderStep: 0.25d));
        Config.Bind("Controls", "QuickAction", KeyCode.F7, _localizer.Config("config.quick_action", 10, "Controls", "config.section.controls", 20));

        RegisterSettings();
    }

    private void RegisterSettings()
    {
        ModSettingsRegistry.Register(
            PluginInfo.PLUGIN_GUID,
            new ModSettingsModOptions
            {
                Name = "My Mod",
                LocalizedName = () => _localizer.GetLocalizedText("mod.name"),
                Description = _localizer.GetLocalizedText("mod.description"),
                Author = "Author Name",
                Version = PluginInfo.PLUGIN_VERSION
            });
    }

    private void OnLanguageChanged(string language)
    {
        RegisterSettings();
    }
}

MyPlugin.Localization.json must contain an en section. Add any other supported game locale such as zh-Hans; missing keys fall back to en.

Read the full description on Thunderstore →

Highlights

From source data

Loaders

Runs on BepInEx.

Footprint

Rated a light load on a server.

Dependencies

Needs 2 other projects installed alongside it.

ModSettingsMenu on Nxeon

From our catalogue
One-click install
Not available. One-click install isn't available for this game's mods yet. Download it and upload it to your server in Files.
Server type needed
BepInEx
Server load
light
Smallest plan we suggest
Sunkenland — 4 GB (4 GB RAM). This follows our own load rating above, not a benchmark.
Latest build
1.3.1, released 2026-09-16

Game versions by loader

LoaderGame versionsNewest
BepInEx

From 5 recorded builds of ModSettingsMenu.

Recent builds

BuildReleasedGame versionsLoaders
1.3.12026-09-16n/aBepInEx
1.3.02026-08-16n/aBepInEx
1.2.02026-08-13n/aBepInEx
1.1.02026-08-10n/aBepInEx
1.0.02026-08-07n/aBepInEx

Dependencies

Declared by the newest build that lists any. Required ones are installed with it on one-click installs.

Run ModSettingsMenu on a Sunkenland server

Deploy a server above, then upload the file in Files.

What kind of mod it is

From the catalog
Listed on Thunderstore as “Admin”

Admin & protection

Permissions, moderation, anti-cheat and land protection for the people running the server.

Compatibility

Game
Sunkenland
Loaders
BepInEx
Requires
One-click install needs a BepInEx server. 2 other projects installed alongside it.

Verified at the source

  • ✓ThunderstoreOfficial listing, checked 2026-10-02Open ↗
  • ✓AuthorIce_Box_Studio_Sunkenland, as published on Thunderstore
  • ✓LicenseNot published by the sourceFree

ModSettingsMenu, answered

Generated from the mod’s own source data.

Which loaders does it support?

BepInEx.

Is it free?

Yes. ModSettingsMenu is free to download from Thunderstore.

How do I add it to my Nxeon server?

One-click install isn't available for this game's mods yet. Download ModSettingsMenu from Thunderstore and upload it to your Nxeon Sunkenland server in Files.

NxLabs

Run ModSettingsMenu on a Sunkenland server.

Deploy in about a minute from $8.99 a month, then upload ModSettingsMenu in Files.