Skip to content

Build a world with mods ​

A world combines terrain, placed objects, and enabled mods. Your mod provides reusable content or rules; the world decides where and how to use them.

For example, a harbor world might use one mod for buildings, one for lights, and one for delivery gameplay. Each can be developed and tested separately.

1. Prepare a world you can edit ​

Create or open a world from My Worlds. Finish the terrain and spawn setup before testing gameplay. You need edit rights to place persistent objects; being able to join a world does not grant edit rights.

If you are starting with an existing world, use a private copy for development. The default Creator preview also uses a temporary clone of your chosen world.

2. Create the content your world needs ​

For a set of buildings, lamps, or props:

bash
vibelands create harbor-props --template props-pack
cd harbor-props
npm install
npm run check
npm run dev

Choose the world when prompted and open the printed game link. The terminal reports build and preview status. Save a source file to apply another revision.

In your package, each editorItems entry adds an item to the Add library. Its matching objectRenderers component draws it. Follow the placeable object guide to add your own.

Preview and original world

The default preview is a separate world clone. Changes made there do not silently become edits to the original world. Keep track of which world the printed link opens. See Remote Sandbox.

3. Place and configure objects ​

In the preview's editor, open Add, select your item, and place it. Move, rotate, scale, duplicate, and delete it using the usual editor controls.

Use two kinds of settings:

SettingDeclare in the manifestExample
Per-world mod settingconfigSchemaAll harbor lamps use a warm light color.
Per-object settingeditorItems[].propertySchemaThis sign says “Harbor”; another says “Market”.

Read world settings with useModConfig() or ctx.config. Read object settings from the renderer's properties prop. The host validates these values.

4. Add gameplay as a separate feature ​

Start from a gameplay template when players must share an activity:

bash
vibelands create harbor-hunt --template persistent-collectible

Use the server to validate player actions. Use client components to show the result. For interactions tied to placed objects, the server can read its owned objects through ctx.objects and validate proximity with findNearbyWorldObject. Declare world.objects.read and players.read.

Keep reusable props in a small content mod. Put activity rules in a gameplay mod when they have a separate lifecycle or settings. A single mod may also contain both when they belong to one feature. A mod cannot directly edit another mod's private state.

5. Check what survives ​

ContentWho owns itWhat to verify
Terrain and editor placementsWorld editorRejoin the same world and check placement.
Enabled mod and configurationWorld settingsCheck the intended world has the correct mod version and settings.
ctx.entities and ctx.stateRunning mod instanceRebuild these when the world starts. They are not durable storage.
ctx.storage valuesMod, scoped to one worldSave successfully, restart, and load them again.
Account inventory or rewardsHost account servicesVerify the actual result; these are separate from local world progress.

State and lifecycle explains these boundaries in detail.

6. Playtest with another player ​

Check the experience from a second client: join after the activity has started, perform an action, and confirm both players see the same result. Also check out-of-range actions, duplicate requests, reconnects, and a world restart.

Try low graphics quality and a dense area of placed objects. Use batch renderers for large repeated prop sets; keep single-object renderers for editor previews.

7. Share the mod and the world deliberately ​

A mod release distributes code and assets. A world contains the layout and configuration that use that code. Publishing a mod does not publish a world, and a successful Sandbox build is not a Marketplace release.

Follow Publishing to submit a mod for review. Once available, install and enable the intended version in your destination world through its mod store. Verify its items and settings there before inviting players.

World visibility controls who can discover or join it; editing policy controls who can change it. Official-world candidate publishing is an administrator workflow, separate from ordinary community-world creation.

Moving world data ​

World Package v2 records mod compatibility information. Private mod storage is excluded by default. Declare storageExport only for data intended to travel with a world; imported data must match the mod version and schema requirements. Do not use a world export as an account inventory or reward backup.

VibeLands Creator · Runtime API v2