

Manifold
API library for creating and managing custom dimensions in Vintage Story.
Description
Manifold is a library mod for Vintage Story 1.21+ that lets other mods create and manage their own custom dimensions. It adds no content of its own - install it only because another mod depends on it.
<span style="display: inline-block; background: rgba(92,123,137,0.25); border: 1px solid #5C7B89; border-radius: 12px; padding: 2px 12px; font-size: 0.85em; margin: 2px 4px 2px 0; color: #333f48;">Vintage Story 1.21+</span> <span style="display: inline-block; background: rgba(92,123,137,0.25); border: 1px solid #5C7B89; border-radius: 12px; padding: 2px 12px; font-size: 0.85em; margin: 2px 4px 2px 0; color: #333f48;">Universal</span> <span style="display: inline-block; background: rgba(140,178,116,0.18); border: 1px solid #8CB274; border-radius: 12px; padding: 2px 12px; font-size: 0.85em; margin: 2px 4px 2px 0; color: #333f48;">Zero Harmony</span> <span style="display: inline-block; background: rgba(92,123,137,0.25); border: 1px solid #5C7B89; border-radius: 12px; padding: 2px 12px; font-size: 0.85em; margin: 2px 4px 2px 0; color: #333f48;">NuGet API</span> <span style="display: inline-block; background: rgba(92,123,137,0.25); border: 1px solid #5C7B89; border-radius: 12px; padding: 2px 12px; font-size: 0.85em; margin: 2px 4px 2px 0; color: #333f48;">MIT</span>
For players
Manifold is a dependency. If a mod you use requires Manifold, install this alongside it. It is safe on both client and server (Universal). On its own, it does nothing visible.
For mod developers
Manifold exposes a clean public API to declare and run custom dimensions:
- Custom dimensions - persistent or ephemeral, registered at boot or at runtime, identified by an
AssetLocationcode. - Active worldgen - implement
IWorldgenStrategy; Manifold pre-generates a chunk region around the arrival point before the player enters (bounded mode, configurable radius). Dimensions can also opt into streaming generation via.Streaming(loadRadius), which generates chunks on demand as players move with no fixed edge. The streaming radius is extended to the server view distance so generated terrain always reaches as far as players can see, and the relight band height is configurable per dimension viaWithRelightHeight. - Player transit - one call,
TeleportPlayer, moves a player between dimensions, with cancellable lifecycle events and opt-in helpers (a portal-block base class and a chat-command builder). - Non-player entity transit (0.3.0) -
TeleportEntitymoves items and other non-player entities between dimensions; the destination region is generated on demand before the entity is re-homed. - Block transit (0.4.0) -
TeleportBlock(source, targetDim, targetLocal)moves a single block plus itsBlockEntitystate (inventory, attributes, BE-behaviors) between dimensions, completing the Player / Entity / Block triplet. - Travel policy per dimension - pick the landing position (
SameCoordinates,DimensionSpawn, orLastVisited) and optionally force a game mode. - Per-dimension player inventory (0.3.0, opt-in) -
WithSeparateInventory(Hotbar | Backpack | Character)gives a dimension its own player inventory; profiles are stored in player moddata, saved together with the physical inventory, so they survive logout and server restarts with no item loss. - Per-dimension metadata (0.4.0) -
WithMetadata(key, value)attaches typed registration-time hints (display name, category, opt-in flags) readable by any consumer viaIDimension.GetMetadata<T>(key). Supports primitives,string,enum,byte[]. - Per-dimension streaming budget (0.4.0) -
WithStreamingBudget(maxColumnsPerTick)(range 1..64) caps streaming generation per dim per tick. Budgets are independent across dimensions so a busy dim cannot starve a quiet one. - Transit events (0.4.0) -
PlayerEntering(cancellable, pre-generation),PlayerArriving(cancellable, post-generation, pre-teleport),PlayerLeft/PlayerEntered(post-teleport), andEntityChangedDimension(postTeleportEntity). - Persistence - dimensions, generated chunks and per-player positions survive restarts. A dimension whose owning mod is removed is quarantined: its chunks are kept and transit is refused, never corrupted.
- Zero Harmony patches - built entirely on the public
VintagestoryAPI.
Quickstart
Add Manifold as a dependency in your modinfo.json:
"dependencies": { "manifold": "" }</pre>Ratings & reviews
Sign in to leave a rating or comment.

