

Simple Tidy and Unique Ward to protect your base efficiently on your server
It adds a clone of vanilla ward but with more server-side features such as diverse protections, permission control, guild integration, ward count limits, and compatibility handling for common utility mods.

Registration is same with vanilla ward.
There is blacklist config to block certain items inside ward area.

Ward Settings UI
Ward area cannot be overlapped unless there is guild or one player built all the wards.
Good old auto closing door inside ward area
Inside a foreign enabled Ward, unauthorized players are blocked from:
TargetPortal map teleport and portal toggle mode on protected portalsTreeBase)If installed, STUWard adds extra integration or blocking for:
Guilds (guild-based trust and overlap behavior)Following mod's feature would be blocked on other's wards
TargetPortalAzuCraftyBoxeskg_TameableCollectorPortablePalsWard with the hammer and place it.8m.Alt+E to open Ward Settings.EWhile placing a ward, the placement preview shows the current maximum configurable radius.
A player is treated as trusted inside a ward if they are:
Guild is required)Registered playersNotes:
3 wards. (Set to -1 for unlimited)BepInEx/config/STUWard.WardNumberOverride.ymlMax Wards Per Steam ID.stuw_wardreport generates BepInEx/config/STUWard.WardCountReport.ymlSTUWard.WardNumberOverride.yml and STUWard.ItemPrefabs.yml in the config folder[1 - General]
## If on, the configuration is locked and can be changed by server admins only. Synced with server.
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Lock Configuration = On
## Maximum number of managed Wards allowed per Steam/platform account. Set to -1 for unlimited. Synced with server.
# Setting type: Int32
# Default value: 3
Max Wards Per Steam ID = 3
## Maximum configurable Ward radius. Valid range: 8 to 64. Synced with server.
# Setting type: Single
# Default value: 32
Max Ward Radius = 32
## Pickup rule inside a foreign enabled ward. BlockAllExceptWhitelist blocks every item pickup except pickup_whitelist. AllowAllExceptBlacklist allows item pickup except pickup_blacklist. Synced with server.
# Setting type: PickupBlockRule
# Default value: BlockAllExceptWhitelist
# Acceptable values: BlockAllExceptWhitelist, AllowAllExceptBlacklist
Pickup Block Mode = AllowAllExceptBlacklist
## If on, building pieces inside an enabled ward ignore damage from MonsterAI-controlled attackers while no trusted player is nearby. Synced with server.
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Protect Unattended Ward Structures From Hostile Creatures = On
## Additional distance beyond the ward radius used when checking for nearby trusted players before hostile-creature structure protection turns off. Synced with server.
# Setting type: Single
# Default value: 16
Unattended Ward Trusted Player Range Buffer = 16
## How long a ward keeps counting as attended after the last nearby trusted player leaves. Synced with server.
# Setting type: Single
# Default value: 10
Unattended Ward Trusted Presence Grace Seconds = 10
## How often nearby trusted-player attendance is recalculated for unattended hostile-creature structure protection. Synced with server.
# Setting type: Single
# Default value: 0.5
Unattended Ward Presence Refresh Interval = 0.5
## If on, the vanilla guard_stone build recipe is removed from the Hammer piece table while STUWard remains available. Synced with server.
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Disable Vanilla Guard Stone Recipe = On
## STUWard recipe override. Format: ItemPrefab:Amount[:Recover], ... Synced with server.
# Setting type: String
# Default value: GreydwarfEye:1,BoneFragments:3,Flint:5,Wood:7
STUWard Recipe = GreydwarfEye:1,BoneFragments:3,Flint:5,Wood:7
[2 - Client]
## Shortcut used to open the ward settings UI while looking at your ward. Example values: LeftAlt + E, F7 Not synced with server.
# Setting type: KeyboardShortcut
# Default value: E + LeftAlt
Ward Settings Shortcut = E + LeftAlt
[3 - Debug]
## Local-only diagnostic logging for ward ownership/toggle flows. Use Failures for rejection paths only, or Verbose for request and state tracing. Enable separately on each client/server instance you want logs from. Not synced with server.
# Setting type: DiagnosticLogMode
# Default value: Off
# Acceptable values: Off, Failures, Verbose
Ward Diagnostic Logging = Off
Ward overlap is not treated as "one ward allows, so access is fine".
For access checks, overlapping wards are additive:
For placement and radius expansion:
Registered players access does not bypass ward overlap rulesIn practice:
When a ward is placed, its guild identity is stored on the ward itself.
This means:
Example:
RedRedRedAfter that:
RedIf you want a ward to belong to a different guild later, the intended workflow is to remove it and place a new one under the new guild.