-
-
Notifications
You must be signed in to change notification settings - Fork 0
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.
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 |
These mods were decompiled and their Harmony patches cross-referenced against all 26 OptiTime patch targets. Zero conflicts found.
| 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 |
| 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 |
OptiTime checks conflicts at two levels:
- Mod detection: known mods detected by modid at startup (Combat Overhaul, Overhaullib, Ancestral Bliss, Electrical Progressive)
-
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.
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.
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