What would you like to see?
Add first-class support for creating fully custom placeable furniture from a mod-supplied 3D model or prefab.
S1API already provides most of the surrounding pieces: custom item registration, BuildableItemDefinitionBuilder, shops, held/stored presentation, icon generation, build events, and storage APIs. The missing piece is a public API that turns a supplied furniture model into a complete native buildable item without requiring the mod to clone and manually rewire a vanilla BuildableItem prefab.
Ideally this would follow the builder-oriented product and NPC systems. The exact API is open for design, but the modder experience could look roughly like:
var chair = FurnitureCreator.CreateBuilder()
.WithBasicInfo("my_chair", "My Chair", "A custom chair")
.WithModel(chairPrefab)
.WithPlacement(FurniturePlacementMode.Grid)
.WithFootprint(width: 1, depth: 1)
.WithBuildSound(BuildSoundType.Wood)
.WithPricing(75f)
.WithGeneratedIcon()
.Build();
The API should compose or configure the required native runtime objects for the selected placement mode, rather than exposing game internals as required builder inputs.
Why would this help?
Today, BuildableItemDefinitionBuilder can create the definition metadata, but a functional item still needs a correctly configured native BuiltItem, build handler, placement ghost, collision/footprint data, renderer culling, save/load behavior, and inventory presentation. Mods currently have to clone a suitable vanilla prefab and mutate its hierarchy and internal components, which is brittle, difficult to make cross-runtime, and easy to break as the game changes.
A supported furniture pipeline would let content mods bring their own art and produce normal purchasable, placeable furniture with a small amount of builder code. It would also centralize the fragile native wiring in S1API so compatibility fixes benefit every furniture mod.
Extra Context (Optional)
Possible scope and acceptance criteria:
- Accept a mod-provided
GameObject/prefab (typically loaded from an asset bundle) as the visual source.
- Support the native placement families needed by ordinary furniture: grid, procedural-grid, and surface placement. It would be reasonable to ship these incrementally.
- Configure the placed prefab, placement ghost/preview, bounds or footprint, colliders, renderer lists, and build handler automatically, with optional advanced overrides.
- Reuse existing S1API systems for item metadata, held/stored presentation, icon generation, shop registration, and build events instead of duplicating them.
- Preserve placed furniture correctly through save/load and property reloads.
- Behave correctly in multiplayer, including authority and late-join restoration where the native building flow requires it.
- Work on both Mono and IL2CPP with the same public API.
- Keep the change additive: existing
BuildableItemDefinitionBuilder and clone-based workflows must retain their current behavior.
- Include a focused example mod or documentation showing a simple non-interactive furniture item from model load through purchase, placement, save, and reload.
The initial version does not need to cover specialized interactive furniture such as beds, storage, stations, or appliances. Those could be later extensions built on the same base furniture/prefab pipeline.
What would you like to see?
Add first-class support for creating fully custom placeable furniture from a mod-supplied 3D model or prefab.
S1API already provides most of the surrounding pieces: custom item registration,
BuildableItemDefinitionBuilder, shops, held/stored presentation, icon generation, build events, and storage APIs. The missing piece is a public API that turns a supplied furniture model into a complete native buildable item without requiring the mod to clone and manually rewire a vanillaBuildableItemprefab.Ideally this would follow the builder-oriented product and NPC systems. The exact API is open for design, but the modder experience could look roughly like:
The API should compose or configure the required native runtime objects for the selected placement mode, rather than exposing game internals as required builder inputs.
Why would this help?
Today,
BuildableItemDefinitionBuildercan create the definition metadata, but a functional item still needs a correctly configured nativeBuiltItem, build handler, placement ghost, collision/footprint data, renderer culling, save/load behavior, and inventory presentation. Mods currently have to clone a suitable vanilla prefab and mutate its hierarchy and internal components, which is brittle, difficult to make cross-runtime, and easy to break as the game changes.A supported furniture pipeline would let content mods bring their own art and produce normal purchasable, placeable furniture with a small amount of builder code. It would also centralize the fragile native wiring in S1API so compatibility fixes benefit every furniture mod.
Extra Context (Optional)
Possible scope and acceptance criteria:
GameObject/prefab (typically loaded from an asset bundle) as the visual source.BuildableItemDefinitionBuilderand clone-based workflows must retain their current behavior.The initial version does not need to cover specialized interactive furniture such as beds, storage, stations, or appliances. Those could be later extensions built on the same base furniture/prefab pipeline.