About NoArbitraryIncompatibilityFlag
From ThunderstoreRemoves incompatibility restrictions from RtD mods, allowing them to work with other popular Valheim mods.
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 [BepInIncompatibility] attributes from RtD mods, 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
- RtDLegends
- RtDMythics
- RtDQuestForge
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
- org.bepinex.plugins.valheim_plus
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 process RtD mods on startup
How It Works
The patcher uses a dual-layer approach combining Cecil IL patching with Harmony runtime patches. All modifications are in-memory only - no files are ever modified on disk.
On launch, you'll see:
Processing RtDVines.dll...
Stripped 19 incompatibility attribute(s) from RtDVines
Neutered RtDVines.Fail()
Removed 4 Fail() call(s) from RtDVines.Awake()
✓ Cecil IL patching complete - RtD detection code neutralized
✓ Harmony fallback: Ready to bypass incompatibility checks
✓ Harmony fallback: Ready to hide from ContainsKey detection
✓ Harmony fallback: Ready to hide assembly name
✓ Harmony fallback: Ready to filter GetAssemblies
✓ Found RtD mod: RtDVines
✓ Successfully bypassed incompatibility checks for 1 RtD mod(s)
Technical Details
RtD mods added four detection checks in their Awake() method:
- IL Bytecode Integrity Check: Verifies their "Block" method hasn't been modified
MethodInfo method = typeof(RtDMod).GetMethod("Block", ...);
byte[] ilAsByteArray = method?.GetMethodBody()?.GetILAsByteArray();
if (method == null || ilAsByteArray == null || ilAsByteArray.Length <= 2)
Fail();
- PluginInfo Dictionary Check: Looks for our GUID in BepInEx's plugin registry
if (Chainloader.PluginInfos.ContainsKey("IAmOnTheInternetAndItIsScary.NoArbitraryIncompatibilityFlag"))
Fail();
- Assembly Name Scan: Searches all loaded assemblies for our name
if (AppDomain.CurrentDomain.GetAssemblies().Any(a => a.GetName().Name.Contains("NoArbitraryIncompatibilityFlag")))
Fail();
- Module Name Scan: Searches all loaded assembly modules for our name
if (AppDomain.CurrentDomain.GetAssemblies().Any(a => a.ManifestModule.Name.IndexOf("NoArbitraryIncompatibilityFlag", StringComparison.OrdinalIgnoreCase) >= 0))
Fail();
The patcher uses a dual-layer defense strategy. The Cecil layer runs during BepInEx's preloader phase, before any plugin code executes. BepInEx loads each RtD DLL into memory as an AssemblyDefinition object, passes it to our Patch() method, we modify the IL instructions, and BepInEx loads the modified version into the CLR. The original DLL on disk is never touched.
Cecil IL Patching (Primary Defense)
- Strip Incompatibility Attributes: Removes all
[BepInIncompatibility]custom attributes from types. This is the primary goal - removing the actual incompatibility declarations.
- Neuter Fail() Method: Replaces the method body with just
ret. Even if detection checks somehow execute, callingFail()does nothing.
// Before:
private static void Fail() {
throw new Exception("Mod integrity check failed.");
}
// After:
private static void Fail() {
return; // Does nothing
}
- Strip Static Constructor Throws: NOPs throw statements in
.cctor. Finds static constructors that contain integrity check strings and replacesldstr+newobj Exception+throwwithnopinstructions.
- Strip Fail() Calls from Awake(): NOPs all calls to
Fail()in the Awake method. Finds allcall Failinstructions and replaces them withnop(no operation).
Harmony Runtime Patches (Fallback Protection)
The Harmony layer provides fallback protection in case the Cecil layer misses something or a future RtD mod uses different patterns:
- Incompatibility Bypass: Patches
PluginInfo.Incompatibilitiesgetter to return empty array for RtD mods (identified by "Soloredis." GUID prefix).
- ContainsKey Stealth: Patches
Dictionary<string, PluginInfo>.ContainsKeyto return false only for our specific GUID and only when called from RtD code. Uses stack trace analysis to identify the caller.
- Assembly Name Hiding: Patches
Assembly.GetName()to return "HiddenAssembly" instead of "NoArbitraryIncompatibilityFlag" when called from RtD mods. Uses recursion guard to prevent issues during GetAssemblies calls.
- GetAssemblies Filtering: Patches
AppDomain.GetAssemblies()to filter our assembly from results only when called from RtD mods. Uses recursion guard (insideGetAssembliesflag) to prevent infinite loops - Prefix sets flag to true, Postfix sets it to false after filtering, and GetName_Postfix checks this flag and skips processing when true.
FAQ
Q: Is this safe?
Highlights
From source dataLoaders
Runs on BepInEx.
Footprint
Rated a light load on a server.
Last update
Its author last shipped an update 3 mo ago.
NoArbitraryIncompatibilityFlag on Nxeon
From our catalogue- One-click install
- Supported on Nxeon Valheim servers, for BepInEx servers. We download it from Thunderstore, place it, and restart the server.
- Server type needed
- BepInEx
- Server load
- light
- Smallest plan we suggest
- Valheim — 4 GB (4 GB RAM). This follows our own load rating above, not a benchmark.
- Latest build
- 1.1.3, released 2026-08-21
Game versions by loader
| Loader | Game versions | Newest |
|---|---|---|
| BepInEx |
From 14 recorded builds of NoArbitraryIncompatibilityFlag.
Recent builds
| Build | Released | Game versions | Loaders |
|---|---|---|---|
| 1.1.3 | 2026-08-21 | n/a | BepInEx |
| 1.1.2 | 2026-06-18 | n/a | BepInEx |
| 1.1.1 | 2026-04-11 | n/a | BepInEx |
| 1.1.0 | 2026-04-06 | n/a | BepInEx |
| 1.0.9 | 2026-04-06 | n/a | BepInEx |
| 1.0.8 | 2026-04-06 | n/a | BepInEx |
Run NoArbitraryIncompatibilityFlag on a Valheim server
Pick a server or deploy a new one above; it is installed in one click.
What kind of mod it is
From the catalogAdmin & protection
Permissions, moderation, anti-cheat and land protection for the people running the server.
Compatibility
- Game
- Valheim
- Loaders
- BepInEx
- Requires
- One-click install needs a BepInEx server.
Verified at the source
- ✓ThunderstoreOfficial listing, checked 2026-10-02Open ↗
- ✓AuthorIAmOnTheInternetAndItIsScary, as published on Thunderstore
- ✓LicenseNot published by the sourceFree




