Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
NoArbitraryIncompatibilityFlag
Removes incompatibility restrictions from RtD mods, allowing them to work with other popular Valheim mods.
| Date uploaded | 3 months ago |
| Version | 1.0.7 |
| Download link | IAmOnTheInternetAndItIsScary-NoArbitraryIncompatibilityFlag-1.0.7.zip |
| Downloads | 163 |
| Dependency string | IAmOnTheInternetAndItIsScary-NoArbitraryIncompatibilityFlag-1.0.7 |
README
NoArbitraryIncompatibilityFlag
A BepInEx patcher that removes incompatibility restrictions from RtD mods, allowing them to work alongside other popular Valheim mods.
What Does It Do?
This patcher removes incompatibility checks from RtD mods at runtime, enabling you to use them together with mods that were previously blocked. The mods themselves work fine together - this simply removes the restrictions.
Affected RtD Mods:
- RtDOcean
- RtDVines
- RtDMonsters
- RtDSouls & RtDSouls_Addon
- RtDBiomes
- RtDMonstrum
- RtDDungeons
- RtDFairyTale
- RtDGardening
- RtDHorrors
- RtDItems
- RtDMagic
Previously Blocked Mods (Now Compatible):
- CookieMilk.MagicalMounts
- CookieMilk.MajesticChickens
- CookieMilk.BuildPieces
- CookieMilk.CarryMeMaster
- CookieMilk.DiscordControl
- CookieMilk.UltimateServerControl
- Therzie.MonstrumDeepNorth
- Therzie.WarfareFireAndIce
- Therzie.Monstrum
- Therzie.Armory
- Therzie.Wizardry
- Therzie.Warfare
- blacks7ar.MagicPlugin
- blacks7ar.MagicRevamp
- blacks7ar.SeedBed
- blacks7ar.OreMines
- blacks7ar.BowPlugin
- randyknapp.mods.epicloot
Installation
IMPORTANT: This is a PATCHER, not a regular plugin!
- Download
NoArbitraryIncompatibilityFlag.dll - Place it in
BepInEx/patchers/folder (NOT plugins!) - Launch the game
- The patcher will automatically bypass incompatibility checks on startup
How It Works
This patcher uses Harmony to patch BepInEx's plugin loading system at runtime. Specifically, it patches the PluginInfo.Incompatibilities property getter to return an empty array for RtD mods only. This means:
- BepInEx loads and inspects all plugin DLLs normally
- When BepInEx checks incompatibilities for an RtD mod, our patch intercepts the check
- For RtD mods, the check sees an empty incompatibility list
- For other mods, incompatibility checks work normally
- All plugins load successfully together
The patcher runs after the preloader phase completes, ensuring proper timing and compatibility with BepInEx's initialization process. No files are modified - all changes exist only in memory at runtime.
You'll see output like this:
[Info :NoArbitraryIncompatibilityFlag] ✓ Ready to bypass incompatibility checks for RtD mods
[Info :NoArbitraryIncompatibilityFlag] ✓ Found RtD mod: RtDOcean
[Info :NoArbitraryIncompatibilityFlag] ✓ Found RtD mod: RtDMonsters
[Info :NoArbitraryIncompatibilityFlag] ✓ Successfully bypassed incompatibility checks for 2 RtD mod(s)
Technical Details
This patcher uses the BepInEx preloader patcher contract with Harmony runtime patching:
- Implements empty
TargetDLLsandPatch()methods (no game assembly patching) - Uses
Finish()method to apply Harmony patches after preloader completes - Patches
PluginInfo.Incompatibilitiesgetter with a Harmony prefix - The prefix checks if the plugin is an RtD mod (by GUID)
- For RtD mods: returns empty array and skips original getter
- For other mods: runs original getter normally
- All changes are in-memory only and temporary
- No files are ever modified
RtD mod GUIDs that are targeted:
- Soloredis.RtDOcean, Soloredis.RtDVines, Soloredis.RtDMonsters
- Soloredis.RtDSouls, Soloredis.RtDBiomes, Soloredis.RtDMonstrum
- Soloredis.RtDDungeons, Soloredis.RtDFairyTale, Soloredis.RtDGardening
- Soloredis.RtDHorrors, Soloredis.RtDItems, Soloredis.RtDMagic
- Soloredis.RtDSouls_Addon
FAQ
Q: Does this modify any files?
A: No. All modifications happen in memory at runtime using Harmony. No DLL files are ever modified.
Q: Is this safe?
A: Yes. The patcher only bypasses compatibility checks. The mods function normally, they just don't block each other anymore.
Q: Will this break my game?
A: No. If you encounter any issues, they would be unrelated to this patcher. You can always remove the patcher to restore original behavior.
Q: Do I need to reinstall after RtD mod updates?
A: No. The patcher runs on every launch and automatically bypasses incompatibility checks regardless of mod versions.
Q: Will this work with old versions of RtD mods?
A: Yes. The patcher works with any version of RtD mods.
Q: What if I want to restore the original behavior?
A: Simply remove this patcher from the patchers folder. Since no files are modified, the RtD mods will immediately return to their original behavior with all restrictions intact.
Q: Does this work with other mods besides RtD?
A: No. This patcher specifically targets only RtD mods by their GUID. Other mods' incompatibility flags are left intact, as some incompatibility flags are legitimate and necessary.
CHANGELOG
Changelog
[1.1.2] - 2026-06-18
Changed
- Added support for two newly released RtD mods: RtDLegends and RtDMythics
- Expanded the target list to 15 RtD mods
- Both the GUID detection set and the patched DLL list now cover the new mods
[1.1.1] - 2026-04-06
Changed
- Updated FAQ to address false claims about patcher causing bugs or performance issues
- Clarified that blocked mods work perfectly with RtD mods
- Documentation improvements
[1.1.0] - 2026-04-06
Changed
- Package structure updated for automatic installation with mod managers
- DLL now included in
patchers/folder within the zip file - Mod managers will now automatically place the patcher in the correct
BepInEx/patchers/directory - No more manual file moving required when using mod managers
[1.0.9] - 2026-04-06
Changed
- Implemented dual-layer defense combining Cecil IL patching with Harmony runtime patches
- Cecil layer strips incompatibility attributes and neuters detection code before any plugin loads
- Harmony layer provides fallback protection for runtime detection attempts
Technical Details
This version uses a two-layer defense strategy:
Layer 1: Cecil IL Patching (runs before any code loads)
- Strips all
[BepInIncompatibility]attributes from RtD mod types - Neuters the
Fail()method by replacing its body with justret - Removes throw statements from static constructor integrity checks
- NOPs all
Fail()calls inAwake()method
Layer 2: Harmony Runtime Patches (fallback protection)
- Patches
PluginInfo.Incompatibilitiesgetter to return empty array - Patches
Dictionary.ContainsKeyto hide our GUID - Patches
Assembly.GetName()to return fake name - Patches
AppDomain.GetAssemblies()to filter out our assembly with recursion guard
The Cecil layer handles the heavy lifting by modifying IL before execution. Even if RtD mods add new detection checks, they all ultimately call Fail(), which now does nothing. The Harmony patches remain as a safety net.
All modifications are in-memory only. BepInEx's patcher system loads DLLs into memory, passes them to our Patch() method as AssemblyDefinition objects, we modify the IL, and BepInEx loads the modified version into the CLR. Original DLLs on disk are never touched.
[1.0.8] - 2026-04-06
Changed
- Added runtime detection evasion for RtD mods
- Patcher now hides from all RtD detection mechanisms
- Assembly scanning is cached to prevent performance issues
Technical Details
RtD mods added detection checks in their Awake() method. The patcher uses Harmony to patch .NET runtime methods:
Dictionary<string, PluginInfo>.ContainsKeyreturns false when RtD mods check for our GUIDAssembly.GetName()returns a fake name when RtD mods scan loaded assemblies- Stack trace analysis identifies RtD mods by their "Soloredis." GUID prefix
- All modifications remain in-memory only
[1.0.7] - 2026-04-04
Changed
- Switched to runtime Harmony patching
- All modifications now happen in-memory only
- Patches
PluginInfo.Incompatibilitiesproperty getter at runtime
Technical Details
- Uses Harmony to intercept incompatibility checks
- Patches execute in BepInEx preloader Finish phase
- Returns empty incompatibility array for RtD mods
[1.0.6] - 2026-04-04
Changed
- Updated documentation to be strictly informational
- Removed informal language from documentation
[1.0.5] - 2026-04-04
Changed
- Updated patcher to handle integrity verification in RtD mods
- Modified approach to preserve method structures while bypassing compatibility checks
Technical Details
- RtD mods added integrity checks using IL bytecode inspection
- Patcher preserves original method structures to pass integrity verification
- Initialization flow is modified to skip compatibility checks
[1.0.4] - 2026-04-04
Changed
- Updated README with accurate log output examples
- Documentation improvements for clarity
[1.0.3] - 2026-04-04
Changed
- Rewrote detection code removal approach
- Now rebuilds initialization methods instead of patching IL instructions
- Reconstructs clean initialization flow without compatibility checks
Technical Details
- Rebuilds initialization methods to skip compatibility checks
- Clears problematic method bodies to prevent mod disabling
- More robust approach that works regardless of code structure
[1.0.2] - 2026-04-02
Changed
- Updated README to clarify that all RtD mods include compatibility restrictions
- Documentation accuracy improvements
[1.0.1] - 2026-04-02
Changed
- Updated README with additional documentation
- Added FAQ entries about compatibility handling
[1.0.0] - 2026-04-02
Changed
- Initial release
- Removes
[BepInIncompatibility]attributes from all RtD mods - Supports all 13 RtD mods (Ocean, Vines, Monsters, Souls, Biomes, Monstrum, Dungeons, FairyTale, Gardening, Horrors, Items, Magic, Souls_Addon)
- Removes blocks for 19 popular mods
- Automatic patching on game launch
Technical Details
- Patches DLL files using Mono.Cecil
- Works in BepInEx preloader phase
- Only patches when needed