MachinaWards
Protect your builds with configurable land claim wards — no grief, no drama.
MachinaWards lets players place physical ward blocks to claim and protect an area. Members can be added by the owner, events are logged, and outsiders are stopped cold. Three tiers of wards scale from starter bases to high-value infrastructure.
How It Works
Craft a ward item and place it like any block. The block marks the center of your protected zone. Break or sneak+right-click to pick it back up — the ward stays in your inventory so you can relocate it any time.
Right-click the ward block to open the management menu.
Ward Tiers
Tier
Block
Default Radius
Member Limit
Ward Intelligence
Basic Lantern 12 blocks 5 —
Advanced Beacon 20 blocks 10 —
Super Crying Obsidian 30 blocks Unlimited Yes
All tiers, recipes, radii, prices, and member limits are fully configurable in config.yml. Server operators can add or rename tiers freely.
Protection
Inside a ward, the following are blocked for non-members (all toggleable per category in config.yml):
- Block placing and breaking
- Block interaction (buttons, chests, doors, etc.)
- Explosions (creeper, TNT, etc.)
- Fire spread
- Piston pushing/pulling blocks across ward boundaries
- Entity grief — Endermen, silverfish, Wither, Ravagers, and other griefing mobs can't alter blocks inside a ward
- Fluid flow — lava and water can't flow into a ward from outside
- Hanging entities — non-members can't break item frames or paintings
- PVP — outsiders can't attack players inside a ward (per-ward override: Allow PVP flag)
- Entity damage — outsiders can't damage animals or mobs inside a ward (per-ward override: Allow Mob Damage flag)
- Crop trampling — non-members can't trample farmland inside a ward
The ward owner and any added members bypass all restrictions. Players with wards.admin bypass everything.
Wards cannot overlap — placement is blocked if the new ward's radius intersects an existing one, keeping protection zones unambiguous.
Ward Menu
Right-clicking the ward block opens a GUI with:
- Rename — give your ward a custom name, shown in menus and /ward list
- Entry Message — set a custom message visitors see on entry. Supports & color codes and &#RRGGBB hex colors. Placeholders: %ward%, %owner%, %tier%, %radius%. Type clear to remove
- Toggle Alerts — turn entry notifications on/off for this ward
- Members — view all current members
- Add Member — type a player name in chat to add them (enforces tier member limit)
- Remove Member — click a player skull to remove them
- History — view the last 20 entry log entries
- Show Radius — draws a purple particle boundary for 10 seconds so you can visualize your claim
- Allow PVP — per-ward toggle to allow outsiders to PVP inside this specific ward
- Allow Mob Damage — per-ward toggle to allow outsiders to damage animals/mobs inside this specific ward
- Ward Intelligence (Super Ward only) — access the feature tracking system
Super Ward — Ward Intelligence
Super wards include a Ward Intelligence menu with five toggleable tracking features:
Feature
What It Tracks
Creeper Alert Notifies the owner when a creeper explodes inside the ward
Mob Kills Player Logs and alerts when a mob kills a player inside the ward
Mob Kills Entity Logs when a mob kills any entity inside the ward
Player Death Logs every player death inside the ward
Explosion Log Logs all explosions inside the ward
Each feature has its own sub-menu where you can toggle it on/off, view recent logs, or clear the log history. All data is persisted to the database and wiped automatically when the ward is destroyed.
Economy Shop
If Vault is installed with an economy provider (e.g. EssentialsX), players can purchase ward items directly using /ward shop. Prices are set per tier in config.yml.
Commands
Command
Description
/ward Show help
/ward shop Open the ward shop (requires Vault)
/ward list List your wards with names, tiers, worlds, and coords
`/ward tp <id name>`
`/ward compass [id name]`
/ward transfer <player> Transfer your nearby ward to another player
/ward transfer <id> <player> Transfer a specific ward to another player
/ward addmember <player> Add a member to your nearby ward
/ward removemember <player> Remove a member from your nearby ward
`/ward info [id name]`
/ward nearby [radius] List wards within radius blocks (default 100, max 500), sorted by distance
/ward admin list [player]
(admin) List all wards, optionally filter by player
`/ward admin delete <id name>`
`/ward admin tp <id name>`
/ward admin stats
(admin) Show total wards, per-world breakdown, members, and owner count
/ward admin migrate mysql
(admin) Copy all ward data from SQLite to MySQL
/ward reload
(admin) Reload config and re-register recipes
Permissions
Node
Description
wards.admin Full administrative access — bypass protection, delete any ward
wards.place Allows placing ward blocks (default: true for all players)
wards.player.<N> Cap how many wards a player can own (e.g.wards.player.3)
Visual & Sound Effects
Particles
- Ambient particles — a subtle END_ROD effect floats above each ward block so you always know where your wards are (configurable interval)
- Placement burst — particle effect confirms a new ward was created
- Deletion burst — particle effect fires when a ward is broken or picked up
- Radius preview — purple particle ring shows your claim boundary for 10 seconds via the Show Radius button
Sounds
(all configurable in config.yml → sounds
- ward_place — plays when a ward block is placed
- ward_break — plays when a ward is broken/removed
- ward_pickup — plays when a ward is picked up via sneak+right-click
- entry_alert — plays for the visitor when they enter a ward
Set any sound to "" to disable it individually.
Entry Warnings
When a non-member enters a ward they see an action bar notification showing the ward name and owner. This is configurable per ward — owners can set a fully custom entry message with color codes and hex colors directly from the ward menu. The message supports placeholders: %ward%, %owner%, %tier%, and %radius%. The visitor warning can be toggled globally in config.yml.
Ward Compass
/ward compass sets your compass to point at your nearest ward in the current world. Specify an ID or name to target a specific ward. No special item is needed — any compass in your inventory will work.
Ownership Transfer
/ward transfer <player> while standing in a ward transfers ownership to another player. Use /ward transfer <id> <player> to transfer from anywhere. The new owner is notified immediately if they are online.
Nearby Wards
/ward nearby [radius] lists all wards within the given radius (default 100 blocks, max 500), sorted by distance. Shows each ward's name, tier, owner, and distance. Useful for scouts, admins, and players exploring unfamiliar territory.
Anti-Abuse
- Ward items cannot be used as crafting ingredients
- Ward items cannot be inserted into beacon payment slots
- Wards cannot be placed overlapping an existing ward
- Picking up a ward block requires a second sneak+right-click confirmation within a configurable window (default 5 seconds) to prevent accidents
Database
MachinaWards stores all ward data in a database. Two backends are supported:
SQLite
(default — no setup required)
database:
type: sqlite
Data is stored in plugins/MachinaWards/MachinaWards.db.
MySQL / MariaDB
database:
type: mysql
mysql:
host: localhost
port: 3306
database: machinawards
username: root
password: ""
The MySQL driver is downloaded automatically — no manual installation needed. Use /ward admin migrate mysql to copy existing SQLite data to MySQL before switching.
Configuration
Everything is configurable in config.yml:
- Database: SQLite (default) or MySQL/MariaDB
- Shape: column (vertical cylinder, unlimited height) or sphere (3D radius)
- World whitelist — restrict wards to specific worlds
- Height limits — min_y / max_y
- Alert cooldown — default 90 seconds between entry notifications
- Protection toggles — individually enable/disable each protection category
- Per-tier: display name, placed block material, crafting recipe, radius, price, member limit (max_members), features list
- Particle type and interval
- Sound effects — one config key per event, set to "" to disable
- Entry warning: entry.show_warning_to_visitor, entry.warning_format with %ward%, %owner%, %tier%, %radius% placeholders
- Pickup confirmation window: pickup.confirm_ms (default 5000ms)
- Color support: all text fields support & color codes and &#RRGGBB hex colors
Dependencies
- Spigot / Paper / Purpur 1.21+
- Vault (optional) — required only for the economy shop
- MySQL/MariaDB (optional) — only if you choose the MySQL database backend
![[IMG]](//proxy.spigotmc.org/e2fe82272ba16af68e1a71979f891ef7d10a4aa9/68747470733a2f2f63646e2e6d6f6472696e74682e636f6d2f646174612f6361636865645f696d616765732f363632363930366138303462383662653661663465306237373163633635386234316631623866632e6a706567)