Skip to content

Mod Compatibility

Zaldaryon edited this page Jun 7, 2026 · 6 revisions

Mod Compatibility

OptiTime v1.5.5+ tested against the 100 most popular mods on Vintage Story ModDB (71 decompiled, 38 with Harmony patches analyzed). All patches include automatic conflict detection. If another mod patches the same method, OptiTime disables that optimization and logs a warning.

Known Conflicts (auto-handled)

These mods patch the same vanilla methods as OptiTime. No action needed. OptiTime detects them and auto-disables the conflicting optimization.

Mod Downloads Conflict OptiTime Action Tested Version
Combat Overhaul 585K Entity animation system Entity Animation + Entity Interpolation optimizations disabled 1.8.1
Overhaullib 644K Entity animation system Entity Animation + Entity Interpolation optimizations disabled (via Combat Overhaul)
A Culinary Artillery 572K GetHandbookInfo (postfix) Handbook optimization disabled 1.2.5
Extra Info 142K GetHandbookInfo (postfix) Handbook optimization disabled latest
Tabletop Games 179K GetHandbookInfo (postfix) Handbook optimization disabled latest
Electrical Progressive 74K Handbook system Handbook optimization disabled latest
Ancestral Bliss Shaders - Shader assets OptiTime shader assets removed latest
Volumetric Shading Refreshed - Shader assets OptiTime shader assets removed latest

Tested Compatible (no conflicts)

These mods were decompiled and their Harmony patches cross-referenced against all 26 OptiTime patch targets. Zero conflicts found.

Top mods with Harmony patches (no overlap)

Mod Downloads Harmony Targets Conflict?
Carry On 780K EntitySeat.onControls ❌ None
XSkills 407K 30+ patches (BlockEntity*, EntityBehavior*, Item*) ❌ None
Primitive Survival 805K Block methods, CollectibleObject.GetHeldItemInfo ❌ None
Smithing Plus 269K CollectibleObject.DamageItem/GetMaxDurability, BlockEntityAnvil ❌ None
Dana Tweaks 154K Block.OnJsonTesselation, GuiComposerHelpers, BlockEntityFirepit ❌ None
Rivers 299K ChunkTesselator.Start, LiquidTesselator, GenBlockLayers ❌ None
Toolsmith 135K CollectibleObject methods, GuiElementItemSlotGridBase.ComposeSlotOverlays ❌ None
Real Smoke 135K BlockEntityStoneCoffin, BlockEntityBeeHiveKiln ✅ Auto-compat: particle rejection bypassed on off-thread pools
Pet AI 407K EntityBehaviorHarvestable, EntityBehaviorMultiply, EntityBehaviorGrow ❌ None
Butchering 435K EntityBehaviorHarvestable (postfix) ❌ None
From Golden Combs 418K BlockEntityFruitTreePart, Block.GetAmbientSoundStrength ❌ None
ProspectTogether 319K OreMapLayer.OnDataFromServer ❌ None
Auto Map Markers 229K EntityAgent.TryMount/TryUnmount ❌ None
Wild Farming Revival 282K TreeGen, Block.GetPlacedBlockInfo ❌ None
Alchemy 364K EntityBehaviorBreathe, EntityPlayer ❌ None
Player Model Lib 284K EntityPlayer.updateEyeHeight, GuiComposer.Compose ❌ None
Attribute Rendering Library 265K CollectibleObject.GetLightHsv, Block.GetColor ❌ None
Knapster 206K Gantry framework (generic patching) ❌ None
Terra Prety 203K GenMaps.* (server-side worldgen) ❌ None
Sortable Storage 177K Container sorting ❌ None
More Piles 175K ItemDryGrass/Rope/Flint.OnHeldInteractStart ❌ None
Genelib 132K EntityBehaviorGrow, ServerMain.SendServerAssets ❌ None
Vanity 120K GuiDialogCreateCharacter, EntityBehaviorTexturedClothing ❌ None
AnimationsLib - ClientAnimator.calculateMatrices, Animation.GenerateFrame ❌ None
CollidersLib - AnimationManager.OnClientFrame ❌ None

Top mods without Harmony (zero conflict risk)

Mod Downloads Type
BetterRuins 878K Content (worldgen)
QP's Chisel Tools 604K API-only
Common Lib 599K Library
Expanded Foods 584K Content-only (no DLL)
Firearms 509K Uses OverhaulLib
ConfigLib 484K Integration partner
Player Corpse 459K API-only
Stone Quarry 439K API-only
Food Shelves 424K Content
Animal Cages 362K API-only
Wolf Taming 304K Uses PetAI
Bullseye 145K Thin wrapper
Farseer 146K Own renderer + shaders
Footprints 85K Own renderer
Hydrate or Diedrate 171K Content-only
All Fauna packs 100K-200K each Content-only

How Conflict Detection Works

OptiTime checks conflicts at two levels:

  1. Mod detection: known mods detected by modid at startup (Combat Overhaul, Overhaullib, Ancestral Bliss, Electrical Progressive)
  2. Harmony patch detection: before applying each patch, OptiTime calls Harmony.GetPatchInfo() on the target method. If a foreign patch exists, OptiTime disables that optimization, logs a warning, and saves config.

Any mod, including ones not listed here, triggers this. If a future mod patches the same method, OptiTime detects it and skips.

Reporting Compatibility Issues

"Involved Harmony IDs" does not mean OptiTime caused the crash

Vintage Story's crash reporter inspects every method in the stacktrace and lists all Harmony patch owners on those methods. OptiTime patches ScreenManager.OnNewFrame (present in nearly every crash stacktrace), so it appears in "Involved Harmony IDs" even for crashes caused by unrelated mods.

To find the actual culprit: look at the exception type and stacktrace lines. If only another mod's namespace appears (e.g. SomeMod.SomeClass.SomeMethod), that mod caused the crash.

Reporting actual OptiTime issues

If you hit a crash or conflict with an unlisted mod, include:

  • Mod name and version
  • Your client-main.log (search for [OptiTime] entries)
  • Steps to reproduce