You are viewing a potentially older version of this package. View all versions.
TheShadowRealm-Uriel-0.18.2 icon

Uriel

A host of server-side QoL enhancements: collect & place world objects into your castle, hot-swap stairs without demolishing, share specific chests or prison cells publicly. Each feature admin-toggleable. Server-side only.

Date uploaded 2 weeks ago
Version 0.18.2
Download link TheShadowRealm-Uriel-0.18.2.zip
Downloads 44
Dependency string TheShadowRealm-Uriel-0.18.2

This mod requires the following mods to function

BepInEx-BepInExPack_V_Rising-1.733.2 icon
BepInEx-BepInExPack_V_Rising

BepInEx pack for V Rising. Preconfigured and includes Unity Base DLLs.

Preferred version: 1.733.2
deca-VampireCommandFramework-0.10.4 icon
deca-VampireCommandFramework

Command framework for developers to easily create universal commands for their plugins.

Preferred version: 0.10.4

README

Uriel, Lord of Hosts

Uriel, Lord of Hosts

A server-side umbrella mod for V Rising dedicated servers — a host of independent, admin-toggleable quality-of-life enhancements and structural fixes.


⚠ Heads-up before you install

Pre-1.0 — in active development. Test it first; don't roll it out broadly on a busy live server until you've vetted it yourself. Uriel is pre-release and evolving quickly. The features below are implemented and tested in local and dedicated development/test-server environments — not yet on a live production server. This is a server-side mod still under development: by running it you are helping test it, and you take that risk on yourself. Please back up your server save before adding any new mod, and ideally trial Uriel on a test server (or a quiet plot) first. Commands, config keys, and behavior may still change before 1.0.

Every feature is independently toggleable. If any one component feels unstable, you can turn just that part off in the config (each feature has its own Enabled switch) and keep using the rest — you never have to disable Uriel wholesale. See the per-section notes below and the Configuration table.

Found a bug or have an idea? The fastest way to get a fix into the next release is the The Shadow Realm Discord — that's the primary bug-report and feedback channel. Written-up GitHub issues are welcome too.


Repo: https://github.com/KDavidP1987/Uriel-Lord-of-Hosts Status: pre-1.0 public testing · server-side only · several feature groups live today, more sub-mods planned under the Uriel umbrella.

What it does

Uriel is never all-or-nothing: every feature ships behind its own config switch, and all sharing/editing is per-object opt-in — nothing is ever shared or changed server-wide on your behalf.

🏺 Object Spawning (collect & place world objects)

Bring world objects the build menu never offers into your castle — resource nodes, world chests, breakable crates and urns, and decorative props from across the map (GloomRot, Cursed Forest, dungeons, ruins). Spawn one at your aim point — or at your own location with the here flag (handy from a UI button) — inside your own plot; it's indestructible and decay-proof by default, and you move/rotate/remove it with .uriel move / .uriel rotate / .uriel despawn. Everything you place persists across restarts and is cleaned up automatically if its castle is ever destroyed.

Choose how durable it is with optional spawn flags: breakable (raids and decay can destroy it), smashable (you can destroy it by hand too), or respawn (it automatically comes back after being destroyed — until its castle is gone or you .uriel despawn it). Mix them, e.g. .uriel spawn <object> 0 smashable respawn.

Collect them by playing (Discovery mode). You unlock an object by destroying one in the world — chop a tree, smash a crate, break an ore vein — with an admin-set chance to "learn" it. .uriel unlocks shows your collection and percentage; .uriel catalog browses everything that exists; .uriel notify on|off toggles the unlock messages. Roughly half of all objects can't be destroyed — those unlock when you hit 100% collection, defeat Dracula (finish the game), or per boss via an admin-curated map. Admins choose the model (or turn it off), can set a build cost, block specific objects, and grant objects directly.

How it's managed: spawned world objects are placed and moved with the .uriel commands above, not the vanilla build menu (an engine limitation — the game won't let arbitrary world objects be selected in build mode). The optional BloodCraftHub companion can present a point-and-click palette UI.

🧪 Pre-1.0 guidance & quick tips (Object Spawning):

  • Not every spawnable object has been individually tested. The game ships thousands of prefabs; some may misbehave when placed as décor (spawn invisible, or not function). This is a big reason Uriel is pre-1.0, and exactly why we're asking for feedback — every broken object you report goes onto the block list for the next release.
  • Hazardous/problematic prefabs are blocked from spawning. The game's object list contains many entries that aren't real placeable décor (world-gen controllers, NPC-spawner "points of interest", invisible markers, baked "source" copies). Known-bad ones are filtered out of the catalog so players can't pick them. This filter is still being refined — there may be problematic objects not yet found.
  • If something spawns but you can't see it, it's INVISIBLE, not absent. The object is almost certainly there on the server but not rendering correctly (it's one of the not-yet-caught bad ones). .uriel despawn it to be safe — don't leave it sitting there — and please report it so it can be blocked.
  • Don't overlap objects on purpose. Stacking objects in the same spot can cause problems; Uriel blocks overlapping placements by default (ObjectSpawn.PreventOverlap). Offset things slightly instead.
  • Admins can block any object they don't want available — even one that isn't hard-coded blocked — with .uriel block <guid> (or by configuring their server). Blocked prefabs vanish from the catalog and can't be spawned.
  • Prefer admin-only while you vet it: the default ObjectSpawn.AdminOnly=true keeps spawning to admins; open it to players once you're comfortable. You can also disable this whole feature (ObjectSpawn.Enabled=false) and keep the rest of Uriel.

🗄 Public Storage (per-container opt-in)

Mark a specific chest as publicly accessible so anyone on the server can use it — community chests, donation boxes, free-stuff stashes, even paid vending boxes. Always owner-controlled; nothing is shared unless its owner shares it. Shares survive server restarts.

Sharing rules (set by aiming at your shared container):

  • Permission — take-only, give-only (donation box), or both.
  • Withdrawal limit — e.g. 1 stack per player per 24 hours.
  • Access cost — charge an item per stack withdrawn; the payment is delivered to a private "pay chest" you designate. A vending machine, basically.

Public prison cells (separate switch) — share a prison cell to let anyone tend your prisoner: feed and extract blood through the normal cell UI, and take the prisoner home with .uriel takeprisoner (they're subdued and released to the taker — bring Dominating Presence to escort them). The game's own subdue button only ever appears for the cell's own clan (an engine limitation), so the command covers everyone else.

Heads-up for players accessing a share: when a chest or cell is first made public, a player trying to use it may need to log out and back in once before their client recognizes it as accessible. After that initial relog, it behaves like any other container you can open.

🧪 Pre-1.0 guidance (Public Storage): sharing is always per-container, owner opt-in — nothing is shared unless someone shares it, so the blast radius is small. Trial it on a few containers first. Chest sharing and prison-cell sharing have separate switches (PublicStorage.Enabled / PublicStorage.PrisonEnabled), so you can enable one and not the other. Found an issue? Report it on Discord and, if needed, flip the switch off — your containers simply go back to private.

🪜 Stair Editing

  • Live restyle — aim at a placed staircase and swap it to another style; the change applies instantly for everyone, no server restart or relog (the stair is rebuilt in the new style on the spot). Only styles of the same stair shape (straight, left-curve, right-curve, wide) are offered, and DLC styles require owning that DLC — exactly the same rule as your build menu. Free, preserves position, rotation, and ownership.
  • Clean removal.uriel removestairs deletes a staircase you own without tearing apart the floors and walls it's attached to (something a normal dismantle can't cleanly do).

🧪 Pre-1.0 guidance (Stair Editing): restyling rebuilds the staircase on the spot (destroy + respawn in the new style); position, rotation, and ownership are preserved. As with any pre-1.0 feature, try it on a spare staircase first. If a stray "ghost" stair is ever left behind, an admin can clean it with .uriel stairpurge. You can disable the whole feature with StairSwap.Enabled=false.

Installation

Uriel is a server-side mod — install it on your V Rising dedicated server, not on player clients. Players need nothing installed.

Via Thunderstore Mod Manager / r2modman (recommended)

  1. Open the mod manager and select V Rising → your dedicated-server profile.
  2. Search for Uriel under the Mods tab → Install.
  3. Ensure its dependencies are installed in the same profile (they install automatically): BepInExPack_V_Rising and VampireCommandFramework.
  4. Launch the server through the mod manager's profile.

Manual install

  1. Install BepInExPack V Rising (1.733.2 or compatible) into your dedicated server.
  2. Install VampireCommandFramework into BepInEx/plugins/.
  3. Drop Uriel.dll into BepInEx/plugins/.
  4. Start the server once to generate the config at BepInEx/config/kdpen.Uriel.cfg, then edit and restart as needed.

Stop the server before replacing Uriel.dll — a running server file-locks the DLL.

Dependencies & compatibility

Mod Version Role
BepInExPack V Rising 1.733.2 Loader (hard dependency)
VampireCommandFramework 0.10.x Chat-command framework (hard dependency)

Optional companion (not a dependency): the client-side mod BloodCraftHub is designed to work alongside Uriel — players who install it on their own client can drive Uriel's features from in-game UI panels and buttons instead of typing. It is not required: like any server-side mod, every Uriel feature works fully through the .uriel chat commands, with or without BloodCraftHub.

Commands

All commands are chat commands prefixed with .uriel. Type .uriel for a quick overview, or .uriel help for a clean, topic-by-topic menu (objects / storage / stairs / admin). Most targeted commands also accept a trailing nearest token to act on the closest object to you instead of where you're aiming — handy when a menu or UI panel has your aim ray pointing elsewhere (e.g. .uriel share nearest, .uriel stairswap stone2 nearest).

🏺 Object Spawning commands

Players (active when ObjectSpawn.AdminOnly=false; you must be inside your own castle plot):

Command What it does
.uriel spawn <name|guid> [rot 0-3] [flags…] Place an object you've unlocked at your aim point. Flags (any order, after the rotation): breakable (raid/decay), smashable (you can break it too), respawn (auto-returns until castle gone / despawned), here (place at YOUR location), indestructible (default)
.uriel move [here] / .uriel rotate [0-3] / .uriel despawn Move (to your aim, or here = your location) / turn / remove the nearest object you spawned
.uriel unlocks Your collected objects + collection %
.uriel catalog [page] Browse the full world-object catalog
.uriel findprefab <text> Search objects by name
.uriel notify <on|off> Toggle your object-unlock chat messages

In Discovery mode you unlock objects by destroying them in the world; the non-destructible ones unlock on full collection, boss defeats, or admin grant.

Admin sub-commands
Command What it does
.uriel grant|revoke <player> <name|guid> Unlock / remove an object for a player
.uriel grantall <player> [all|destructible|indestructible] Bulk-grant the catalog (or a subset)
.uriel block|unblock <guid> · .uriel blocklist Forbid / allow a prefab
.uriel spawnlist · .uriel purgeplot List / clear spawned objects on the plot (live spawns + records; native objects never touched)
.uriel forcedespawn [confirm] Force-remove the aimed object, ignoring records/ownership (recovers untracked objects); names it, then confirm within 30s
.uriel forcepurgeplot Synonym for purgeplot (live spawns + records; native objects never touched). The old chain sweep was removed — it could delete native resources
.uriel purgeorphans Server-wide cleanup — scan the whole map and remove orphaned Uriel objects (castle gone, or no living heart governing them). Only Uriel's objects are touched; a backup for the automatic boot-time cleanup
.uriel bossmap add|remove|list <vblood> <obj> Curate which objects a V-blood defeat unlocks
.uriel api version|catalog|unlocked Machine API for BloodCraftHub
🗄 Public Storage & Prison commands

Players (aim at a container you own):

Command What it does
.uriel share [modifiers…] Make the aimed container public. Modifiers stack in any order: permission take|give|givetake, limithours <h>, limitwithdrawal <stacks>, cost <itemId> <amount>. Example: .uriel share permission take limithours 24 limitwithdrawal 1
.uriel unshare Make the aimed container private again
.uriel info Show a container's sharing rules (works for anyone)
.uriel shared List every container you have made public
.uriel unsharemine Revert all of your shares in one command
.uriel paychest Designate the aimed private chest to receive access-cost payments
.uriel finditem <name> Search item ids by name (for the cost modifier)
.uriel takeprisoner Take the prisoner from a shared cell — subdued and released to you
Admin sub-commands
Command What it does
.uriel sharedall [name|steamId] List all public containers, or just one player's
.uriel unshareplayer <name|steamId> Revert all of one player's shares
.uriel unshareall Revert every public container to private and clear the registry
.uriel sharedebug Dump the aimed container's live sharing state (diagnostics)

Admins may also aim at any container and use .uriel share […] / .uriel unshare to override its settings directly.

🪜 Stair Editing commands

Players (aim at a staircase you own):

Command What it does
.uriel stairswap <style|next> Restyle the aimed staircase live. Styles: stone1, stone2, stone3, gloomrot, projectk, strongblade* (* = requires that DLC). next cycles to the next style you own.
.uriel removestairs Cleanly delete the aimed staircase, leaving connected floors/walls intact
.uriel stairstyles Show the aimed stair's shape, current style, and which styles you can use
Admin sub-commands
Command What it does
.uriel stairpurge Destroy stray "ghost" stair entities within 5m (cleanup for older builds)

Configuration

BepInEx/config/kdpen.Uriel.cfg — every feature has its own Enabled switch. Config changes take effect on server restart.

Section Key Default Effect
ObjectSpawn Enabled true Master switch for object spawning
ObjectSpawn AdminOnly true When true, only admins may spawn — set false to open the player collection path
ObjectSpawn PlayerAccessMode Discovery Discovery (unlock by destroying) or Full (whole catalog)
ObjectSpawn DiscoveryChancePercent 25 Chance (0–100) that destroying a world object unlocks it
ObjectSpawn NonDestructibleUnlock Off How non-destructible objects unlock: Off/Collection/FinalBoss/AllBosses
ObjectSpawn IncludeCastleBuildables false Include the normal build-menu pieces in the catalog (off = world objects only)
ObjectSpawn PrefabCostItem / PrefabCostStack 0 / 0 Item + amount a player pays to build one object (0 = free)
ObjectSpawn Indestructible true Spawned objects are immortal + decay-proof by default (per-spawn breakable/smashable flags override; turn off globally for PvP)
ObjectSpawn PreventOverlap true Refuse to spawn/move an object onto a wall, station, or another spawned object (only floors may sit under décor) — prevents destabilizing pile-ups. Set false to allow free stacking at your own risk
ObjectSpawn RespawnEnabled true Master switch for the respawn flag (auto-return destroyed objects until the castle is gone)
ObjectSpawn RespawnPollSeconds 30 How often (seconds, min 5) the respawn check runs
ObjectSpawn (more) CollectionEnabled, BossUnlocksEnabled, DiscoveryNotify, RefundOnRemove, PurgeOrphansOnBoot — see the generated .cfg
PublicStorage Enabled true Master switch for chest sharing
PublicStorage PrisonEnabled true Independently allow prison-cell sharing
PublicStorage MaxTargetDistance 5 Aim distance for .uriel share / unshare targeting
StairSwap Enabled true Allow live stair restyling + .uriel removestairs
StairSwap MaxTargetDistance 6 Aim distance for the stair commands
StairSwap RespawnGapFrames 5 Frames between destroy & respawn when restyling a stair
Diagnostics VerboseLogging false Extra per-action log lines (useful when testing)

Roadmap

Uriel is an umbrella mod — the plan is to keep adding small, independently toggleable server-side sub-mods. Tentative and subject to change; full list (incl. large-scope ideas) in the roadmap.

Planned next:

  • Coffin sharing — share coffin use, with an optional cost-to-use modifier.
  • Conditional door access — share a door behind payment and/or allowed time windows (select hours).
  • Bulk storage sharing — open all heart-linked storage at a location in one action, auto-excluding the pay chest and any chests you've marked private.
  • BloodCraftHub integration — a client-side companion UI (share panels, prisoner-take button, stair-style picker).

Bigger ideas being explored: plot expansion (separate-instance phase gates or map copy/paste), a PvP-arena V Blood boss mode with prize tables, paid area-gating for mazes, scheduled/paid door & teleport controls, more castle decor assets, triggered NPC spawns, and basement levels.

Have a feature you'd like to see in the host? Bring it to the Discord.

Feedback & community

Developed and tested locally and on dedicated development/test servers — it has not yet been run on a live production server, which is exactly why it's pre-1.0 (see the heads-up at the top). It comes out of the V Rising community The Shadow Realm (Brutal PvE), maintained by Chaos, whose Discord is the home for Uriel testing and feedback. As a pre-1.0 mod, bug reports and feedback are hugely valued — and the people who help test now shape what 1.0 becomes.

Acknowledgements

Uriel stands on the shoulders of the V Rising modding community. Big thanks to:

  • VampireCommandFramework — by deca, the chat-command framework Uriel's commands are built on (a hard dependency).
  • BepInEx, the loader that makes V Rising modding possible.
  • KindredCommands & KindredSchematics — by odjit, whose open-source castle-building/tile techniques were a key reference for Uriel's live stair rebuild.
  • Bloodcraft — by zfolmt, a reference for server-side ECS/Harmony patterns.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — copyright © 2026 Kristopher Penland. Uriel adapts techniques from odjit's AGPL-licensed KindredCommands & KindredSchematics and is released under the same copyleft license; full corresponding source is on GitHub.

CHANGELOG

Changelog

Condensed, player-facing changelog. Full technical history: GitHub

0.19.0 (2026-06-10)

  • New (admin): per-object & global spawn conditions. Control how players may spawn objects — set a max number per plot, an item cost (per object, or a global default for everything), and whether players may make a given object indestructible or auto-respawning: .uriel objcfg <object> max 3, .uriel objcfg <object> cost 100 <itemId>, .uriel objcfg <object> indestructible false, plus .uriel objcfgglobal … for the defaults and .uriel objcfglist to review them. Admins themselves are never restricted; with nothing set, behavior is unchanged.
  • Fix: you can no longer build on a plot you've abandoned. Once a castle is abandoned, relinquished, or fully decayed, placing/moving objects there is refused — there's no owner to attach them to.
  • Fix: objects on an abandoned/destroyed castle are cleaned up during play (within ~2 minutes), instead of only at the next server restart. New admin switches ObjectSpawn.AutoPurgeOrphans (on by default) and OrphanPollSeconds. Only Uriel's own objects are ever removed — never anything native.
  • New (admin): adjustable object spacing. The minimum distance Uriel keeps between spawned objects is now a config setting — ObjectSpawn.OverlapMinDistance (default 0.5m). Lower it to place décor closer together / tighter around furniture, or set it to 0 to only block placing two things in the exact same spot. (Placing flush against a wall already worked and is unchanged.)
  • New (admin): force spawn for invisible effect zones. Area-effect prefabs (garlic/holy/cursed zones, dynamic clouds) are non-networked, so they were refused (they'd spawn invisible). Admins can now place them for testing with .uriel spawn <guid> force — the reply warns they likely won't be visible (you feel the effect, not see it). Players and the normal catalog are unaffected; other safety filters (no characters, abilities, or crash-prone containers) still apply.
  • Fix: a flag typed right after the object name (e.g. .uriel spawn <guid> force) used to do nothing; rotation and flags now work in any order after the name.
  • Companion mod renamed: BloodCraftHub is now Raphael (https://thunderstore.io/c/v-rising/p/TheShadowRealm/Raphael/). Still optional, still not a dependency.

0.18.2 (2026-06-09)

  • Fix: more invisible objects filtered out. NPC idle-animation spot markers (IdleInteractionLocation — Tinker/Fishing/Digging/etc., 16 of them) spawned invisible; they're now kept out of the catalog. Real visible objects (braziers, target dummies, etc.) are unaffected.
  • Note: not every spawnable object has been individually tested — if you find one that spawns invisible or misbehaves, .uriel despawn it and report it so it can be blocked.

0.18.1 (2026-06-09)

Critical hotfixes from live testing of 0.18.0:

  • Fix: spawning a pre-filled container no longer crashes the server. Some containers (e.g. the "Full" bookshelves/drawers/cabinets and loot chests) try to generate their contents the instant they spawn, which crashed the whole server. They're now kept out of the spawn catalog. Crafting stations, wardrobes, empty containers, and everything else are unaffected — you can still place an empty container and fill it yourself.
  • Fix (important): .uriel forcepurgeplot no longer removes native objects. In 0.18.0 it could delete a plot's natural resource nodes/trees. It now does exactly what .uriel purgeplot does — only Uriel's own objects, never anything native.
  • Fix: object catalog / Raphael handshake no longer spams errors. A bad internal type check broke the catalog and flooded the log on .uriel api version; resolved.

0.18.0 (2026-06-09)

  • New: objects can't be stacked inside each other or inside walls. A placement guard (ObjectSpawn.PreventOverlap, on by default) refuses to spawn or move an object onto a wall, station, or another spawned object — only floors may sit under décor. This prevents the overlapping pile-ups that can destabilize a server. Tip: don't try to overlap objects on purpose. Admins can set it off to allow free stacking (at your own risk).
  • New: .uriel spawn … here now drops the object in FRONT of you, not on top of your character. (.uriel move near yourself works the same way.)
  • Fix: invisible / hazardous objects can no longer be spawned. Some prefabs (world-gen "point of interest" controllers, baked décor "source" copies, and roof pieces that only render up on a building) end up invisible when spawned on the ground — and a few even carry NPC spawners. These are now filtered out of the catalog so players can't pick them. If an object ever still spawns invisible, it's a not-yet-found bad one — .uriel despawn it (it IS there, just not rendering) and please report it.
  • Fix (important): .uriel forcepurgeplot no longer deletes native objects. It could wrongly wipe a plot's plants, trees, and garden tiles. Plot-purge is now two tiers, and both only ever touch Uriel's own objects: .uriel purgeplot = light (your spawns), .uriel forcepurgeplot = strong (also clears legacy leftovers).
  • New (admin): .uriel purgeorphans — a server-wide cleanup that scans the whole map and removes orphaned Uriel objects (ones whose castle was destroyed, or that are sitting where no castle governs them). Only Uriel's own objects are ever touched. A handy backup to the automatic cleanup that already runs at server start.

0.17.0 (2026-06-08)

  • New: choose how a spawned object can be destroyed. Add a flag when you spawn: breakable (raids/decay can destroy it), smashable (you can destroy it by hand too), or leave it indestructible (the default). Example: .uriel spawn <object> 0 smashable.
  • New: respawn flag. A spawned object set to respawn automatically comes back after it's destroyed — until its castle is gone or you .uriel despawn it. Great for decor you want to "stick." Admin switch: ObjectSpawn.RespawnEnabled (+ RespawnPollSeconds).
  • New: place at YOUR location with here. .uriel spawn <object> 0 here (or .uriel move here) drops the object where you're standing instead of where the cursor points — handy when a UI panel has your aim pointing off into space.
  • Fix: breakable / indestructible now actually work. Previously the setting did nothing on most world objects (and "indestructible" chests could even vanish on their own after a while). Both now behave correctly.
  • Fix: characters & bosses no longer show up as spawnable objects. Any CHAR_ units / V Bloods that slipped into your unlock list from an older version are cleaned out automatically, and they can no longer be spawned.
  • Fix (Raphael companion): the object catalog and your unlocked-objects list now load in the companion UI (they previously came back empty).

0.16.0 (2026-06-08)

  • Fix: spawned objects can be managed again after a relog or server restart. .uriel despawn / move / rotate / spawninfo previously couldn't find objects you'd spawned in an earlier session — they now re-find them reliably, and the spawned-object list is no longer wiped on restart.
  • Fix: removing certain older spawned objects no longer makes them reappear. Some objects spawned in an early build kept re-spawning the instant you removed them; they're now removed for good.
  • New (admin): .uriel forcedespawn — force-remove the object you're aiming at, even one Uriel doesn't track (e.g. left over from an older version). Run it once to target (it names the object), then .uriel forcedespawn confirm within 30s. It never targets your castle heart.
  • New (admin): .uriel forcepurgeplot — clear every leftover spawned object on the plot you're standing in, including untracked ones. Your normal build pieces are left untouched.

0.15.0 (2026-06-08)

  • New feature: Object Spawning — collect & place WORLD objects in your castle! Bring in resource nodes, world chests, breakable props, and dungeon/GloomRot/ Cursed decor that the normal build menu never offers. .uriel spawn <object> places it inside your plot; .uriel move / .uriel rotate / .uriel despawn manage it. Spawned objects are indestructible & decay-proof by default.
  • Collect them by playing. In Discovery mode you unlock an object by destroying one in the world (admin-set % chance) — trees, chests, ore nodes, crates. .uriel unlocks shows your collection and %; .uriel catalog browses everything; .uriel notify on|off toggles the unlock messages.
  • Finish the game, get the rest. The ~half of objects that can't be destroyed can unlock on 100% collection, on defeating Dracula, or per-boss via an admin map — admin's choice (or off).
  • Admin controls: Full vs Discovery access, a build cost, block/allow specific prefabs, grant objects to players, and a kill-switch for the whole collection system. Castle build-menu pieces are excluded by default (this is about the world objects you can't otherwise get).
  • In-game help got friendlier: .uriel help now gives a clean, topic-by-topic menu (objects / storage / stairs / admin) instead of one long list.
  • Optional Raphael (companion) integration: a machine API exposes the object catalog and each player's collection for a future client-side palette UI.
  • Note: spawned world objects are managed with the .uriel commands above, not the vanilla build menu (an engine limitation).

0.14.0 (2026-06-07)

  • Stair swap now applies INSTANTLY — no restart needed! Restyling a staircase rebuilds it in the new style on the spot, so everyone sees the change live. Works on every stair shape (straight, curved left/right, wide). Now available to all players, not just admins.
  • New: .uriel removestairs — cleanly delete a staircase you own without tearing apart the floors and walls it's attached to (which a normal dismantle would disturb).
  • New config [StairSwap] RespawnGapFrames (default 5) to tune the rebuild.
  • Note: a swapped stair is rebuilt as a fresh object — if anything ever looks off, dismantle & rebuild it.
  • Licensed under AGPL-3.0 (Uriel adapts techniques from odjit's KindredCommands & KindredSchematics and shares their copyleft license).

0.13.2 (2026-06-07)

  • Stair swap works! The restyle is applied and saved instantly; the new look appears for everyone at the next server restart (an engine limitation — placed buildings render from a snapshot the server creates at startup). The swap message now says exactly that.

0.13.1 (2026-06-07)

  • Fix: swapped stairs now actually change their appearance (the game hides the visual identity in a second place — found it). Relog if a swap doesn't show immediately; a server restart settles everything.

0.13.0 (2026-06-07)

  • Stair swap reworked: the placed stair now simply BECOMES the other style — nothing is demolished or rebuilt, no materials move, and the stair keeps behaving exactly like the one you originally placed. If it still shows the old look right after swapping, step away and back (or relog).

0.12.2 (2026-06-07)

  • Fix: stair swaps complete now — if the game's own dismantle doesn't finish (it usually doesn't outside build mode), Uriel removes the stair itself and refunds you its full material cost before building the new style. Tall staircases are two stacked halves — swap each half (aim at it).

0.12.1 (2026-06-07)

  • Fix: stair swaps no longer leave invisible "ghost" stairs — removal now uses the game's own dismantle (with its normal material refund), and the new style is built only once the spot is truly free.
  • New admin command .uriel stairpurge to clean up ghost stairs left by earlier builds (stand near them, run it, restart the server, rebuild).

0.12.0 (2026-06-07)

  • Fix: swapped stairs are now REAL build objects — highlightable, movable, dismantlable — because the swap now rebuilds them through the game's own placement system. Stairs stuck as "permanent" from earlier builds: swap them once with this version to repair them. If the game ever refuses a placement, you keep the stair's full material cost in your inventory and can place it by hand — a swap can never lose your stair's value.

0.11.0 (2026-06-07)

  • All targeted commands accept a nearest option to act on the container or stair closest to YOU instead of where you're aiming (e.g. .uriel share nearest, .uriel stairswap stone2 nearest) — handy when a UI or menu is open. Aim targeting also falls back to nearest automatically when nothing is in front of you.

0.10.0 (2026-06-07)

  • NEW: .uriel takeprisoner — aim at a shared prison cell to take its prisoner: they're subdued and released to you (bring Dominating Presence to escort them). The game's own subdue button can't be shown to non-owners (it's locked inside the game client), so Uriel does it via command.

0.9.0 (2026-06-07)

  • Fix: sharing a chest now takes effect immediately for online players — no game restart needed (chest contents are fully preserved through the change).
  • Fix: swapped stairs stay selectable/editable. Already-stuck stairs from the previous build: swap them once more with this version to repair them.
  • Known issue: prisoners in shared cells can be fed/extracted but not yet subdued by others — a dedicated command is planned.

0.8.2 (2026-06-07)

  • Fix: share/unshare really does take effect immediately for online players now (the previous fix wasn't enough — containers briefly blink as they refresh for everyone).

0.8.1 (2026-06-07)

  • Fix: sharing/unsharing now takes effect immediately for players already online (previously could require a relog).
  • Fix: prisoners in a shared cell can now be subdued/charmed out by others.

0.8.0 (2026-06-07)

  • Fix: shared chests/prison cells are now accessible to other players even when the server's "loot enemy containers" setting is OFF (the usual configuration). Shares survive restarts; unsharing fully restores the container to its castle.

0.7.0 (2026-06-07)

  • STAIR HOT-SWAP (experimental): aim at a staircase and `.uriel stairswap<style>` re-skins it in place — no demolishing. Only styles of the same stair shape are offered, and DLC styles require owning that DLC (same rule as your build menu). `.uriel stairstyles` lists what's available; `.uriel stairswap next` cycles.

0.6.0 (2026-06-07)

  • .uriel shared now lists your public containers with their full rules; .uriel unsharemine reverts ALL of yours in one command.
  • Admins: .uriel sharedall [player] filter, .uriel unshareplayer <player> bulk shutdown, and aim + .uriel share/.uriel unshare now override any container's settings.

0.5.0 (2026-06-07)

  • Public PRISON CELLS (experimental): .uriel share a cell to let anyone feed/extract from your prisoner — or charm the prisoner out as their own subdued follower. Separate admin switch (PublicStorage.PrisonEnabled); chest and cell sharing stay independent.
  • Fix: deposits can no longer push wrong-type items into restricted slots (prison feeding slots, lumber/seed stashes).

0.4.1 (2026-06-06)

  • Fix: depositing into a shared container no longer fails with "container is full" (items were always safely refunded, but the deposit never landed). Cost payments had the same latent bug — also fixed.
  • Unshare restores the chest's ownership more faithfully; if a chest looks locked right after unsharing, close and reopen it.

0.4.0 (2026-06-06)

  • Share modifiers now stack in one command, any order: .uriel share LimitHours 6 Cost 123456789 100 Permission Take.
  • Payment safety: payments only collect when a destination can hold the full amount; specialized stashes (lumber/seed/…) are never used; if the pay chest is full, payment falls back to the shared chest, then the nearest general chest in the owner's castle — and if everything's full the trade is simply refused (taker keeps their items).

0.3.0 (2026-06-06)

  • Sharing rules (experimental): .uriel share permission take|give|givetake, withdrawal limits per player (.uriel share limithours 6, .uriel share limitwithdrawal 2), and per-stack access costs (.uriel share cost <itemId> <amount>, payments delivered to your .uriel paychest). Look up item ids with .uriel finditem <name>; inspect any container's rules with .uriel info.
  • Fix: others can now PUT items into shared containers (vanilla silently refused deposits; owners were affected too).

0.2.1 (2026-06-06)

  • Fix: .uriel share reported "no neutral team source found" on live servers (distant world objects are disabled and were invisible to the lookup; also fixed the same issue in share re-application at server restart).

0.2.0 (2026-06-06)

  • Public storage (experimental): aim at one of your castle chests and use .uriel share to let ANYONE on the server use it — per-container, owner controlled, .uriel unshare to revert. .uriel shared lists yours; admins get .uriel sharedall / .uriel unshareall. Shares survive restarts. Prison-cell sharing is a separate upcoming feature. Not yet validated on a live server — test feedback welcome.

0.1.0 (2026-06-06)

  • Initial scaffold — mod loads server-side, .uriel overview command, config switches in place. No gameplay features yet; stair hot-swap and public storage are in development.