Mods Communicator

v1.2.0·Updated 2025-11-02

Outward Mods Communicator enables seamless communication between mods through shared events and configuration syncing. It also lets users override any changes made by other mods, giving them full cont

About this mod Author’s original text

Outward Mods Communicator

Outward Mods Communicator enables seamless communication between mods through shared events and configuration syncing. It also lets users override any changes made by other mods, giving them full control over their settings. You can find library published on NuGet as Outward.ModsCommunicator.

Why should I use this?

Benefits of using this library:

Configuration Syncing

This library allows mod pack creators to synchronize configuration files without directly editing them.

Users don’t need to download configuration files from third-party sources.

Configurations can be edited through XML, and the control flow follows this order: User -> Mod -> Cfg Documents

Deeper explanation

Currently, Outward's BepInEx does not provide a built-in way for mods to modify.cfg configuration files inside the BepInEx/config directory.

Mods Communicator solves this by using two XML files. One XML file is placed in the

mod’s plugin directory (recommended), and Mods Communicator uses it to override

configuration settings right after the ResourcesPrefabManager class

finishes its Load method.

Afterwards, it reads the player’s PlayerModsOverrides.xml file, located

in BepInEx/config/gymmed.Mods_Communicator folder, to apply personal overrides based on the player’s preferences.

FAQ

Why use XML instead of hardcoding values in the assembly/code/DLL?

XML is used so players can freely edit values without needing to modify any code.

The XML structure is simple, human-readable, and gives full control to the user.

Why are there two XML files?

Mods can be updated frequently, and each update may include new default XML values.

By separating the player’s personal overrides into a second XML file, updates won’t

overwrite their custom settings.

Mods Communicator only provides a BepInEx/config/gymmed.Mods_Communicator/PlayerModsOverrides.example.xml file —

players must rename it to BepInEx/config/gymmed.Mods_Communicator/PlayerModsOverrides.xml.

This makes their configuration safe from updates and re-downloads.

Why are XML files read after the ResourcesPrefabManager.Load method?

Because all plugins and their configurations must be initialized first.

Once ResourcesPrefabManager.Load completes, all.cfg files are loaded, and it becomes safe to apply overrides.

Does every mod that changes settings through configs need Mods Communicator as a dependency?

No. The Mods Communicator library is only required for mods that want to modify

other mods’ default values to create new experiences.

For example, the Outward Game Settings mod uses this dependency

solely for the EventBus feature to publish additional events.

Changing Configuration As User

This library includes PlayerModsOverrides.example.xml file

inside your BepInEx/config/gymmed.Mods_Communicator folder.

You will need to change it's name to PlayerModsOverrides.xml

when you can open it to add or modify XML values.

Adding Configuration Path To Mod

You can add your configuration XML path inside your plugin’s Awake method like this:

OutwardModsCommunicator.OMC.xmlFilePath = "FullPathTo/MyModsOverrides.xml";

Editing XML

This library will contain BepInEx/config/gymmed.Mods_Communicator/PlayerModsOverrides.example.xml document as an example.

Each override is added inside a ConfigOverrides element:

<ConfigOverrides>

<Mod GUID="gymmed.outward_game_settings">

<Section Name="Enchanting Modifications">

<Entry Key="EnchantingSuccessChance" Value="5" />

<Entry Key="RequireRecipeToAllowEnchant" Value="false" />

<Entry Key="UseRecipeOnEnchanting" Value="false" />

</Section>

</Mod>

<Mod GUID="gymmed.outward_mods_communicator">

<Section Name="Event Profiler">

<Entry Key="EnableEventsProfiler" Value="true" />

<Entry Key="InstantLogEventsProfileData" Value="true" />

</Section>

</Mod>

</ConfigOverrides>

Possible mod override information can be found in BepInEx/config directo

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

sinai-dev-SideLoaderBepInEx-BepInExPack_Outward

File & checksum

Filename
Mods_Communicator-1.2.0.zip
File size
142.8 KiB