Minecraft WorldGuard: Region Protection Explained
Protect your Minecraft server with WorldGuard: define regions, add members, set flags and priorities, and lock down the wilderness with __global__ passthrough.
Vanilla protects one square at spawn and nothing else. WorldGuard replaces that with named 3D regions you can draw anywhere, each with its own owners, members, flags and priority — a spawn nobody can touch, a shop district where each plot has a different owner, an arena where PvP is on and building is off, and a wilderness that is claim-only.
It is also the plugin people most often misconfigure, because two of its ideas are counter-intuitive: a new region already protects itself without any flag being set, and the flag that looks like it turns protection on is the one you should never touch. Both are covered below.
This guide covers defining regions, membership, flags and region groups, priorities and inheritance, the __global__ region, player self-claiming, storage, and the diagnostic commands. It sits under Minecraft Grief Protection and Rollback, which is where to start if you are not sure whether you want protection, logging or backups.
What WorldGuard Needs
WorldGuard requires the Bukkit API and the Bukkit build of WorldEdit
WorldGuard runs on Paper, Spigot and Purpur. A vanilla server jar cannot load plugins at all, and Forge and Sponge are not supported — nor is Fabric, which is not a Bukkit implementation either. It also needs WorldEdit, and specifically the Bukkit version of it, because WorldEdit is what selects the area a region covers. Install both jars together; WorldGuard will not start without WorldEdit. Installation is covered in How to install plugins for Minecraft Java Edition, and WorldEdit itself in Minecraft WorldEdit: Selections, Brushes and Schematics.
As of 19 August 2026 the current release is WorldGuard 7.0.18, published 31 July 2026, supporting Minecraft 26.2 on Bukkit, Paper, Spigot and Folia. Its WorldEdit dependency is at 7.4.5.
Creating Your First Region
Select the area with WorldEdit — //wand, left-click one corner, right-click the other, then //expand up and down to cover the full height of the build. Then:
/rg define spawn
/rg addmember spawn g:builders That is the whole thing. /region and /rg are the same command. Region IDs are case-insensitive and must be unique per world, so two worlds can each have a spawn.
A new region already prevents building
You do not set a flag to protect it. The moment
/rg defineruns, non-members cannot break or place blocks, open chests, or use doors inside it. Membership is what grants access back. This is the single most common misunderstanding, and it is the reason thebuildflag exists as a trap rather than a tool.
Prefix a name with g: to add a permission group instead of a player — g:builders refers to a LuckPerms group, covered in How to Set Up LuckPerms Permissions for Minecraft. You can also name owners at creation time: /rg define spawn sk89q g:builders.
Owners and members differ only in authority: both can build, owners can also manage the region if you have granted them the owner-level command permissions.
The commands you will actually use
| Command | What it does |
|---|---|
/rg define <id> [owners...] |
Create a region from your current WorldEdit selection |
/rg define -g <id> |
Create a region with no physical area — for templates |
/rg redefine <id> |
Re-shape an existing region to your current selection |
/rg remove [-u|-f] <id> |
Delete a region. With children, -u orphans them and -f deletes them |
/rg addmember <id> <names...> |
Add members |
/rg addowner <id> <names...> |
Add owners |
/rg removemember [-a] <id> <names...> |
Remove members. -a removes all |
/rg info [-s] [<id>] |
Show members, flags and priority. -s also selects it |
/rg select [<id>] |
Load a region's area into your WorldEdit selection |
/rg list [-p <player>] [-i <text>] |
List regions, filtered by owner or by ID text |
/rg flags <id> |
Interactive, clickable list of every flag and its value |
/rg setpriority <id> <n> |
Set priority — default 0 |
/rg setparent <id> [<parent>] |
Set or clear the parent region |
/rg teleport [-s] <id> |
Teleport to the region's teleport or spawn flag location |
Almost all of these work from the console; add -w <world> when it is ambiguous. Changes save automatically shortly after you make them — /rg save exists but is not normally needed.
Regions can be cuboids or 2D polygons with a height. Cylinders and spheres are not supported; WorldGuard will tell you so if you try.
Flags
A flag changes one behaviour inside a region.
/rg flag town pvp deny
/rg flag town greeting Welcome to town! Omit the value to remove a flag: /rg flag town pvp. Use -e to set an explicitly empty value, which is how you silence a greeting inherited from a larger region. /rg flags <id> lists everything with its current and default value, and the output is clickable in game.
Flags come in types — state (allow/deny), string, integer, double, boolean, location and set. Most string flags accept \n for a newline and colour codes, plus replacements such as %name%, %world%, %online% and %health%.
The flags most servers set
| Flag | Type | Effect |
|---|---|---|
pvp |
state | Whether players can damage each other |
tnt |
state | Whether TNT detonation or block damage is permitted |
creeper-explosion |
state | Whether creeper explosions do damage |
other-explosion |
state | Whether explosions in general do damage |
fire-spread / lava-fire |
state | Whether fire spreads, and whether lava starts fires |
enderman-grief / ravager-grief |
state | Whether endermen and ravagers move or break blocks |
mob-spawning |
state | Whether mobs can spawn, including via commands and spawn eggs |
deny-spawn |
set | Specific entity types that may not spawn |
chest-access |
state | Whether inventories can be opened |
use |
state | Doors, levers, buttons and plates — not inventories |
ride |
state | Whether vehicles and animals can be mounted |
entry / exit |
state | Whether players can enter or leave |
greeting / farewell |
string | Chat messages on entry and exit |
greeting-title / farewell-title |
string | Title and subtitle on entry and exit |
game-mode |
gamemode | Force survival, creative or adventure inside the region |
blocked-cmds / allowed-cmds |
set | Block or whitelist commands inside the region |
deny-message |
string | The message shown when an action is blocked |
heal-amount / heal-delay |
integer | Heal (or hurt, if negative) players at an interval |
passthrough |
state | Whether this region protects its area at all |
There are far more — natural events (snow-melt, ice-form, leaf-decay, crop-growth, vine-growth, coral-fade), map-making flags (invincible, fall-damage, time-lock, weather-lock), and chat flags (send-chat, receive-chat). /rg flags <id> is the authoritative list for the version you are running.
fire-spread,water-flow,lava-flowandlava-fireneed a config optionThese four are high-frequency events and require the "high frequency flags" option to be enabled in WorldGuard's config. They do nothing until it is. The
greeting,farewell, healing and feeding flags similarly need the "use player move event" option left enabled.
Region groups
A flag can be scoped to a category of player with -g:
/rg flag mall pvp -g nonmembers deny The five groups are all, members, owners, nonmembers and nonowners. They describe membership of the region and have nothing to do with permission groups.
You cannot set the same flag to different values for different groups on one region — if you need that, make two regions. Two defaults are worth remembering: entry and exit already default to non-members, so /rg flag vault entry deny keeps non-members out without any -g, and the spawn location flag defaults to members.
Never use the
buildflag to protect or unprotect a regionThis is WorldGuard's own strongest advice.
buildis set implicitly by membership, and setting it by hand overrides other regions in ways that are very hard to reason about. Worse,build denystops members building too — and it breaks pistons, because WorldGuard treats a piston as a member of whatever region it sits in, exactly like a player. To let people build, add them as members. To make a region stop protecting its area, usepassthrough. The same warning applies to the other protection flags: settingblock-break denystops pistons breaking blocks as well as players.
Priorities, Inheritance and Overlap
Regions may overlap, and by default a player must be allowed to build in every region they are standing in. That is safe but rigid; priorities and parents are how you get out of it.
Priority
Every region starts at priority 0. Higher wins.
/rg define pub
/rg setpriority pub 10
/rg addmember pub g:pubstaff Where regions overlap, only the highest-priority regions are considered for membership and building, and for any given flag the highest-priority region that defines it wins. Without the priority above, a pub member would also need to be a spawn member to build.
If two regions at the same priority disagree on a state flag, deny wins over allow. For non-state flags — two different greeting messages at the same priority, say — the result is undefined. Do not do that.
Parents
A region can have at most one parent, set with /rg setparent <child> <parent>. A child inherits the parent's members and owners, and inherits the parent's flags for any flag the child has not set itself. WorldGuard refuses circular inheritance.
/rg define mall
/rg define -g shop_template
/rg define shop1
/rg setparent shop_template mall
/rg setparent shop1 shop_template /rg define -g creates a region with no physical area. That is the template pattern: the template exists only to hold flags and members that every plot should inherit, and each plot points at it. Deny use across the mall's public areas and allow it back on the template, and every shop gets working doors without touching each one.
Inheritance only works properly when children are at the same or higher priority than their parent — a higher-priority parent overrides its own children.
Overlapping regions and
-g nonmembersare subtler than they lookWhen a flag is set with a region group, the player must be a member of the region the flag is set on, or of one of that region's child regions. If spawn has
pvp -g nonmembers denyand no members, then a member of an overlapping market region is still a "non-member" as far as spawn is concerned, and PvP is denied for them. Parenting the market to spawn fixes it.
The __global__ Region
Every world has an implicit region called __global__. It covers the whole world, sits at the lowest possible priority, and does not exist until you refer to it.
/rg flag __global__ passthrough deny passthrough is short for "passthrough build permissions" and has nothing to do with movement. Unlike a normal region, __global__ has passthrough implicitly set to allow, which is why unclaimed wilderness is open ground by default. Set it to deny and the global region starts behaving like any other region — building requires membership, and since it covers everything, the whole world becomes claim-only, with normal regions above it granting access where you want it. That one command turns a free-for-all map into a claims map.
Adding an owner or member to __global__ sets passthrough to deny implicitly, for legacy reasons. Setting build on it is strongly discouraged and will break every piston not inside another region.
Two things __global__ is bad at:
-g nonmembersdoes not do what you expect on it. Regions do not inherit from the global region, so "non-members of__global__" includes the members of every plot you have made. Use a template region and parent your plots to it instead.- It is per-world. Setting it in the overworld does nothing for the Nether or a creative world. Run it again with
-w, or from inside each world.
The same page of WorldGuard's docs gives the two most common global settings for a survival server:
/rg flag __global__ use allow
/rg flag __global__ ride allow Be aware the second one also lets players take horses out of other people's regions.
What Protection Actually Covers
WorldGuard's protection is broad, and knowing the list saves you from setting flags you do not need. Out of the box, inside a region, non-members cannot: break or place blocks; open chests or furnaces; fire TNT or gravel cannons in from outside; grief with tree growth from outside; push or pull blocks with pistons across the boundary; exploit sign changes; trample crops; damage or steal minecarts and boats; destroy paintings and item frames; use doors, buttons, plates and levers; leash, tame or shear animals; or land unauthorised splash potions and projectiles.
Water and lava flow protection exists but is off by default. Item drops, item pickups and XP drops are deliberately allowed for non-members; the item-drop, item-pickup and exp-drops flags change that.
The mechanism behind all of this is worth understanding: WorldGuard treats blocks and entities as members of whatever region they are physically inside. A piston inside a region is a member and works normally; a piston outside pushing in is a non-member and is blocked. That is also why build deny breaks pistons — it revokes membership from everything, including them.
Mod-added blocks get best-effort protection, mostly by blocking clicks on unknown blocks. Blocks that open a client-side GUI cannot be protected, because they bypass the events WorldGuard listens to.
Letting Players Claim Their Own Land
/rg claim <id> is a rudimentary self-serve claim system: the player selects an area with WorldEdit and claims it, becoming its owner automatically. Access comes from the worldguard.region.claim permission, and the player only needs worldedit.selection on the WorldEdit side.
Four rules apply unless the player has worldguard.region.unlimited:
- They cannot exceed the maximum region count set in the config
- The claim volume cannot exceed
regions.max-claim-volume - The claim cannot overwrite an existing region of the same name
- The claim cannot overlap a region they do not already own
If regions.claim-only-inside-existing-regions is enabled, claims must overlap a region the player already owns. Polygonal regions are not fully supported by claiming.
For a server built entirely around player claims, most owners reach for GriefPrevention instead — it has been the self-service anti-griefing plugin since 2011 and needs no WorldEdit selection at all. WorldGuard's claiming is best treated as a bolt-on for a server that already runs regions.
Storage
Region data lives in YAML by default, in WorldGuard's configuration folder, under a per-world subfolder. That file can be edited while the server is running and reloaded with /rg load. It is plain YAML — each region records its bounds, type, priority, members, owners and flags, with player UUIDs rather than names.
MySQL storage exists and WorldGuard recommends against it. Its own documentation says SQL region storage has major issues, tells anyone using it to migrate back with /rg migratedb mysql yaml, and states that SQL support will be removed in a future version. No other SQL database is supported at all. Use YAML.
Two migrations are worth knowing about. /rg migrateuuid converts old name-based region data to UUIDs. /rg migrateheights extends regions that were defined at the pre-1.18 world limits (y 0 to 255) out to the modern world height — useful if you are bringing an old map forward, and covered alongside the rest of world handling in Minecraft World Management. Both pause the entire server while they run, so take a backup and pick a quiet moment.
Diagnostics
| Command | What it does |
|---|---|
/rg bypass |
Toggle your own protection bypass — note it does not bypass pvp deny |
/wg debug testbreak <player> |
Simulate a block break and report which plugin blocked it |
/wg debug testplace <player> |
The same for block placement |
/wg debug testinteract <player> |
The same for interacting with a block |
/wg debug testdamage -t <player> |
Simulate a damage event — how to work out why PvP seems blocked |
/wg flushstates [<player>] |
Clear cached movement state when a player is stuck by entry or exit |
/wg report [-p] |
Write a support report to plugins/WorldGuard/report.txt |
/wg running |
List WorldGuard's background tasks |
/stopfire [<world>] |
Emergency: stop all fire spread. /allowfire lifts it |
/wg debug testbreak is the one to reach for when a player insists they cannot build and you cannot see why. It runs a fake block break and lists the plugins that objected, most recent first — only the first entry matters, because a later plugin that unblocks an already-blocked action has no effect. Point the crosshair at the block yourself, or add -t to use the target player's crosshair instead.
Do not use WorldGuard's chest protection
WorldGuard has an old sign-based
[Lock]chest protection feature. Its own documentation recommends against it for new setups, notes that it does not support UUIDs — so players lose access to their own chests after a name change — and states that it will be removed in a future version. Use regions for area ownership, and a dedicated single-block plugin such as LWC Extended if you need per-chest locks. That is what WorldGuard's docs point you at.
Common Issues
- WorldGuard will not load. WorldEdit is missing, is the wrong build, or the server is not a Bukkit implementation.
- A region does not protect anything. Its
passthroughflag isallow, or a higher-priority overlapping region is overriding it./rg infoand/rg flagsshow both. - Members cannot build in their own region. They are standing in an overlapping region they are not a member of — a player must be permitted in all of them unless priorities say otherwise. Or
buildhas been set todeny, which blocks members too. - Pistons stopped working. The
buildorblock-breakflag has been set todenysomewhere, most likely on__global__. Unset it with/rg flag __global__ build. - Creepers still blow holes.
creeper-explosioncovers one region; the vanillamob_griefinggame rule covers the whole world. Pick the scope you want — see Minecraft Grief Protection and Rollback. - The greeting message never appears. The "use player move event" option is disabled, or an overlapping region carries the same greeting so no change is detected on crossing.
- A flag set on
__global__with-g nonmembersdoes nothing useful. Expected. Use a template region. - Protection works in the overworld but not the Nether.
__global__is per-world. So is every region ID.
FAQ
Do I still need CoreProtect if I have WorldGuard?
Yes, and CoreProtect is the higher priority of the two. WorldGuard stops damage inside the areas you have drawn; it does nothing about the rest of the map, and it cannot tell you who did what or undo it. See CoreProtect: Logging, Lookups and Rollbacks.
Does WorldGuard work on Fabric, Forge or Sponge?
No. It needs the Bukkit API — Paper, Spigot or Purpur. Forge and Sponge are explicitly unsupported, and Fabric is not a Bukkit implementation either. WorldEdit does run on all of them, so a modded server can have the editing without the protection.
How do I protect the whole map, not just spawn?
/rg flag __global__ passthrough deny, run once per world. Then define regions where people are allowed to build.
Can I stop a specific command inside a region?
Yes: /rg flag spawn blocked-cmds /tp,/teleport. allowed-cmds does the inverse and blocks everything else. Note that WorldGuard only sees commands handled on its own server — a proxy that intercepts commands is outside its reach.
How do I make a mining world where players may dig but not build?
/rg flag mining_area block-break allow on a region that otherwise protects the area.
Can I limit a flag to certain block types?
Not per region. Whole-world control over which blocks may be broken is a job for WorldGuard's blacklist, which is a separate feature from regions.
What to Read Next
- Minecraft Grief Protection and Rollback for how protection, logging and backups fit together
- Minecraft WorldEdit: Selections, Brushes and Schematics for the selections every region is built from
- CoreProtect: Logging, Lookups and Rollbacks for finding out who did it and undoing it
- How to Set Up LuckPerms Permissions for Minecraft for the
g:groups used in/rg addmember - How to install plugins for Minecraft Java Edition for installing WorldGuard and WorldEdit together
- Minecraft Whitelist and Ban Management for keeping the griefer off the server in the first place
- Multiverse: Running Several Worlds on One Minecraft Server — remember that regions and
__global__are per-world
Primary sources used for this guide (all checked 19 August 2026): the official WorldGuard documentation — installation, regions quick start, region flags, priority and inheritance, the global region, region commands, claiming, storage drivers, what's protected, common scenarios, the command reference and the chest protection notice; and the WorldGuard project on Modrinth for the current version and supported Minecraft versions.
Made with 💜 by GameServerKings

Need a Minecraft server?
Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.80 /month