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 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
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- 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.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- 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.
Install these first, or the mod will not work: