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.
SADmodelfix
Fixes broken mod models at runtime: convex MeshColliders, spawn bounds, center of mass, volumeType. Also suppresses PhotonView IPunObservable spam and LocalizedString empty-table errors.
By SADnaki
| Date uploaded | 2 months ago |
| Version | 1.3.2 |
| Download link | SADnaki-SADmodelfix-1.3.2.zip |
| Downloads | 584 |
| Dependency string | SADnaki-SADmodelfix-1.3.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
SADmodelfix
A BepInEx plugin for R.E.P.O. that automatically fixes common issues in community mods — broken physics colliders, wrong spawn bounds, incorrect center of mass, and misclassified object sizes — all at runtime, without touching the original mod files.
What it fixes
| Fix | What it does |
|---|---|
| MeshCollider | Enables convex mode on non-convex MeshColliders so objects fall and rotate with the correct shape (not like invisible cubes) |
| RoomVolumeCheck | Recalculates the spawn AABB pivot and size so objects actually spawn in rooms instead of clipping through walls or floors |
| Center of Mass | Moves Rigidbody.centerOfMass to the geometric center of all colliders so objects don't spin wildly when grabbed |
| VolumeType | Auto-classifies Tiny / Small / Medium / Big / Wide / Tall / VeryTall based on real mesh bounds so objects end up in the correct loot pool |
| Hierarchy Check | Detects mesh renderers incorrectly placed on the prefab root (experimental, off by default) |
| PhotonView Fix | Removes non-IPunObservable components from PhotonView.ObservedComponents — stops thousands of Photon error spam lines per session (e.g. ChargingStation, Minecraft items) |
| Localization Fix | Suppresses ArgumentException: Empty Table Reference spam from mods that register items with an empty LocalizedString table |
| SillyValuables Fix | Preloader patcher that rewrites SillyValuables.dll on disk to fix MissingMethodException: void .Sound.PlayLoop(bool,single,single,single) spam — grenade/throw sounds in SillyValuables now work correctly |
Installation
Install via Thunderstore Mod Manager or Gale — no manual steps required.
Manual: drop REPOModelFixer.dll into BepInEx/plugins/REPOModelFixer/.
Configuration
All fixes can be toggled in BepInEx/config/mrnak.REPOModelFixer.cfg:
FixMeshColliders = true (default: true)
FixRoomVolumeCheck = true (default: true)
FixCenterOfMass = true (default: true)
FixVolumeType = true (default: true)
CheckHierarchy = true (default: true)
FixHierarchy = false (default: false — experimental)
FixPhotonViewObservers = true (default: true)
FixEmptyLocalizationTable= true (default: true)
VerboseLogging = false (default: false)
BlockList = (comma-separated prefab names to skip)
Compatibility
- R.E.P.O. v0.4.4+
- BepInEx 5.4.23+
- REPOLib 4.1.0+
- Works alongside all existing mods — only patches, never replaces
Changelog
1.2.0
- SillyValuables compatibility patcher: fixes
MissingMethodException: void .Sound.PlayLoopspam, grenade/throw sounds now work
1.1.0
- PhotonView observer fix, LocalizedString error suppression, VolumeType improvements
1.0.0
- Initial release
- Convex MeshCollider fix (shape-accurate physics)
- RoomVolumeCheck bounds recalculation
- Center of mass correction
- VolumeType auto-classification
- Harmony hooks on REPOLib Valuables / Enemies / Items + fallback director patches
CHANGELOG
v1.3.2
- Fixed: items with broken/missing MeshCollider sharedMesh (e.g. VoidExpansion relics: AxiRelic, LithRelic, MesoRelic, NeoRelic, RequiemRelic, UniversalMedallion) received zero RoomVolumeCheck bounds and spawned inside walls. BoundsCalculator now falls back to MeshFilter.sharedMesh.bounds when colliders produce no usable volume
- VolumeType is now correctly reclassified from the mesh-derived bounds for these items
v1.3.1
- Fixed objects spawning in floors/walls: RoomVolumeCheck no longer overrides mod author's spawn bounds unless they are unset
- Added
ForceRoomVolumeCheckconfig option (default: false) — enable to always recalculate spawn bounds from colliders for all mods
v1.3.0
- Renamed plugin DLL to
SADmodelfix.dlland patcher DLL toSADmodelfixpatcher.dllfor consistent branding - Renamed install folders to
SADnaki-SADmodelfixandSADnaki-SADmodelfixpatcher
v1.2.0
- Added BepInEx preloader patcher that fixes
MissingMethodException: void .Sound.PlayLoop(bool,single,single,single)spam from SillyValuables mod - Patcher rewrites SillyValuables.dll on disk at game launch (before the chainloader loads it), redirecting old 4-parameter
Sound.PlayLoopcalls to the current 5-parameter signature withvolumeMultiplier = 1.0 - SillyValuables grenade/throw sounds now work correctly in-game
- Self-guarding: on subsequent launches the patcher detects the DLL is already fixed and skips rewriting
v1.1.0
- Added PhotonView IPunObservable observer spam fix
- Added LocalizedString empty-table error suppression
- Improved VolumeType auto-classification accuracy
- Added configurable BlockList for skipping specific prefabs
v1.0.0
- Initial release
- MeshCollider convex fix
- RoomVolumeCheck AABB pivot/size recalculation
- Rigidbody center of mass correction
- VolumeType auto-classification (Tiny/Small/Medium/Big/Wide/Tall/VeryTall)
- Hierarchy checker (experimental)