Nicolassut-SofaMod icon

SofaMod

Adds two purchasable sofas to Schedule I: a vintage Sofa at hardware stores ($600) and a Fancy tartan Sofa at Bleuball's Boutique ($3000). Survives save/reload.

Last updated a day ago
Total downloads 75
Total rating 3 
Categories Mods IL2CPP
Dependency string Nicolassut-SofaMod-1.3.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

LavaGang-MelonLoader-0.7.2 icon
LavaGang-MelonLoader

The World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono

Preferred version: 0.7.2

README

SofaMod

Adds two purchasable, fully placeable sofas to Schedule I.

What you get

  • Sofa — $600 at every hardware store (Dan's, Handy Hank's). A 3×5 vintage plaid sofa.
  • Fancy Sofa — $3000 at Bleuball's Boutique. A larger blue-tartan sofa with hand-finished cushions, intended as a centrepiece for refined estates.

Both sofas:

  • Buy them like any other furniture item.
  • Place them with the standard build grid (white tiles = valid, red = invalid).
  • Survive save / reload — the world stays intact across save cycles.

Installation

  1. Install MelonLoader 0.7.2 for Schedule I.
  2. Drop SofaMod.dll and the asset files (*.glb, *.png) into Mods\Nicolassut-SofaMod\ (the Thunderstore Mod Manager handles this automatically).
  3. Launch Schedule I. Sofas appear in their respective shops.

Compatibility

  • ✅ Single-player
  • ✅ Multiplayer host with the mod installed
  • ⚠️ Multiplayer client (v1.3.0): an attempted fix is included for clients seeing sofas in the shop. This has not been tested live by the author (no second machine). If you test multiplayer with a friend, please share the [SofaMod] lines from your MelonLoader/Latest.log via the Thunderstore comments — that's how we'll know if the fix actually worked.
  • ⚠️ Clients without the mod installed will see beds where the host placed sofas (visual override is local; placement still works otherwise). Same multiplayer caveat as UpgradedTrashCans.
  • ✅ Works alongside MoreClothing, UpgradedTrashCans, CustomTV, BetterCasino, SimpleMinimap, and other common Schedule I mods.

Known limitations

  • Sofas appear at the END of each shop's listing rather than next to the TV or Grandfather Clock. A cosmetic-only quirk; a future update may reposition them.
  • Multiplayer: host sees both the bed model and the sofa overlapping when a client places a sofa. Tracked for a v1.3.1 fix once the v1.3.0 retry pattern is confirmed to land client-side listings.

Credits

  • Mod by: Nicolassut
  • Architecture inspiration: j0ckinjz/UpgradedTrashCans — the prefab-sharing pattern that makes save/reload work cleanly for custom PSE-derived furniture, and the ShopInterface.AllShops discovery pattern.

Changelog

v1.3.0

  • Attempted multiplayer-client fix for shop listings. v1.2.0's single-attempt FindObjectsOfType<ShopInterface> injection runs before FishNet has finished replicating the scene to a client, so clients couldn't see sofa listings at all. v1.3.0 prefers the game's static ShopInterface.AllShops collection (matching UpgradedTrashCans's pattern), falls back to FindObjectsOfType, and retries up to 20× over ~30s until both a Sofa shop and a Fancy Sofa shop are successfully injected. Per-attempt diagnostic logging included so any reported Latest.log can be analysed.
  • Not yet verified in a live MP session — please report logs if you can test.

v1.2.0

  • Saves no longer corrupt when a sofa is placed. Switched from cloning the bed prefab (which created a broken PlaceableStorageEntity with a null ConfigurationReplicator) to sharing the prefab reference and applying the sofa visuals at runtime via Harmony Postfix. Placed sofas now survive save/reload across multiple cycles.
  • Added a DontDestroyOnLoad'd asset-holder GameObject that roots the custom mesh + materials across the Menu→Main scene transition.
  • Fixed the IL2CPP Renderer enumeration gotcha (use MeshRenderer / SkinnedMeshRenderer specifically).
  • Cleaned up log spam; restored retail prices ($600 / $3000).