Install the server extension
Creator’s server extension is a small companion that runs on your Rust dedicated server and applies the parts of your map the standard format has no room for: trigger volumes, IO wiring, loot, vending and NPC profiles, ziplines, and the map’s Deep Sea settings. It also keeps Deep Sea objects you placed on your map alive through the Deep Sea’s close, and restocks them each time the Deep Sea opens. Everything else in your map runs without it, so this is an add-on rather than a requirement. See Run your map on a server for the split.
It works on both of the modding frameworks Rust servers use, Oxide (also called uMod) and Carbon. You need one of them installed on the server; if your server has neither, that is the first step and it is their documentation, not ours. On a Crucible Local Server, framework installation is Mods and plugins.
Where to get it
Section titled “Where to get it”It ships with Creator. In the folder you installed Creator to, beside RustCreator.exe, there is a folder
named ServerExtension. The start screen’s Requires Creator Oxide Extension line has a button that opens
it for you.
Inside it:
| What | For |
|---|---|
Carbon\ | the two files a Carbon server needs |
Oxide\ | the three files an Oxide server needs |
README.txt | the short version of this page: which files go where |
manifest.json | every file with its SHA-256, and the Rust server build the files were built against |
The extension in your Creator folder is the one built for that Creator release, so when you update Creator, copy the new files onto your server too.
Install it
Section titled “Install it”Copy the files for the framework your server runs, not both. Every file in that framework’s folder is needed: one is the host adapter for your framework, one is the shared logic both adapters use, and on Oxide the third is a library the shared logic reads your map’s data with.
On Carbon:
- Stop the server.
- Copy the two files in
ServerExtension\Carbon\(RustCreator.Ext.Carbon.dllandRustCreator.Ext.Core.dll) into the server’scarbon\extensions\folder. - Start the server.
On Oxide:
- Stop the server.
- Copy the three files in
ServerExtension\Oxide\(Oxide.Ext.Creator.dll,RustCreator.Ext.Core.dllandprotobuf-net.dll) into the server’sRustDedicated_Data\Managed\folder, the one that holdsOxide.Core.dll. - Start the server.
Keep the file names exactly as they are. Oxide loads an extension from that folder only when its file name
starts with Oxide., so a renamed Oxide.Ext.Creator.dll is silently never loaded.
Copy the Core file too. The host file alone loads and then fails to do anything, because every
decision it makes lives in Core. On Oxide, protobuf-net.dll is needed as well: Oxide does not ship it.
Check that it worked
Section titled “Check that it worked”The extension reports itself in the server console and the server log. Search for [RustCreator.Ext]. On a
map that carries Creator data you get a manifest line and then one line per block, like this:
[RustCreator.Ext] manifest: 3 blocks, editor <version>[RustCreator.Ext] io: v1 nodes=12 wires=11 OK[RustCreator.Ext] loot: found=4 applied=4 skipped=0 items=17 OK[RustCreator.Ext] vending: found=1 applied=1 skipped=0 items=6 OKRead them as: found is how many things the map asked for, applied is how many landed on a live entity,
and skipped is the rest, with the reason in brackets. What you want is applied matching what you
authored and skipped=0.
On a map with no Creator data the extension stays silent on purpose. Silence there is not a failure; it means the map is not carrying anything for it to apply.
What the census lines tell you when they are not clean
Section titled “What the census lines tell you when they are not clean”| What you see | What it means |
|---|---|
skipped=… (noMatch=…) | The map asked for an entity that is not there, at that position. Usually a prefab that was moved or deleted after the wiring was authored. |
skipped=… (ambiguous=…) | Two entities sit on the same spot, so the extension will not guess which one you meant. |
skipped=… (missingProfile=…) | A placement points at a loot, vending or NPC profile that is not in the map. |
unknownItems=… | An item shortname this wipe’s Rust does not have. The line names each one. Fix the profile in Creator and re-save. |
CRC-FAIL | The block is damaged. Re-save the map from Creator. |
MISSING (in manifest, not in map) | Something stripped one of Creator’s blocks out of the file. See the Caution below. |
SKIPPED (needs reader >= N) | The map was saved by a newer Creator than your extension. Update the extension. |
None of these stop the map loading. The extension is written so a data problem is reported and skipped, not thrown.
Deep Sea objects and settings
Section titled “Deep Sea objects and settings”Three things happen on every map the extension loads, including maps with no Creator data, because all three are about the Deep Sea that Rust runs beside your map.
Deep Sea objects you placed on your map stay, and players on the mainland see them. Rust counts every Deep Sea island, floating city and ghost ship as part of its Deep Sea, wherever it stands: it keeps them on its own lists and sends them only to players inside the Deep Sea. So on a server without the extension, a copy you placed on your own map is deleted at the first Deep Sea close and does not come back until the next map wipe, and players on the mainland most likely never see it before that. The extension keeps the copies you placed out of every close and sends them to mainland players instead: islands and ghost ships to every player on the mainland, a floating city to the players near it, because a city is too heavy to send to the whole map at once. It only protects what the map itself placed, and only outside the Deep Sea zone: the Deep Sea’s own random islands, cities and ships open and close exactly as they do on any server, and a copy an admin spawns in by command is not protected. Creator’s server-ready check notes every one of them you place, and it also warns when a map is wider than 7,800 m, because the west edge of such a map reaches into the Deep Sea zone. On a server that will not run the extension, swap the islands and ghost ships for their art instead (EDIT, Swap Deep Sea Objects for Their Art): it looks the same and no close removes it.
The Deep Sea objects it keeps, and the tropical islands you stamped, are restocked. Rust fills its own
Deep Sea islands, cities and ghost ships with loot and people each time the Deep Sea opens, and nowhere else,
so a copy you placed on your map would otherwise stay empty once looted. Each time the Deep Sea opens, the
extension fills what it keeps the same way: a ghost ship’s crates, barrels and scientists, an island’s loot and
its residents, and the same for every tropical island you made with the Island Stamp. On a fresh wipe it also
fills them once when the server starts, because your islands are there from the start where the Deep Sea’s
appear when it opens. It uses each object’s own spawners, so the amounts are the game’s own: anything that
still holds loot or people is left as it is (nothing is ever doubled up), the server’s own
deepsea.loot_scale and deepsea.loot_respawn_scale apply, and turning off ai.npc_spawn_on_deep_sea_islands
or ai.npc_spawn_on_junkpile keeps the island residents or the ghost ship scientists away as it does in the
Deep Sea. Each island also gets the walking paths the Deep Sea builds for its own islands, so its residents can
move around. One line is printed each time. It looks like this (an example; the counts on your server will differ):
[RustCreator.Ext] deepsea refill (opening 1): targets 3 (1 island, 0 floatingcity, 1 ghostship, 1 tropicalart), groups 41; acted 12 of 12 planned, +37 entities; scaled 0; left: populated 3, respawn 9, npcGated 0, pending 0, inactive 17, chance 0; navmesh baked 0 OKA floating city has no spawners of its own: its shopkeepers and turrets are part of it and stay with it.
The map’s recommended Deep Sea settings are applied. A map can carry Deep Sea settings: the Tropical look (the Deep Sea’s sand, palms and ground cover over the whole map), how long the Deep Sea stays open, and which side of the world its portal opens on. The extension sets them when the server starts, before the Deep Sea is created, and logs each one with the value it replaced:
[RustCreator.Ext] deepsea setting: deepsea.terrain_everywhere true SET, was 'False' (from tropicalLook=On)[RustCreator.Ext] deepsea settings (createdeepsea): planned=3 set=3 unchanged=0 unknown=0 refused=0 failed=0 OK[RustCreator.Ext] deepsea keep (serverinit): listed islands=0 floatingcities=1 ghostships=2, inGroup=3; kept 2 map-placed out of the close this pass (0 island, 1 floatingcity, 1 ghostship), protected total 2; rehomed 2, detached 155; left to vanilla: 1 inside the zone, 0 outside and not map-placed OKA keep line is also printed at every Deep Sea close. A setting this server’s Rust version does not have is
reported as SKIPPED and the rest still apply. deepsea.terrain_everywhere is saved by the server, so it
stays set after you switch to another map until you set it back.
Without the extension, Creator writes the same settings beside your map when you save, as a file named after
it that ends in .server.cfg. Paste its lines into the server’s server.cfg. That covers the settings, not
the Deep Sea objects you placed. Setting deepsea.enabled false is not a way to keep them: it stops the close
but turns the whole Deep Sea off, and players on the mainland still do not see them. Swap them for their art
instead, as above.
| Setting | What it does |
|---|---|
RC_EXT_DEEPSEA_KEEP | On by default. 0 gives the Deep Sea close back its normal behavior, deleting the copies you placed. A map can also turn it off for itself. |
RC_EXT_DEEPSEA_REFILL | On by default. 0 stops the restocking: the objects the extension keeps and your stamped islands keep only the loot the game refills by itself over time, and their residents have no walking paths. |
RC_EXT_DEEPSEA_SETTINGS | On by default. 0 leaves your own server.cfg in charge: every setting the map asks for is printed as NOT APPLIED and none is changed. |
All three are environment variables on the server, read once when the extension loads.
Semi-Tropical ground
Section titled “Semi-Tropical ground”On a map saved in Semi-Tropical mode (see Tropical biome), the extension gives the tropical look to each player while they stand on the map’s painted Tropical ground, and tells the game’s own spawns that the ground there is Tropical. On any other map it does nothing at all. At startup it prints what it found:
[RustCreator.Ext] tropical: mode=Semi switch=on biome=on (Semi-Tropical, 5120 Tropical cell(s) painted)[RustCreator.Ext] tropical switch: ON, one check every 1 s, edge band 3 cell(s) (12 m), ...and one line each time a player switches, with the time the server sent it:
[RustCreator.Ext] tropical: Rook (7656...) ENTERED Tropical ground at (1204.5, -388.1): deepsea.terrain_everywhere True, sent to that player only (t=5123.418 s)| Setting | What it does |
|---|---|
RC_EXT_TROPICAL_SWITCH | On by default. 0 keeps every player on the ordinary look. |
RC_EXT_TROPICAL_BIOME | On by default. 0 leaves the game’s own biome answers untouched, so spawns treat Tropical ground as the Arid under it. |
RC_EXT_TROPICAL_EDGE | The margin, in meters, a player must be clear of Tropical ground before their look switches back. Default 12. |
RC_EXT_TROPICAL_INTERVAL | Seconds between two checks of every player. Default 1, allowed from 0.25 to 10. |
If an admin sets deepsea.terrain_everywhere true by hand while a Semi-Tropical map is running, every player
already has the tropical look, so the extension sends nothing until it is set back to false; then the players
on Tropical ground get their look back at the next check.
Reloading it
Section titled “Reloading it”Reloading the extension (c.reload on Carbon, oxide.reload on Oxide) cleans up what it created and
applies the map again from scratch. NPC spawners it made are destroyed and re-created exactly once, not
doubled. You can reload it as often as you like without accumulating entities.
What is proven, and what is not
Section titled “What is proven, and what is not”The extension’s decision logic has its own test suite, and its live apply has been run end to end on a real dedicated server under Carbon: the loot, vending and NPC blocks applied, the census came back clean, and a reload re-created the spawners without doubling them.
The Oxide build is the same shared logic behind a different host adapter, and it has not had the same live run. If you are the first person to run it on Oxide, the census lines above are how you will know, and that is worth a message in the Discord either way.
If it does not load at all
Section titled “If it does not load at all”- Nothing in the log mentions
RustCreator.Ext. The files are in the wrong folder, a file was renamed, or not every file was copied. Check each one, in the folder named above for your framework. - The server logs an assembly or type error on startup. The extension was built against a different
Rust server version than the one you are running (
manifest.jsonin theServerExtensionfolder names the build it was made for). It reads the server’s own types directly, so a Rust update can break that binding. On Oxide, a missingprotobuf-net.dllshows up the same way. - It loads and every block is skipped. The positions in the map no longer match the entities the server
spawned. That is usually a map edited after the wiring was authored: see
noMatchabove.