ModSettingsMenu
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.
About this mod Machine translation
Note: This description is bilingual. The Chinese section is provided below the English section.
Note: This description is a bilingual version in Chinese and English. The Chinese content is located below the English content.
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, ID, and 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 and 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(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(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 …
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.
Install these first, or the mod will not work: