---
title: "Minecraft WorldGuard: Region Protection Explained"
description: "Protect your Minecraft server with WorldGuard: define regions, add members, set flags and priorities, and lock down the wilderness with __global__ passthrough."
url: "https://www.gameserverkings.com/knowledge-base/minecraft/worldguard-region-protection/"
category: "Minecraft"
category_url: "https://www.gameserverkings.com/knowledge-base/minecraft/"
published: "2026-08-19T10:07:45.328Z"
updated: "2026-08-19T10:20:09.179Z"
source_format: "markdown"
site: "GameServerKings"
---

# Minecraft WorldGuard: Region Protection Explained

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](/knowledge-base/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

> [!IMPORTANT] 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](/knowledge-base/minecraft/java-plugins/), and WorldEdit itself in [Minecraft WorldEdit: Selections, Brushes and Schematics](/knowledge-base/minecraft/worldedit-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:

```text title="Protect spawn and let the build team work there"
/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`.

> [!IMPORTANT] A new region already prevents building
> You do not set a flag to protect it. The moment `/rg define` runs, 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 the `build` flag 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](/knowledge-base/minecraft/luckperms-permissions/). 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.

```text title="No PvP in town, and a greeting on the way in"
/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.

> [!WARNING] `fire-spread`, `water-flow`, `lava-flow` and `lava-fire` need a config option
> These 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`:

```text title="Deny PvP to non-members only"
/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.

> [!CAUTION] Never use the `build` flag to protect or unprotect a region
> This is WorldGuard's own strongest advice. `build` is set implicitly by membership, and setting it by hand overrides other regions in ways that are very hard to reason about. Worse, `build deny` stops *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, use `passthrough`. The same warning applies to the other protection flags: setting `block-break deny` stops 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.

```text title="A pub inside spawn, with its own membership"
/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.

```text title="A mall with plots, all sharing a template"
/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.

> [!NOTE] Overlapping regions and `-g nonmembers` are subtler than they look
> When 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 deny` and 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.

```text title="Nobody may build in unclaimed land"
/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 nonmembers` does 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:

```text title="Let everyone use doors and levers everywhere, and ride vehicles"
/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](/knowledge-base/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.

> [!WARNING] 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 `passthrough` flag is `allow`, or a higher-priority overlapping region is overriding it. `/rg info` and `/rg flags` show 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 `build` has been set to `deny`, which blocks members too.
- **Pistons stopped working.** The `build` or `block-break` flag has been set to `deny` somewhere, most likely on `__global__`. Unset it with `/rg flag __global__ build`.
- **Creepers still blow holes.** `creeper-explosion` covers one region; the vanilla `mob_griefing` game rule covers the whole world. Pick the scope you want — see [Minecraft Grief Protection and Rollback](/knowledge-base/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 nonmembers` does 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](/knowledge-base/minecraft/coreprotect-rollback/).

### 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](/knowledge-base/minecraft/grief-protection-and-rollback/) for how protection, logging and backups fit together
- [Minecraft WorldEdit: Selections, Brushes and Schematics](/knowledge-base/minecraft/worldedit-and-schematics/) for the selections every region is built from
- [CoreProtect: Logging, Lookups and Rollbacks](/knowledge-base/minecraft/coreprotect-rollback/) for finding out who did it and undoing it
- [How to Set Up LuckPerms Permissions for Minecraft](/knowledge-base/minecraft/luckperms-permissions/) for the `g:` groups used in `/rg addmember`
- [How to install plugins for Minecraft Java Edition](/knowledge-base/minecraft/java-plugins/) for installing WorldGuard and WorldEdit together
- [Minecraft Whitelist and Ban Management](/knowledge-base/minecraft/whitelist-and-ban-management/) for keeping the griefer off the server in the first place
- [Multiverse: Running Several Worlds on One Minecraft Server](/knowledge-base/minecraft/multiverse-multiple-worlds/) — remember that regions and `__global__` are per-world

**Primary sources used for this guide** (all checked 19 August 2026): the official [WorldGuard documentation](https://worldguard.enginehub.org/en/latest/) — [installation](https://worldguard.enginehub.org/en/latest/install/), [regions quick start](https://worldguard.enginehub.org/en/latest/regions/quick-start/), [region flags](https://worldguard.enginehub.org/en/latest/regions/flags/), [priority and inheritance](https://worldguard.enginehub.org/en/latest/regions/priorities/), [the global region](https://worldguard.enginehub.org/en/latest/regions/global-region/), [region commands](https://worldguard.enginehub.org/en/latest/regions/commands/), [claiming](https://worldguard.enginehub.org/en/latest/regions/claiming/), [storage drivers](https://worldguard.enginehub.org/en/latest/regions/storage/), [what's protected](https://worldguard.enginehub.org/en/latest/regions/scope/), [common scenarios](https://worldguard.enginehub.org/en/latest/regions/common-scenarios/), [the command reference](https://worldguard.enginehub.org/en/latest/commands/) and the [chest protection notice](https://worldguard.enginehub.org/en/latest/chest-protection/); and the [WorldGuard project on Modrinth](https://modrinth.com/plugin/worldguard) for the current version and supported Minecraft versions.

---

Made with 💜 by GameServerKings
