The self-service anti-griefing plugin for Minecraft servers — now with full 3D subdivisions
Stop responding to grief and prevent it instead. GriefPrevention stops grief before it starts automatically without any effort from administrators, and with very little (self service) effort from players.
GriefPrevention3D is a fork of the popular GriefPrevention plugin that adds full 3D subdivision support to land claims. Players can now create subdivisions with precise height boundaries for more complex builds.
Watch this video to learn more how GriefPrevention works in-game.
Key Features
- 3D Subdivisions
Create subdivisions with exact Y-level boundaries.
/3dsubdivideclaimsUse this command to switch to 3D subdivision mode.
- 3D Admin Claims
Create free, height-bounded administrative claims with exact Y coordinates.
/3dadminclaimsUse this command or
/aclaim mode admin3dto switch to 3D admin claim mode. Requires thegriefprevention.adminclaimspermission. - Shaped Claims / SubClaims
AllowShapedClaims: false AllowShapedSubClaims: falseSet to true to enable non-rectangular claims & subdivisions.
/shapedclaims/shapedsubdivideclaimsUse this command to switch to the shaped claims mode. - Merge Claims
Merge two of your claims into a single larger claim.
/mergeclaimsStand in the first claim and run
/mergeclaims, then go to the second claim and run/mergeclaimsagain or right-click with your golden shovel. Both claims and the area between them become one claim. Can also be done with/shapedclaims— shape a path that overlaps another claim you own and they merge automatically. - Nested Subclaims
AllowNestedSubClaims: falseSet to true to allow subdivisions inside other subdivisions.
- Visualization Glow
VisualizationGlow: falseSet to true to enable glowing claim boundary visualization. (Requires 1.19.4+)
- Unified Command Handler
In GriefPreventionData/alias.yml:
enabled: trueProvides unified commands like:
/claim create/claim trust/claim abandonView Docs - Neighbor Trust & Minimum Distance
GriefPrevention: Claims: MinimumDistance: 0Enforce a minimum distance between top-level claims to prevent claim spam and overcrowding. When set, players cannot create claims within the configured distance of another player's claim.
/claim trust <player> neighbor— Grant a player neighbor trust so they can bypass minimum distance checks for your claims./neighbortrust <player>(alias:/distancetrust <player>) — Standalone command for the same purpose./claim distance check— Show the configured minimum distance and list nearby claims./claim distance toggle— While standing in your own claim, toggle whether ALL players can bypass minimum distance for that claim.- Existing nearby claims auto-grant neighbor trust to each other, cleaned up automatically when claims are abandoned.
- Scroll Resize
/scrollresizeResize a claim or subdivision with your mouse wheel while holding the claim tool, with a live preview of the new boundary. Scrolling up pushes the side you are facing away from you, scrolling down pulls it toward you. Right-click applies the resize; left-click, drop, or swapping hands cancels it. Works on 3D subdivisions and shaped claims, down to a single block. - Wither Explosion Toggle
/witherexplosionsUse this command to toggle wither explosions inside your claim. - Fabric Support
18.2.16+ GriefPrevention3D builds now are a universal jar for fabric and paper/spigot servers. View the progress here
Subtle Changes
- Per-Player Locale: Enabled by default. Players receive messages in their client language when a translation is available, falling back to English. See Supported Languages for the full list. Disable with
PerPlayerLocale: falsein config.yml. - Action Bar Messages: You can now define a list of message keys that should be chosen to be shown in the action bar instead of chat.
- Rate Limited Messages: Denials that repeat on their own — an arrow bouncing off a claimed decorated pot, a swing at a claimed animal, a piston placed outside a claim — are sent at most once per 10 seconds, counted separately for each message so one denial never hides another.
- Resizing a claim now selects it and is accessible using common commands like
/claim abandonor/claim trustduring that resize session /restrictsubclaimwhile standing in main claims now instantly restricts all subdivisions inside/trustlistnow shows inherited permissions- Manage trust uses
/managetrustandgriefprevention.managetrust. Permission-node trust uses/permissiontrust <permission> <access|container|build|manage>or/aclaim trust permission <permission> <type>. It requiresgriefprevention.permissiontrust, inherited bygriefprevention.adminclaims; bare dotted nodes and bracketed[permission.node]targets are accepted. - Split the
griefprevention.eavesdroppermission togriefprevention.eavesdrop.pm&griefprevention.eavesdrop.softmutefor more granular permission control - Various bug fixes and quality-of-life improvements
- Full compatibility with original GriefPrevention features
- Works with Fabric, Spigot, Paper, Purpur, and Folia
- Maintains all anti-grief protections
- Per-Player Locale: Enabled by default. Players receive messages in their client language when a translation is available, falling back to English. See Supported Languages for the full list. Disable with
Supported Languages
GriefPrevention3D ships with translations for every language below. Set one for the whole server with
Locale: in config.yml, or leave PerPlayerLocale: true and each player is served their own client language,
falling back to English.
| Code | Language |
|---|---|
en |
English |
cs_CZ |
Czech |
de_DE |
German |
es |
Spanish |
fr_FR |
French |
ja_JP |
Japanese |
ms_MY |
Malay |
pl_PL |
Polish |
pt_BR |
Portuguese (Brazil) |
ru_RU |
Russian |
tr_TR |
Turkish |
uk_UA |
Ukrainian |
zh_CN |
Chinese (Simplified) |
en_PT |
Pirate Speak |
See the Locale guide for how to customise messages or add a language of your own.
Supported Platforms: Fabric, Spigot, Paper, Purpur, and Folia.
GriefPrevention3D targets and supports 1.8 - latest available version for non-fabric servers.
Fabric support currently only covers 1.21.2 - latest.
Download
⬇ Download the GriefPrevention3D.jar plugin here.
Documentation
For usage instructions, see the official GriefPrevention3D Documentation.
Addons
Addons provide additional features to GriefPrevention. Some of these addons are listed in GitHub Discussions
Support
- 📖 Documentation - Learn how GriefPrevention3D works. Contains answers to most questions.
- Issue Tracker - Report problems or bugs on the issue tracker. Check if someone else reported your issue before posting.
- GitHub Discussions - New ideas, feature requests, or other general discussions.
- Discord Community
Original Plugin
This is a fork of GriefPrevention by RoboMWM.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 |
- Roadmap:** [platforms/fabric-common/ROADMAP.md](https://github.com/castledking/GriefPrevention3D/blob/master/platforms/fabric-common/ROADMAP.md)
> **Still a beta, dedicated-server-only build.** Back up
GriefPreventionData before updating. Requires Fabric> API; LuckPerms is optional but recommended.
## Overview
Fabric finally has subdivisions.
/subdivideclaims cuts a claim into pieces, /3dsubdivideclaims cuts it into pieceswith exact heights, and both can be resized and trusted like on Paper. Everything a claim touches under water or in
the air also got better: the claim tool now looks for the corner you aim at instead of whatever block the view
happens to reach, so a corner sticking out of the sea is a corner you can click.
The same
GriefPrevention3D.jar still runs on Fabric 1.21.2 through 1.21.11 and 26.1 through 26.3 and as aSpigot/Paper plugin.
## Subdivisions
| Command | What it does |
|---|---|
|
/subdivideclaims (/claim mode 2d) | The shovel draws subdivisions that reach from the claim's floor to the sky, as on Paper ||
/3dsubdivideclaims (/claim mode 3d) | The shovel draws subdivisions whose top and bottom you pick ||
/basicclaims (/claim mode basic) | Back to whole claims ||
/restrictsubclaim | Stops a subdivision inheriting its parent's trust, or lets it again |- Permissions
griefprevention.subdivideclaimsandgriefprevention.3dsubdivideclaimsboth default totrue, as on
- Take the golden shovel into a claim you manage, right-click where the subdivision starts, right-click again where
- Subdivisions may be any size, including one block, and must fit inside their parent without touching each other.
- Subdivisions can be resized by clicking their corner and dragged to the opposite corner, and they carry their own
/trust, /trustlist and the rest work on them as on Paper.- Sneaking with the shovel at a corner in subdivision mode subdivides there; without sneaking it still resizes the
- Nested subdivisions (a subdivision inside a subdivision) are not offered yet, as on Paper without
AllowNestedSubClaims. /restrictsubclaim is in this release, so trust inheritance is on the player to manage.## Corner clicks, under water and everywhere else
Both the stick and the shovel work from up to 100 blocks away. On a faraway click the tool follows the player's view,
and while doing so it now also looks for the corner of a claim they are aiming at:
- A 3D claim's corner is a single block, so the corner is the block the click lands on, whatever it is made of.
- A claim without heights of its own — a parent claim, a 2D subdivision — has a corner that runs its whole height, so
This is what Paper already does, and it fixes the two ways a far corner used to fail:
- Aim at a corner and get nothing: the corner is air, water or a gap, so the click reached nothing at all.
- Aim at a corner and get the seabed: the click landed a block or two away, outside the claim, so a **new** claim
The corner only takes the click when it is what the player is closest to along their view — within two blocks of it,
and within a forgiving 1.2 blocks of the corner itself — so ordinary clicks are untouched. A half-finished claim or
subdivision never snaps, keeping its second corner exactly where it was clicked.
## Visualization
- Fake blocks can be hit: left-clicking one of the blocks a visualization shows sends back the real block and drops
- 3D claims two blocks thick or thinner no longer draw the extra vertical corner markers.
## Config
New
config.yml key, added to existing files on startup and reread by /gpreload, matching the Paper plugin:``
yaml
GriefPrevention:
Claims:
Allow3DSubdivisions: true
`
Turn it off and /3dsubdivideclaims answers that 3D subdivisions are disabled here, while /subdivideclaims keeps
working.
## Upgrade notes
- Claims and player data keep the same
GriefPreventionData format as Paper; nothing to migrate. Subdivisions made on Paper in a claim you copy over are resized, trusted and abandoned as usual here.
Allow3DSubdivisions defaults to true, so 3D subdivision mode is open from this release on.Clicks near a corner now pick that corner, at any range, instead of the block behind it. That is what Paper has always done within reach; it is only new because the range is no longer limited to what the player touches.
## Not on Fabric yet
Shaped claims and shaped subdivisions (/shapedclaims, /shapedsubdivideclaims), merging claims, /trapped,
/siege, /extendclaim, restore nature, buying or selling claim blocks, /claim alerts` and charging fees. Theroadmap lists the protections still to come.
Nothing changes for Spigot and Paper servers in this release. It behaves exactly like v18.4.11, so updating is
optional.
This update is for the experimental Fabric version in the same jar. Fabric finally has subdivisions, including 3D
ones, and its claim tool finds the corner you aim at from any distance, so a corner under water is clickable. The
Fabric changes are in the Fabric version's changelog on Modrinth.
Both versions still ship in one
GriefPrevention3D.jar: 1.8 through the latest release on Spigot, Paper, Purpur andFolia, and 1.21.2 through 1.21.11 and 26.1 through 26.3 on Fabric.
## New options
AutoIgnoreClaims(default false).** Staff who hold the newgriefprevention.autoignoreclaims
need to without touching every claim first. The grant covers every protection: building, containers,
entity damage, PvE and knockback, pets, and the rest. Running
/ignoreclaims turns protections backon for the rest of that session. It is not saved to disk, so it never outlives the session.
The new permission defaults to
op and is deliberately **not** a child ofgriefprevention.adminclaims, so granting that one does not hand it out. Grant it on its own:``
griefprevention.autoignoreclaims:
default: op
`
RequireIgnoreClaimsInAdminClaims (default false).** Staff normally walk into administrative claims and build freely. With this on, building and using containers inside an administrative claim
additionally requires that the staff member be ignoring claims. Walking through, resizing and
managing administrative claims still work as before, so /adminclaim and friends do not suddenly
start refusing.
The refusal reads the same way every other protection refuses: each one gives its own reason for
that action, followed by the usual "To override, use /ignoreclaims." pointer. No new messages were
needed for it.
The two options pair up: turn RequireIgnoreClaimsInAdminClaims on and give your builders
griefprevention.autoignoreclaims alongside AutoIgnoreClaims, and staff keep building in admin
land while every other claim stays protected.
Both options appear in your generated config.yml between AdminsGetSignNotifications and
VisualizationAntiCheatCompatMode, in this order:
`yaml
GriefPrevention:
AdminsGetSignNotifications: true
AutoIgnoreClaims: false
RequireIgnoreClaimsInAdminClaims: false
VisualizationAntiCheatCompatMode: false
`
## Upgrade notes
Nothing to migrate. Both options are off by default, so nothing changes until you turn one on. Staff
without griefprevention.autoignoreclaims are unaffected by AutoIgnoreClaims even when it is on.
## Under the hood
- The session grant is a separate field on a player's data from the
/ignoreclaims toggle, and like that toggle it is never written to storage. Protection checks ask whether a player is ignoring
claims rather than reading the toggle directly, so every existing protection honours the session
grant without each one needing to know about it.
- The two
/ignoreclaims code paths, the unified command handler and the legacy one, now share a single toggle so they cannot drift apart.
- New tests cover the session grant, the permission gate,
/ignoreclaims` turning protections back on, and the administrative claim requirement for building and containers.## New options
AutoIgnoreClaims(default false).** Staff who hold the newgriefprevention.autoignoreclaims
need to without touching every claim first. The grant covers every protection: building, containers,
entity damage, PvE and knockback, pets, and the rest. Running
/ignoreclaims turns protections backon for the rest of that session. It is not saved to disk, so it never outlives the session.
The new permission defaults to
op and is deliberately **not** a child ofgriefprevention.adminclaims, so granting that one does not hand it out. Grant it on its own:``
griefprevention.autoignoreclaims:
default: op
`
RequireIgnoreClaimsInAdminClaims (default false).** Staff normally walk into administrative claims and build freely. With this on, building and using containers inside an administrative claim
additionally requires that the staff member be ignoring claims. Walking through, resizing and
managing administrative claims still work as before, so /adminclaim and friends do not suddenly
start refusing.
The refusal reads the same way every other protection refuses: each one gives its own reason for
that action, followed by the usual "To override, use /ignoreclaims." pointer. No new messages were
needed for it.
The two options pair up: turn RequireIgnoreClaimsInAdminClaims on and give your builders
griefprevention.autoignoreclaims alongside AutoIgnoreClaims, and staff keep building in admin
land while every other claim stays protected.
Both options appear in your generated config.yml between AdminsGetSignNotifications and
VisualizationAntiCheatCompatMode, in this order:
`yaml
GriefPrevention:
AdminsGetSignNotifications: true
AutoIgnoreClaims: false
RequireIgnoreClaimsInAdminClaims: false
VisualizationAntiCheatCompatMode: false
`
## Upgrade notes
Nothing to migrate. Both options are off by default, so nothing changes until you turn one on. Staff
without griefprevention.autoignoreclaims are unaffected by AutoIgnoreClaims even when it is on.
## Under the hood
- The session grant is a separate field on a player's data from the
/ignoreclaims toggle, and like that toggle it is never written to storage. Protection checks ask whether a player is ignoring
claims rather than reading the toggle directly, so every existing protection honours the session
grant without each one needing to know about it.
- The two
/ignoreclaims code paths, the unified command handler and the legacy one, now share a single toggle so they cannot drift apart.
- New tests cover the session grant, the permission gate,
/ignoreclaims` turning protections back on, and the administrative claim requirement for building and containers.- Roadmap:** [platforms/fabric-common/ROADMAP.md](https://github.com/castledking/GriefPrevention3D/blob/master/platforms/fabric-common/ROADMAP.md)
> **Now a beta, dedicated-server-only build.** Back up
GriefPreventionData before updating. Requires Fabric> API; LuckPerms is optional but recommended.
## Overview
The same
GriefPrevention3D.jar now runs on every Fabric release from 1.21.2 to 1.21.11 and on 26.1 through26.3, fifteen Minecraft versions in all, and still works as a Spigot/Paper plugin. Everything from v18.4.9
works the same on the newly supported versions: claims, the claim tools, trust, the staff commands,
/transferclaim and the protections.## Minecraft 1.21.2 to 1.21.10
- 1.21.2 to 1.21.10 use the same Fabric build as 1.21.11, so the jar only grew by about 18 KB and is
- Every build boots the jar on all fifteen versions with Fabric Loader and checks it against each version's
- These versions need Java 21, as Minecraft does, and the Fabric API build for your Minecraft version.
- On 1.21.2 to 1.21.10, claims follow the server's
pvpsetting inserver.properties. From 1.21.11 on,
pvp game rule decides.- Copper golem statues need build trust on the versions that have them (1.21.9 and later).
## Not on Fabric yet
Fabric 1.21.1 and older; subdivisions, 3D and shaped claims;
/restrictsubclaim, /claim alerts,/trapped and /siege; restore nature; and buying or selling claim blocks. The roadmap lists theprotections still to come.
## Upgrade notes
- Claims and player data use the same
GriefPreventionDataformat as Paper on every supported version;
## Fixes
- A claim transfer an addon cancels now does nothing, and says nothing.** When an addon cancels the
/transferclaim, /makeadmin and /makebasic leave the claim with its owner and stopquietly. Before, they could still say the claim was transferred or converted and write an admin log
entry, though the owner had not changed.
- A transfer an addon redirects is no longer mistaken for a cancelled one.** If an addon hands a claim
cancelled and the fee refunded, though the claim had changed hands.
- Servers running eco and Iris start again.** GriefPrevention3D no longer lists Iris as a soft
starting. Nothing in GriefPrevention3D uses Iris.
## Under the hood
- New tests cover cancelled and redirected transfers.
- A new test makes sure a copied claim keeps both of its corners and its area. The copy once took its
fixed during the 3D work, and the test now keeps it fixed. Nothing changes in game.
## Fabric
The experimental Fabric version in the same jar now also runs on Minecraft 1.21.2 through 1.21.10. The
details are in the Fabric version's changelog on Modrinth.
## Upgrade notes
Nothing to migrate.
- Roadmap:** [platforms/fabric-common/ROADMAP.md](https://github.com/castledking/GriefPrevention3D/blob/master/platforms/fabric-common/ROADMAP.md)
> **Still an alpha, dedicated-server-only build.** Back up
GriefPreventionData before updating. Requires Fabric> API; LuckPerms is optional but recommended.
## Overview
The same
GriefPrevention3D.jar still runs on Fabric 1.21.11 and 26.1 through 26.3, and as a Spigot/Paper plugin.Right-clicking blocks in a claim now follows the Paper plugin's rules and config keys, lecterns included. Staff
get Paper's claim management commands, and players can give their claims away with
/transferclaim.## Lecterns and other blocks
Until now, Fabric asked for container trust for every block with a block entity and access trust for every other
block. Fabric now uses the Paper plugin's rules instead:
| Blocks | Trust needed |
|---|---|
| Chests, barrels, furnaces, hoppers, shulker boxes and other inventories, plus cake, cauldrons, anvils, beacons, bells, beehives, jukeboxes, respawn anchors, pumpkins and berries | Container, while
Claims.PreventTheft is on || Reading a lectern | Access with
Claims.LecternReadingRequiresAccessTrust: true (the default); anyone may read when it is false || Taking a lectern's book, or putting one on | Container, always |
| Wooden doors / trapdoors | Access only with
Claims.LockWoodenDoors / Claims.LockTrapDoors (both off by default) || Fence gates | Access with
Claims.LockFenceGates (on by default) || Buttons, levers and beds | Access with
Claims.PreventButtonsSwitches (on by default) || Note blocks, repeaters, comparators, daylight detectors, redstone wire, flower pots, candles, dragon eggs and copper golem statues | Build |
| Crafting tables, enchanting tables, ender chests, campfires and other workstations | None |
Visitors with access trust can read a lectern but can no longer take its book; taking it needs container trust.
Hitting a dragon egg to make it teleport needs build trust, too.
## Staff commands
| Command | What it does |
|---|---|
|
/ignoreclaims (/ic, /aclaim ignore) | Toggles ignoring claims until you log out (griefprevention.ignoreclaims) ||
/deleteclaim | Deletes the claim you stand in, warning first if it has subdivisions. Admin claims also need griefprevention.adminclaims. ||
/aclaim delete <claim\|player <name>\|world <world>\|userworld <world>\|alladmin> | Deletes one claim, a player's claims, every claim or every player claim in a world, or every admin claim ||
/deleteallclaims <player> | Deletes all of a player's claims ||
/deletealladminclaims | Deletes every administrative claim ||
/adminclaimslist (/aclaim adminlist) | Lists where the administrative claims are ||
/makeadmin, /makebasic | Turns the claim you stand in into an admin claim, or an admin claim into a claim you own (griefprevention.adminclaims.convert) |As on Paper, staff with
griefprevention.deleteclaims can resize and abandon other players' claims. In/ignoreclaims mode, staff can do whatever their ignoreclaims or deleteclaims permission covers. Deletingsomeone else's claim gives all of its claim blocks back to its owner; only abandoning your own claim costs blocks.
## Giving claims away
/transferclaim <player> [confirm] (also /giveclaim, /claim transfer and /aclaim transfer) works as on Paper:- Staff with
griefprevention.transferclaim.othersgive the claim they stand in to any player straight away, or
- Players can give away a claim they own once
Claims.TransferClaim.Enabledis true (off by default). The
confirm. The recipient istold if they're online.
- Fabric has no economy plugin to charge with. If
Claims.TransferClaim.Priceis above 0, a player's transfer is
griefprevention.transferclaim.free.## Explosions
/claimexplosions [on|off] and /witherexplosions [on|off] let anyone with build trust in a claim decide whetherexplosions or wither explosions may damage it. Both were already saved with the claim and honored on Fabric; now
the commands to change them are there too.
## Config
New
config.yml keys, added to existing files on startup and reread by /gpreload. Each matches the Paperplugin's key and default:
``
yaml
GriefPrevention:
Claims:
PreventTheft: true
LockWoodenDoors: false
LockTrapDoors: false
LockFenceGates: true
PreventButtonsSwitches: true
LecternReadingRequiresAccessTrust: true
TransferClaim:
Enabled: false
Price: 0.0
`
## Permissions
The Fabric permission defaults now match the Paper plugin's for these commands, with or without LuckPerms:
griefprevention.transferclaim, griefprevention.claimexplosions and griefprevention.witherexplosions are open to
everyone. griefprevention.transferclaim.others, ignoreclaims, deleteclaims and adminclaims.convert need an
operator or griefprevention.admin.*. griefprevention.transferclaim.free is off for everyone. A build-time check
now compares every Fabric default with the Paper plugin's plugin.yml.
## Upgrade notes
- Doors and trapdoors open for everyone by default now**, as on Paper. To keep visitors out, set
LockWoodenDoors and LockTrapDoors to true.
- Crafting tables, enchanting tables, ender chests and campfires no longer need any trust. Note blocks, repeaters,
comparators, daylight detectors, flower pots and candles now need build trust instead of access or container trust.
- Claims and player data keep the same
GriefPreventionData format as Paper; nothing to migrate.
## Not on Fabric yet
Subdivisions, 3D and shaped claims, /restrictsubclaim, /claim alerts, /trapped, /siege`, restore nature,buying or selling claim blocks, and charging fees. The roadmap lists the protections still to come.
Nothing changes for Spigot and Paper servers in this release. It behaves exactly like v18.4.8, so updating is
optional.
This update is for the experimental Fabric version in the same jar. The Fabric changes are in the Fabric version's
changelog on Modrinth.
Nothing changes on Fabric in this release; it behaves exactly like v18.4.7 on Fabric 1.21.11 and 26.1 through 26.3.
This update is for Spigot and Paper servers: players giving claims away with
/transferclaim, pets respecting claims,and polar bears no longer attacking claim visitors. On Fabric,
/claim transfer answers that it isn't available onFabric yet.
## Giving claims to other players
/transferclaim <player>, or /claim transfer <player>, now lets players give away a top-level claim they own, oncea server turns it on. They confirm by adding
confirm and can be charged through Vault, like /claimpvp:``
yaml
GriefPrevention:
Claims:
TransferClaim:
Enabled: false # let players give away their own claims
Price: 0.0 # what giving a claim away costs
`
The recipient needs enough claim blocks and a free claim slot, and is told if they are online. Staff keep the
old behavior with griefprevention.transferclaim.others (previously griefprevention.transferclaim): any claim, at
once, for free. New permissions griefprevention.transferclaim.free and griefprevention.claimpvp.free skip the
transfer and PvP toggle prices. The new messages are translated in every bundled language.
## Protection
- Tamed pets can no longer attack animals in a claim where their owner couldn't
([GriefPrevention#2642](https://github.com/GriefPrevention/GriefPrevention/issues/2642)).
- A polar bear guarding cubs in a claim no longer attacks players who aren't allowed to hit it back.
- Leashing boats in claims follows
Claims.PreventTheft, like leashing animals.
## Fabric
Nothing changes for the experimental Fabric version in the same jar; these features are for Spigot and Paper.
## Upgrade notes
Drop-in replacement for v18.4.7. Staff who had griefprevention.transferclaim set explicitly should be given
griefprevention.transferclaim.others` to keep transferring other players' claims.- Roadmap:** [platforms/fabric-common/ROADMAP.md](https://github.com/castledking/GriefPrevention3D/blob/master/platforms/fabric-common/ROADMAP.md)
> **Still an alpha, dedicated-server-only build.** Back up
GriefPreventionData before updating. Requires Fabric> API; LuckPerms is optional but recommended.
## Overview
The same
GriefPrevention3D.jar now runs on Fabric 1.21.11 and on 26.1, 26.1.1, 26.1.2, 26.2 and 26.3, and it stillworks as a Spigot/Paper plugin. The commands are now Paper's, including
/acb and /scb. Staff can create adminclaims, and protection covers much more of what the Paper plugin protects.
## Minecraft 26.1 to 26.3
- One jar covers every supported Fabric version: it picks the build for the running Minecraft version at startup
- Every build boots the jar on all six versions with Fabric Loader and checks it against each version's game
- 26.x needs Java 25, as Minecraft itself does. Fabric API is still required.
## Commands
The commands now match the Paper plugin's.
alias.yml renames, aliases and usage text work as on Paper, and/gpreload rereads alias.yml. [permission] trust targets and negative amounts need no quoting.| Command | What it does |
|---|---|
|
/trust <player> [access\|container\|build\|manage], /accesstrust, /containertrust, /managetrust | Trusts a player, public, or a [permission] in the claim you stand in, or in all your claims when you stand outside them ||
/permissiontrust <permission> <type> | Trusts everyone with a permission node ||
/untrust <player\|all\|public>, /trustlist | Revokes and lists trust ||
/claim, /claim create [radius] | Claims the land around you ||
/claimslist [player] | Shows claim-block math and claims ||
/abandonclaim, /abandontoplevelclaim, /abandonallclaims confirm | Abandons claims you own ||
/claimpvp, /claimpvpconfirm | Toggles PvP in a claim, where Claims.PvPToggle allows it ||
/adminclaims, /basicclaims | Switches between admin and basic claims ||
/acb <player\|[permission]> <amount>, /acball <amount> | Adds bonus claim blocks to a player, everyone with a permission, or everyone online ||
/scb <player> <amount>, /scball <amount> | Sets accrued claim blocks ||
/aclaim blocks <bonus\|accrued> <player\|all> <amount> | Adds to either balance |- Permissions and their defaults match the Paper plugin, with or without LuckPerms. Player commands are open to
griefprevention.admin.*. Setting griefprevention.claims to falsestill takes the claim commands away.
/trustno longer fails with "An unexpected error occurred". If a command does fail, the error is now logged in
- Player names are matched against online players and players who have joined the server, never looked up with
/createclaim,/claimblocksand/claimhereare gone. Use/claim create,/claimslistand the stick
### Security fixes
Update if other players are on your server:
- Anyone standing in someone else's claim could delete it with
/abandonclaim, or trust themselves there with
/trust. Both now need ownership or manage trust, as on Paper./claimslistshowed every claim on the server to anyone. It now shows your own; seeing another player's needs
griefprevention.claimslistother.## Admin claims
/adminclaims makes the golden shovel and /claim create create administrative claims. They are free, counttoward nobody's claim limit, and show in Paper's admin colors. Staff with
griefprevention.adminclaims can build,resize, trust and abandon inside them.
/basicclaims switches back, and the mode resets when you log out.## Claim tools
- The stick inspects claims up to 100 blocks away. Sneak while using it to see every claim within 150 blocks.
VisualizationGlow: trueadds glowing claim-border outlines that only you can see.- Borders redraw when a claim they show is resized or abandoned, or when a new claim appears nearby.
- Taking out the shovel shows your remaining claim blocks and the claim you stand in. Putting it away cancels a
- Staff with
griefprevention.seeinactivitysee how long ago a claim's owner was last online. Fabric records this
LastSeen.yml from this version on, so owners who haven't joined since the update show no time yet.- The tool items,
MinimumWidth,MinimumAreaand per-worldClaims.Modeare read fromconfig.yml.
## Protection
Newly protected, following the Paper plugin's rules and config keys:
- Buckets, boats, lily pads and spawn eggs, checked where the item lands.
- Dyes, ink sacs, honeycomb, brushes and end crystals need build trust, and so do axes, hoes and shovels on blocks
- Cake, cauldrons, respawn anchors, berry bushes, pumpkins and anvils need container trust. Editing signs needs
- Item frames and armor stands need build trust to use. Item frames, paintings, armor stands, end crystals and
Claims.ProtectCreatureson. Other animals need container trust. Monsters are never protected.
- Players in claims are safe from PvP according to
PvP.ProtectPlayersInLandClaims, and/claimpvplets a claim
- Explosions no longer hurt protected mobs and entities in claims.
- Water and lava never flow into a claim from outside.
- Pistons follow
PistonMovement. - Fire follows
FireSpreads,FireDestroys,Claims.FireSpreadsInClaimsandClaims.FireDamagesInClaims. - Dispensers and droppers only reach into their own claim.
- Farmland trampling follows build trust and
CreaturesTrampleCrops; endermen followEndermenMoveBlocks.
## Not on Fabric yet
Subdivisions, 3D and shaped claims,
/ignoreclaims, deleting or transferring other players' claims, /trapped,/siege, restore nature and buying or selling claim blocks. Those commands say they aren't available on Fabricyet. The roadmap lists the protections still to come.
## Upgrade notes
- Claims and player data use the same
GriefPreventionDataformat as Paper; nothing to migrate. - Scripts or command blocks that used
/createclaim,/claimblocksor/claimhereneed updating. - Building from source:
build/libs/GriefPrevention3D.jaris now the universal jar, and the Paper-only jar is
GriefPrevention3D-Bukkit.jar.Nothing changes for Spigot and Paper servers in this release. It behaves exactly like v18.4.6, so updating is
optional.
This update is for the experimental Fabric version in the same jar, which now runs on Minecraft 26.1 through 26.3 as
well as 1.21.11. The Fabric changes are in the Fabric version's changelog on Modrinth.
## Overview
%gp3d_trust_level% and %gp3d_is_trusted% now update live in TAB and other plugins that refresh placeholders in thebackground. Before, a scoreboard kept showing the trust level from when the player walked into the claim. Toggling
/ignoreclaims or being trusted and untrusted while standing still changed nothing until they walked out and back in./trustlist on a subdivision also stops hiding players whose inherited trust is only partly blocked by a deny entry.## Trust placeholders
### Why it happened
To work out a player's trust level, the expansion called
Claim.checkPermission, which firesClaimPermissionCheckEvent. Paper only allows that event on the main server thread. TAB and similar plugins refreshplaceholders on their own thread, so every background refresh threw an error and the plugin kept the last value it had
read successfully. That value usually came from when the board was first built.
/papi parse runs on the main thread, so it always showed the right answer, which made the problem look like ascoreboard configuration mistake.
### The fix
Claim gains hasDefaultPermission(Player, ClaimPermission). It runs the same default trust rules ascheckPermission without firing the event:- claim owner
/ignoreclaimswith the bypass permission- admin claims and admin subdivisions
- explicit trust, including permission-node trust
- public trust
- subdivision inheritance and deny entries
The placeholders use it, so they are safe to read from any thread. Real permission checks in the game still fire the
event exactly as before.
Because the event is no longer fired for placeholders, plugins that listen to it (GPFlags, for example) no longer change
what the placeholder displays. They still control the actual permission check.
## /trustlist and partly denied inheritance
A subdivision inherits its parent claim's trust unless a deny entry blocks it. A deny for one level, such as
#build,only blocks that level. A player who is a builder on the parent and denied
#build in the subdivision still hascontainer trust there, and
%gp3d_trust_level% correctly reports Container./trustlist grouped inherited entries by their level on the parent and dropped anyone denied that level. So that playervanished from the list completely, and it looked as though they had no trust in the subdivision at all.
Denied inherited entries now move down to the highest level they still hold:
| Parent trust | Denied in subdivision | Listed as |
|---|---|---|
| Builder |
#build | Container || Builder |
#build and #container | Access || Container |
#container | Access |An entry leaves the list only when every level it could inherit is denied.
## Upgrade notes
No configuration or storage changes. Drop-in replacement for v18.4.5.
## Overview
%gp3d_trust_level% and %gp3d_is_trusted% now update live in TAB and other plugins that refresh placeholders in thebackground. Before, a scoreboard kept showing the trust level from when the player walked into the claim. Toggling
/ignoreclaims or being trusted and untrusted while standing still changed nothing until they walked out and back in./trustlist on a subdivision also stops hiding players whose inherited trust is only partly blocked by a deny entry.## Trust placeholders
### Why it happened
To work out a player's trust level, the expansion called
Claim.checkPermission, which firesClaimPermissionCheckEvent. Paper only allows that event on the main server thread. TAB and similar plugins refreshplaceholders on their own thread, so every background refresh threw an error and the plugin kept the last value it had
read successfully. That value usually came from when the board was first built.
/papi parse runs on the main thread, so it always showed the right answer, which made the problem look like ascoreboard configuration mistake.
### The fix
Claim gains hasDefaultPermission(Player, ClaimPermission). It runs the same default trust rules ascheckPermission without firing the event:- claim owner
/ignoreclaimswith the bypass permission- admin claims and admin subdivisions
- explicit trust, including permission-node trust
- public trust
- subdivision inheritance and deny entries
The placeholders use it, so they are safe to read from any thread. Real permission checks in the game still fire the
event exactly as before.
Because the event is no longer fired for placeholders, plugins that listen to it (GPFlags, for example) no longer change
what the placeholder displays. They still control the actual permission check.
## /trustlist and partly denied inheritance
A subdivision inherits its parent claim's trust unless a deny entry blocks it. A deny for one level, such as
#build,only blocks that level. A player who is a builder on the parent and denied
#build in the subdivision still hascontainer trust there, and
%gp3d_trust_level% correctly reports Container./trustlist grouped inherited entries by their level on the parent and dropped anyone denied that level. So that playervanished from the list completely, and it looked as though they had no trust in the subdivision at all.
Denied inherited entries now move down to the highest level they still hold:
| Parent trust | Denied in subdivision | Listed as |
|---|---|---|
| Builder |
#build | Container || Builder |
#build and #container | Access || Container |
#container | Access |An entry leaves the list only when every level it could inherit is denied.
## Upgrade notes
No configuration or storage changes. Drop-in replacement for v18.4.5.
## Overview
With
VisualizationGlow: true, players on clients older than 1.19.4 saw claim borders as blocks nudged out ofalignment, with an armor stand flickering into view as each one spawned. Those players now get the classic fake block
borders instead, while everyone else keeps the glowing ones.
## Why it happened
Glowing visualization draws each border block as a **block display entity**, added in Minecraft 1.19.4. A server
running ViaVersion accepts clients older than itself, so the server supporting display entities says nothing about what
a given player can render. ViaBackwards translates a display into an armor stand wearing the block, which sits slightly
off-centre — the nudged border, and the armor stand visible for the instant before it is dressed.
The visualization provider only checked the server's own version, so every player got the glowing treatment whether or
not their client could draw it.
## The fix
The provider now considers the viewer as well as the server. A client known to be older than 1.19.4 is shown the fake
block visualization, which every version renders correctly.
Client versions are read from ViaVersion's API by reflection, so GriefPrevention3D gains no dependency and nothing
changes on servers that do not run it:
- No ViaVersion installed:** every client speaks the server's protocol, so nothing is gated. This is what already
- ViaVersion installed:** each viewer is checked as their border is drawn. Modern clients keep glowing borders;
- A player ViaVersion cannot identify:** treated as speaking the server's protocol, the same as above.
Border displays were already spawned per-viewer, so an old client never saw another player's glowing borders either.
## Also fixed
BoundaryVisualization decided whether a failed visualization belonged to GriefPrevention or to another plugin bycomparing providers by identity against its own singleton. Building a provider per viewer would have made every
internal failure report as coming from an "external visualization provider", so the check now tests the provider's
type, and the error fallback path builds a viewer-aware provider as well.
## Upgrade notes
No configuration or storage changes.
VisualizationGlow keeps its meaning: enable it and every client that can renderglowing borders gets them. Drop-in replacement for v18.4.4.
## Overview
With
VisualizationGlow: true, players on clients older than 1.19.4 saw claim borders as blocks nudged out ofalignment, with an armor stand flickering into view as each one spawned. Those players now get the classic fake block
borders instead, while everyone else keeps the glowing ones.
## Why it happened
Glowing visualization draws each border block as a **block display entity**, added in Minecraft 1.19.4. A server
running ViaVersion accepts clients older than itself, so the server supporting display entities says nothing about what
a given player can render. ViaBackwards translates a display into an armor stand wearing the block, which sits slightly
off-centre — the nudged border, and the armor stand visible for the instant before it is dressed.
The visualization provider only checked the server's own version, so every player got the glowing treatment whether or
not their client could draw it.
## The fix
The provider now considers the viewer as well as the server. A client known to be older than 1.19.4 is shown the fake
block visualization, which every version renders correctly.
Client versions are read from ViaVersion's API by reflection, so GriefPrevention3D gains no dependency and nothing
changes on servers that do not run it:
- No ViaVersion installed:** every client speaks the server's protocol, so nothing is gated. This is what already
- ViaVersion installed:** each viewer is checked as their border is drawn. Modern clients keep glowing borders;
- A player ViaVersion cannot identify:** treated as speaking the server's protocol, the same as above.
Border displays were already spawned per-viewer, so an old client never saw another player's glowing borders either.
## Also fixed
BoundaryVisualization decided whether a failed visualization belonged to GriefPrevention or to another plugin bycomparing providers by identity against its own singleton. Building a provider per viewer would have made every
internal failure report as coming from an "external visualization provider", so the check now tests the provider's
type, and the error fallback path builds a viewer-aware provider as well.
## Upgrade notes
No configuration or storage changes.
VisualizationGlow keeps its meaning: enable it and every client that can renderglowing borders gets them. Drop-in replacement for v18.4.4.
## Overview
Message text can now contain [PlaceholderAPI](https://placeholderapi.com) placeholders. Drop
%player_name%,%vault_eco_balance_fixed% or anything else a server-side placeholder provides into messages.yml — or into any ofthe bundled
Lang/messages_*.yml files — and the placeholder is resolved for the player who actually receives themessage, in their own language and with their own values.
## How it works
Previously a placeholder written into a message file appeared literally in chat. Placeholders are now resolved as the
message is handed to a player:
DataStore.getMessage(player, ...)** — the single funnel that resolves a message against a player's locale. With
messages_en.yml is swapped for the client's language, so a Germanplayer gets the German template *with their own placeholder values* in one step.
- The raw message send paths** — denial messages built before a player is known (claim guards hand back a message
localized output that reaches a player is left with literal
%...% brackets.Placeholders are never expanded for the console or for messages built without a player, because there is nobody to
resolve them for — a server-name placeholder in a console log line still makes sense, but nothing player-specific can.
## Soft dependency, no surprises
PlaceholderAPI has always been an optional soft-depend. That stays true:
- PlaceholderAPI absent or disabled → every message is byte-for-byte what it was before; the
%...%text is left
- PlaceholderAPI present → expansion is wrapped so a placeholder that errors never breaks a message send.
- No library is bundled. The plugin still boots fine on a server that has never heard of PlaceholderAPI.
The bundled
%gp3d_* expansion from v18.x (trust level, subdivision status) is untouched and combines naturally withthe new support — e.g. a message can embed
%gp3d_trust_level% next to %player_name%.## Documented in every language
The header comment of every message file now advertises the feature, translated into each of the fifteen locales —
English, Pirate Speak, Czech, German, Spanish, French, Japanese, Malay, Polish, Portuguese (Brazil), Russian, Turkish,
Ukrainian and Chinese (Simplified). Successful examples (
%vault_eco_balance_fixed%, %player_name%) are spelled outso the format is copy-pastable.
## Upgrade notes
No configuration or storage changes. Install [PlaceholderAPI](https://placeholderapi.com) on the server (it already
sits in the plugin's soft-depend list), restart, and refresh any existing
messages.yml / messages_*.yml from thejar — or just put placeholders into the files you already have.
Two things to keep in mind:
- Placeholders resolve when a message reaches a player. Anything rendered without a player — such as the welcome book,
- A placeholder only generates output while the player and its backing plugin (e.g. Vault) are online. Messages sent
Drop-in replacement for v18.4.3.
## Overview
Message text can now contain [PlaceholderAPI](https://placeholderapi.com) placeholders. Drop
%player_name%,%vault_eco_balance_fixed% or anything else a server-side placeholder provides into messages.yml — or into any ofthe bundled
Lang/messages_*.yml files — and the placeholder is resolved for the player who actually receives themessage, in their own language and with their own values.
## How it works
Previously a placeholder written into a message file appeared literally in chat. Placeholders are now resolved as the
message is handed to a player:
DataStore.getMessage(player, ...)** — the single funnel that resolves a message against a player's locale. With
messages_en.yml is swapped for the client's language, so a Germanplayer gets the German template *with their own placeholder values* in one step.
- The raw message send paths** — denial messages built before a player is known (claim guards hand back a message
localized output that reaches a player is left with literal
%...% brackets.Placeholders are never expanded for the console or for messages built without a player, because there is nobody to
resolve them for — a server-name placeholder in a console log line still makes sense, but nothing player-specific can.
## Soft dependency, no surprises
PlaceholderAPI has always been an optional soft-depend. That stays true:
- PlaceholderAPI absent or disabled → every message is byte-for-byte what it was before; the
%...%text is left
- PlaceholderAPI present → expansion is wrapped so a placeholder that errors never breaks a message send.
- No library is bundled. The plugin still boots fine on a server that has never heard of PlaceholderAPI.
The bundled
%gp3d_* expansion from v18.x (trust level, subdivision status) is untouched and combines naturally withthe new support — e.g. a message can embed
%gp3d_trust_level% next to %player_name%.## Documented in every language
The header comment of every message file now advertises the feature, translated into each of the fifteen locales —
English, Pirate Speak, Czech, German, Spanish, French, Japanese, Malay, Polish, Portuguese (Brazil), Russian, Turkish,
Ukrainian and Chinese (Simplified). Successful examples (
%vault_eco_balance_fixed%, %player_name%) are spelled outso the format is copy-pastable.
## Upgrade notes
No configuration or storage changes. Install [PlaceholderAPI](https://placeholderapi.com) on the server (it already
sits in the plugin's soft-depend list), restart, and refresh any existing
messages.yml / messages_*.yml from thejar — or just put placeholders into the files you already have.
Two things to keep in mind:
- Placeholders resolve when a message reaches a player. Anything rendered without a player — such as the welcome book,
- A placeholder only generates output while the player and its backing plugin (e.g. Vault) are online. Messages sent
Drop-in replacement for v18.4.3.
## Overview
- Protection fix:** container trust was enough to break a claim's minecarts and boats. It now takes build trust.
- Locale fix:** the bundled Czech translation was registered nowhere, so
cs_CZcould not be selected at all.
## Breaking a claimed vehicle now needs build trust
Vehicle damage was checked against container trust — the same level that opening a chest minecart takes. Any claim
that grants container trust broadly, such as a public shop or a warp handing out trial loot, therefore let visitors
break its minecarts and boats and walk off with the drops.
Breaking a vehicle destroys it, so it is now checked against **build** trust. Nothing else about vehicles changed:
- Riding a boat still takes **access** trust.
- Opening a chest or hopper minecart still takes **container** trust.
- Non-player damage — creepers, withers, TNT — is still blocked outright inside claims.
The only players who lose anything are those who were never trusted to build in the first place.
This is not a Minecraft 26.2 regression, despite when it started being reported. Minecraft 26.3 still routes vehicle
damage through
VehicleDamageEvent before VehicleDestroyEvent, exactly as earlier versions did, so the eventsGriefPrevention listens for never stopped arriving — the trust level being asked for was simply the wrong one.
## Czech locale was never registered
Czech translations shipped in the jar, but the locale was never registered.
messages_cs_CZ.yml was only known tonothing — neither the list of bundled locale files nor the list of supported locale codes — so it was never extracted
to the
Lang/ folder and could not be selected by anything. Locale: cs_CZ in config.yml fell back to English, anda Czech client was silently ignored on servers running per-player locales.
## Two missing registrations
The locale system keeps two lists, and
cs_CZ was in neither:BUNDLED_LOCALE_FILES** — the files unpacked from the jar intoLang/on first start. An unlisted file stays
SUPPORTED_LOCALE_CODES** — the codes accepted byLocale:inconfig.ymland matched against a client's
messages_cs_CZ.yml is now registered in both. Server admins can set Locale: cs_CZ, and Czech clients get theirlanguage automatically when
PerPlayerLocale is left enabled, falling back to English where a message has no Czechtranslation yet.
## README: the language situation is now documented
The README previously claimed only Spanish and Portuguese clients were served their own language. A new **Supported
Languages** section lists all fourteen bundled locales — English, Czech, German, Spanish, French, Japanese, Malay,
Polish, Portuguese (Brazil), Russian, Turkish, Ukrainian, Chinese (Simplified) and Pirate Speak — and clarifies how the
per-player locale feature actually behaves. The section links to the
[Locale guide](https://github.com/castledking/GriefPrevention3D/wiki/Locale) for customising or adding languages.
The same pass tidied the README's feature lists:
/scrollresize is now covered under Key Features, and the v18.4.2rate limiting under Subtle Changes. Documentation only; no plugin behaviour changed.
## Also merged: the upstream raid-location fix
The raid trigger check upstream shipped this cycle now looks up the claim at the raid's location rather than the
player's. GP3D has done the same since the handler was pulled into its own class — and it additionally falls back to
the player's location when no claim is at the raid site — so the merge kept GP3D's version unchanged.
## Upgrade notes
Players holding only container trust can no longer break vehicles in a claim. If your server relies on visitors
breaking carts — a public minecart station where riders pick their cart back up, for instance — those players need
build trust, or the carts need to sit outside the claim.
No configuration or storage changes. Run the new jar once and the Czech translation is extracted to
Lang/; it isthen selectable as
Locale: cs_CZ or served to Czech clients automatically. Drop-in replacement for v18.4.2.## Overview
- Protection fix:** container trust was enough to break a claim's minecarts and boats. It now takes build trust.
- Locale fix:** the bundled Czech translation was registered nowhere, so
cs_CZcould not be selected at all.
## Breaking a claimed vehicle now needs build trust
Vehicle damage was checked against container trust — the same level that opening a chest minecart takes. Any claim
that grants container trust broadly, such as a public shop or a warp handing out trial loot, therefore let visitors
break its minecarts and boats and walk off with the drops.
Breaking a vehicle destroys it, so it is now checked against **build** trust. Nothing else about vehicles changed:
- Riding a boat still takes **access** trust.
- Opening a chest or hopper minecart still takes **container** trust.
- Non-player damage — creepers, withers, TNT — is still blocked outright inside claims.
The only players who lose anything are those who were never trusted to build in the first place.
This is not a Minecraft 26.2 regression, despite when it started being reported. Minecraft 26.3 still routes vehicle
damage through
VehicleDamageEvent before VehicleDestroyEvent, exactly as earlier versions did, so the eventsGriefPrevention listens for never stopped arriving — the trust level being asked for was simply the wrong one.
## Czech locale was never registered
Czech translations shipped in the jar, but the locale was never registered.
messages_cs_CZ.yml was only known tonothing — neither the list of bundled locale files nor the list of supported locale codes — so it was never extracted
to the
Lang/ folder and could not be selected by anything. Locale: cs_CZ in config.yml fell back to English, anda Czech client was silently ignored on servers running per-player locales.
## Two missing registrations
The locale system keeps two lists, and
cs_CZ was in neither:BUNDLED_LOCALE_FILES** — the files unpacked from the jar intoLang/on first start. An unlisted file stays
SUPPORTED_LOCALE_CODES** — the codes accepted byLocale:inconfig.ymland matched against a client's
messages_cs_CZ.yml is now registered in both. Server admins can set Locale: cs_CZ, and Czech clients get theirlanguage automatically when
PerPlayerLocale is left enabled, falling back to English where a message has no Czechtranslation yet.
## README: the language situation is now documented
The README previously claimed only Spanish and Portuguese clients were served their own language. A new **Supported
Languages** section lists all fourteen bundled locales — English, Czech, German, Spanish, French, Japanese, Malay,
Polish, Portuguese (Brazil), Russian, Turkish, Ukrainian, Chinese (Simplified) and Pirate Speak — and clarifies how the
per-player locale feature actually behaves. The section links to the
[Locale guide](https://github.com/castledking/GriefPrevention3D/wiki/Locale) for customising or adding languages.
The same pass tidied the README's feature lists:
/scrollresize is now covered under Key Features, and the v18.4.2rate limiting under Subtle Changes. Documentation only; no plugin behaviour changed.
## Also merged: the upstream raid-location fix
The raid trigger check upstream shipped this cycle now looks up the claim at the raid's location rather than the
player's. GP3D has done the same since the handler was pulled into its own class — and it additionally falls back to
the player's location when no claim is at the raid site — so the merge kept GP3D's version unchanged.
## Upgrade notes
Players holding only container trust can no longer break vehicles in a claim. If your server relies on visitors
breaking carts — a public minecart station where riders pick their cart back up, for instance — those players need
build trust, or the carts need to sit outside the claim.
No configuration or storage changes. Run the new jar once and the Czech translation is extracted to
Lang/; it isthen selectable as
Locale: cs_CZ or served to Czech clients automatically. Drop-in replacement for v18.4.2.## Overview
Denial messages that arrive once per swing, per arrow or per placed block are now rate limited, and the 10 second
cooldown behind them was fixed so that throttling one message no longer silences the rest.
## One cooldown per message
GriefPrevention keeps a 10 second cooldown on rate limited messages, but it stored a single timestamp per player. Any
throttled denial therefore silenced *every* other error for the remainder of the window — a player stopped at a claim
border would not be told why their next, unrelated action failed.
Cooldowns are now tracked per player per message. Two further fixes came with it:
- Lapsed entries are dropped as they are checked, so denials that carry an owner's name cannot accumulate for the
- A player's cooldowns are forgotten when they disconnect, rather than being held until the next restart.
## Denials that are now rate limited
These all fire from events that repeat without the player doing anything new:
- Projectiles changing blocks** — decorated pots, chorus flowers, TNT and pointed dripstone. A cancelled hit leaves
- Damage to claimed entities** — animals, pets, armor stands, item frames, villagers, end crystals and vehicles, each
- PvP safe zones and spawn immunity** — the knockback handler sent its own copies of these on every hit, duplicating
- Hanging entities, paintings, signs, block and multi-block placement**, the creative active-block limit, and
- Cauldrons, end portal frames, ignition, chorus flower hits and nether portals.**
- Splash potions** thrown at claimed animals.
- PvP and siege restrictions** on drops, containers, the claim tool and pets, wilderness buckets, and ender pearls
## Repeatable warnings move to the action bar
Three warnings fired once per block placed and had no cooldown at all. They are now rate limited in their own colour,
and added to the default
ActionBarMessages list so a row of blocks no longer fills chat:NoPistonsOutsideClaimsTooDeepToClaimNoEnoughBlocksForChestClaim
## What is deliberately unchanged
Golden shovel feedback keeps a specific message for every click, so each denial still explains exactly what was wrong
with that click. Chat and command output are untouched as well — a command that replies with nothing reads as a lagging
server.
## Upgrade notes
ActionBarMessages only takes its defaults when the list is absent or empty. An existing config.yml already liststhe previous five entries, so add the three above to move them out of chat, or remove the list and let it regenerate.
No storage changes. Drop-in replacement for v18.4.1.
## Overview
Denial messages that arrive once per swing, per arrow or per placed block are now rate limited, and the 10 second
cooldown behind them was fixed so that throttling one message no longer silences the rest.
## One cooldown per message
GriefPrevention keeps a 10 second cooldown on rate limited messages, but it stored a single timestamp per player. Any
throttled denial therefore silenced *every* other error for the remainder of the window — a player stopped at a claim
border would not be told why their next, unrelated action failed.
Cooldowns are now tracked per player per message. Two further fixes came with it:
- Lapsed entries are dropped as they are checked, so denials that carry an owner's name cannot accumulate for the
- A player's cooldowns are forgotten when they disconnect, rather than being held until the next restart.
## Denials that are now rate limited
These all fire from events that repeat without the player doing anything new:
- Projectiles changing blocks** — decorated pots, chorus flowers, TNT and pointed dripstone. A cancelled hit leaves
- Damage to claimed entities** — animals, pets, armor stands, item frames, villagers, end crystals and vehicles, each
- PvP safe zones and spawn immunity** — the knockback handler sent its own copies of these on every hit, duplicating
- Hanging entities, paintings, signs, block and multi-block placement**, the creative active-block limit, and
- Cauldrons, end portal frames, ignition, chorus flower hits and nether portals.**
- Splash potions** thrown at claimed animals.
- PvP and siege restrictions** on drops, containers, the claim tool and pets, wilderness buckets, and ender pearls
## Repeatable warnings move to the action bar
Three warnings fired once per block placed and had no cooldown at all. They are now rate limited in their own colour,
and added to the default
ActionBarMessages list so a row of blocks no longer fills chat:NoPistonsOutsideClaimsTooDeepToClaimNoEnoughBlocksForChestClaim
## What is deliberately unchanged
Golden shovel feedback keeps a specific message for every click, so each denial still explains exactly what was wrong
with that click. Chat and command output are untouched as well — a command that replies with nothing reads as a lagging
server.
## Upgrade notes
ActionBarMessages only takes its defaults when the list is absent or empty. An existing config.yml already liststhe previous five entries, so add the three above to move them out of chat, or remove the list and let it regenerate.
No storage changes. Drop-in replacement for v18.4.1.
## Overview
A dispenser inside a claim could not break that claim's own chorus flowers or decorated pots, so chorus flower farms
stopped working once the area was claimed. Armor stands were already exempt; flowers and pots now follow the same rule.
## Chorus flowers and decorated pots
Two handlers guard projectiles that break blocks, and they disagreed:
- The
EntityChangeBlockEventhandler already allowed a projectile fired by a dispenser standing in the same claim. - An earlier
ProjectileHitEventguard cancelled every hit on a chorus flower or decorated pot that a player did not
dispenser never ran.
The hit guard now applies the same rule as the change-block handler: a dispenser in the same claim is allowed, as is a
mob when
MobProjectilesChangeBlocks is enabled. A dispenser outside the claim shooting in is still blocked, andplayers still need trust in the claim. The guard is kept for older servers whose
EntityChangeBlockEvent does notcover these blocks.
This affects every projectile that breaks these blocks in vanilla — arrows, snowballs, eggs, tridents, fireballs and
wind charges.
## Armor stands
The armor stand check that allows a dispenser in the same claim now uses the same shared helper. The previous code
compared claim IDs directly and could fail on a claim whose ID was not yet assigned. Behaviour is otherwise unchanged.
## Upgrade notes
No configuration or storage changes. Drop-in replacement for v18.4.0.
Reported upstream as [GriefPrevention/GriefPrevention#2278](https://github.com/GriefPrevention/GriefPrevention/issues/2278).
## Overview
A dispenser inside a claim could not break that claim's own chorus flowers or decorated pots, so chorus flower farms
stopped working once the area was claimed. Armor stands were already exempt; flowers and pots now follow the same rule.
## Chorus flowers and decorated pots
Two handlers guard projectiles that break blocks, and they disagreed:
- The
EntityChangeBlockEventhandler already allowed a projectile fired by a dispenser standing in the same claim. - An earlier
ProjectileHitEventguard cancelled every hit on a chorus flower or decorated pot that a player did not
dispenser never ran.
The hit guard now applies the same rule as the change-block handler: a dispenser in the same claim is allowed, as is a
mob when
MobProjectilesChangeBlocks is enabled. A dispenser outside the claim shooting in is still blocked, andplayers still need trust in the claim. The guard is kept for older servers whose
EntityChangeBlockEvent does notcover these blocks.
This affects every projectile that breaks these blocks in vanilla — arrows, snowballs, eggs, tridents, fireballs and
wind charges.
## Armor stands
The armor stand check that allows a dispenser in the same claim now uses the same shared helper. The previous code
compared claim IDs directly and could fail on a claim whose ID was not yet assigned. Behaviour is otherwise unchanged.
## Upgrade notes
No configuration or storage changes. Drop-in replacement for v18.4.0.
Reported upstream as [GriefPrevention/GriefPrevention#2278](https://github.com/GriefPrevention/GriefPrevention/issues/2278).
## Overview
Claim protection for the two pieces of furniture added in Minecraft 26.3:
- Cushions** could be placed in anyone's claim by untrusted players. Placing and breaking one now needs build
- Straw beds** are not part of the vanilla
bedstag, so the existing bed rule never covered them. Using one now
Everything else is unchanged; servers on older Minecraft versions are unaffected.
## Cushions
Cushions are entities placed from one of sixteen dyed items, so the usual block protections never applied to them.
- Placing** a cushion in a claim requires **build trust**, like placing an armor stand.
- Breaking** a cushion requires **build trust**, like item frames and armor stands.
- Sitting** on a cushion is allowed by default, so a claim's furniture stays usable by visitors. Servers that want
``
yaml
GriefPrevention:
Claims:
PreventCushionMount: false
`
false (default): anyone may sit on a cushion.true: sitting on a cushion inside a claim requires **access trust**.
In creative worlds, cushions also count toward the per-claim entity limit, like armor stands and item frames.
## Straw beds
Straw beds set a spawn point like a bed, but they break when they are slept in. They are deliberately not in the
vanilla beds tag, so GriefPrevention's bed rule did not apply to them.
`yaml
GriefPrevention:
Claims:
ProtectStrawBeds: true
`
true (default): using a straw bed in a claim requires **access trust**, the same trust level beds use. This keeps a claim's straw beds from being consumed by passers-by while remaining available to anyone the owner trusts.
false: straw beds may be used by anyone, and are destroyed on use as in vanilla.
Placing and breaking a straw bed already requires build trust, because it is an ordinary block.
## Upgrade notes
Both options are added to config.yml` the next time the server starts. No storage changes. Drop-in replacement forv18.3.14.
## Overview
Claim protection for the two pieces of furniture added in Minecraft 26.3:
- Cushions** could be placed in anyone's claim by untrusted players. Placing and breaking one now needs build
- Straw beds** are not part of the vanilla
bedstag, so the existing bed rule never covered them. Using one now
Everything else is unchanged; servers on older Minecraft versions are unaffected.
## Cushions
Cushions are entities placed from one of sixteen dyed items, so the usual block protections never applied to them.
- Placing** a cushion in a claim requires **build trust**, like placing an armor stand.
- Breaking** a cushion requires **build trust**, like item frames and armor stands.
- Sitting** on a cushion is allowed by default, so a claim's furniture stays usable by visitors. Servers that want
``
yaml
GriefPrevention:
Claims:
PreventCushionMount: false
`
false (default): anyone may sit on a cushion.true: sitting on a cushion inside a claim requires **access trust**.
In creative worlds, cushions also count toward the per-claim entity limit, like armor stands and item frames.
## Straw beds
Straw beds set a spawn point like a bed, but they break when they are slept in. They are deliberately not in the
vanilla beds tag, so GriefPrevention's bed rule did not apply to them.
`yaml
GriefPrevention:
Claims:
ProtectStrawBeds: true
`
true (default): using a straw bed in a claim requires **access trust**, the same trust level beds use. This keeps a claim's straw beds from being consumed by passers-by while remaining available to anyone the owner trusts.
false: straw beds may be used by anyone, and are destroyed on use as in vanilla.
Placing and breaking a straw bed already requires build trust, because it is an ordinary block.
## Upgrade notes
Both options are added to config.yml` the next time the server starts. No storage changes. Drop-in replacement forv18.3.14.
## Overview
- New:**
/scrollresize— resize claims and subdivisions with the mouse wheel and a live preview. - Permissions:** every claim and admin command now has its own permission node, so a single command can be negated
griefprevention.claims or griefprevention.adminclaims. Denials send the plugin'sown "no permission" message everywhere.
- Changed:**
/claimpvpnow needs manager trust in the claim instead of edit permission. - Fix:**
Claims.Allow3DSubdivisionsandClaims.Allow3DAdminClaimsare now written toconfig.yml. - Fix:** 3D subdivision outlines that are one block wide or one or two layers tall now draw correctly.
- Fix:** clicking a second spot on a shaped claim's boundary in
/shapedclaimsplaced the segment marker next to
## /scrollresize
Hold your claim tool and run
/scrollresize (or /claim scrollresize, aliases /sr, /src).- Which claim:** the claim or subdivision you're looking at or standing in — including 3D subdivisions too small to
- Which side:** the side your line of sight hits. From outside a claim that's the side facing you (the top when you
sides at that corner (two on a 2D claim, plus the top or bottom on a 3D claim). On shaped claims and shaped
subdivisions the side is the segment you're standing in front of and facing, the same one
/expandclaim moves, or oneof the two edges at a selected corner.
- Scrolling follows your camera:** scrolling up pushes the side away from you and scrolling down pulls it toward you,
single layer.
- Preview:** the new outline is drawn through GriefPrevention's normal visualization event, so fake-block and glowing
subdivisions are shown too. The outline turns red if it would overlap another claim, stick out of its parent, cut into
its own subdivisions, or cost more claim blocks than you have; the action bar shows the size and remaining claim
blocks. (Servers without an action bar API, such as 1.8.8, get conflicts in chat right away and size updates in chat
once you stop scrolling.)
- Applying and cancelling:**
- Right-click** applies the resize, through the same checks as the golden shovel. If the preview shows a conflict,
- Left-click, drop (Q), swap hands (F, 1.9+), a number key, switching off the claim tool, changing worlds, or a
Subdivisions never cost claim blocks. Shaped segments can be pulled inward into a notch, stopping at the last valid
shape. New permission: **
griefprevention.scrollresize** (default true, child of griefprevention.claims).## Per-command permissions
Upstream GriefPrevention gated most claim commands behind
griefprevention.claims, so negating one command meantlosing all of them. GP3D now gives each command its own node under a parent bundle:
- Commands check their own node.**
plugin.ymlcommands,/claimand/aclaimsubcommands, and the standalone
alias.yml all check the command's specific permission. For example: /claim untrust checksgriefprevention.untrust, /claim pvp checks griefprevention.claimpvp, /claim trust <player> access checksgriefprevention.accesstrust, and /claim abandon all checks griefprevention.abandonallclaims.- One denial message.** Every denial sends
NoPermissionForCommandfrommessages.yml— including Bukkit's own
plugin.yml permission check and dynamically registered aliases, which previously sent generic English text.- New nodes under
griefprevention.claims** (defaulttrue):griefprevention.trustlist,
griefprevention.claimalerts (/claim alerts), and griefprevention.toggleclaimalerts (/claimtogglealerts,which previously used an undeclared node and so only worked for operators).
- New nodes under
griefprevention.adminclaims** (defaultop):griefprevention.3dadminclaims,
griefprevention.adminclaimslist, and griefprevention.deletealladminclaims (which also still requiresgriefprevention.deleteclaims). /aclaim transfer checks griefprevention.transferclaim, and /aclaim deletechecks
griefprevention.deleteclaims, griefprevention.deleteclaimsinworld, or griefprevention.deletealladminclaimsdepending on what is being deleted.
- Previously undeclared nodes are now declared** (default
op):griefprevention.deleteclaimsinworld,
griefprevention.deathblow, and griefprevention.eavesdrop.immune.Everyone who has
griefprevention.claims or griefprevention.adminclaims keeps the same access as before; thechange only makes negating individual commands possible.
## /claimpvp needs manager trust
Toggling PvP in a claim now requires manager trust (owners, players given
/managetrust, and staff withgriefprevention.adminclaims on admin claims) instead of edit permission, and the command permission isgriefprevention.claimpvp instead of griefprevention.claims. Players without manager trust see the claim's"you don't have permission to manage permissions here" message.
## 3D config options now generate
Claims.Allow3DSubdivisions and Claims.Allow3DAdminClaims were read but never written back, so they never appearedin
config.yml. They are now added with their current values (default true) the next time the server starts.## 3D subdivision previews
Very small 3D subdivisions put several outline markers on the same block: a one-block-wide ring collapses into a
column, a one-layer subdivision drew the same ring twice, and the white wool markers of a two-layer subdivision landed
on the other ring's corners. Which marker appeared was random, so these subdivisions looked unchanged while resizing.
Each block is now drawn once with corners winning, one-layer subdivisions draw a single ring, and the wool markers only
appear when there's a gap between the top and bottom rings. This applies everywhere 3D subdivisions are shown,
including the golden shovel and investigation tool.
## Shaped claim segment markers
In
/shapedclaims, the first click on a claim boundary places a segment marker and starts a reshape path from it. Asecond click elsewhere on the same boundary was read as the next point of that path and snapped to the block next to
the first marker. A path that hasn't left the boundary yet is now dropped when you click another spot on the same
boundary, so the new marker goes exactly where you clicked. Reshaping outward, cuts, and cross-claim merges work as
before.
## Upgrade notes
- alias.yml:** existing files keep their values. If yours sets
subcommands.claim.pvp.permission:
griefprevention.claimpvp; the command also checksgriefprevention.claimpvp either way.- New messages are translated into every bundled locale.
- No storage changes. Drop-in replacement for v18.3.13.
## Overview
- New:**
/scrollresize— resize claims and subdivisions with the mouse wheel and a live preview. - Permissions:** every claim and admin command now has its own permission node, so a single command can be negated
griefprevention.claims or griefprevention.adminclaims. Denials send the plugin'sown "no permission" message everywhere.
- Changed:**
/claimpvpnow needs manager trust in the claim instead of edit permission. - Fix:**
Claims.Allow3DSubdivisionsandClaims.Allow3DAdminClaimsare now written toconfig.yml. - Fix:** 3D subdivision outlines that are one block wide or one or two layers tall now draw correctly.
- Fix:** clicking a second spot on a shaped claim's boundary in
/shapedclaimsplaced the segment marker next to
## /scrollresize
Hold your claim tool and run
/scrollresize (or /claim scrollresize, aliases /sr, /src).- Which claim:** the claim or subdivision you're looking at or standing in — including 3D subdivisions too small to
- Which side:** the side your line of sight hits. From outside a claim that's the side facing you (the top when you
sides at that corner (two on a 2D claim, plus the top or bottom on a 3D claim). On shaped claims and shaped
subdivisions the side is the segment you're standing in front of and facing, the same one
/expandclaim moves, or oneof the two edges at a selected corner.
- Scrolling follows your camera:** scrolling up pushes the side away from you and scrolling down pulls it toward you,
single layer.
- Preview:** the new outline is drawn through GriefPrevention's normal visualization event, so fake-block and glowing
subdivisions are shown too. The outline turns red if it would overlap another claim, stick out of its parent, cut into
its own subdivisions, or cost more claim blocks than you have; the action bar shows the size and remaining claim
blocks. (Servers without an action bar API, such as 1.8.8, get conflicts in chat right away and size updates in chat
once you stop scrolling.)
- Applying and cancelling:**
- Right-click** applies the resize, through the same checks as the golden shovel. If the preview shows a conflict,
- Left-click, drop (Q), swap hands (F, 1.9+), a number key, switching off the claim tool, changing worlds, or a
Subdivisions never cost claim blocks. Shaped segments can be pulled inward into a notch, stopping at the last valid
shape. New permission: **
griefprevention.scrollresize** (default true, child of griefprevention.claims).## Per-command permissions
Upstream GriefPrevention gated most claim commands behind
griefprevention.claims, so negating one command meantlosing all of them. GP3D now gives each command its own node under a parent bundle:
- Commands check their own node.**
plugin.ymlcommands,/claimand/aclaimsubcommands, and the standalone
alias.yml all check the command's specific permission. For example: /claim untrust checksgriefprevention.untrust, /claim pvp checks griefprevention.claimpvp, /claim trust <player> access checksgriefprevention.accesstrust, and /claim abandon all checks griefprevention.abandonallclaims.- One denial message.** Every denial sends
NoPermissionForCommandfrommessages.yml— including Bukkit's own
plugin.yml permission check and dynamically registered aliases, which previously sent generic English text.- New nodes under
griefprevention.claims** (defaulttrue):griefprevention.trustlist,
griefprevention.claimalerts (/claim alerts), and griefprevention.toggleclaimalerts (/claimtogglealerts,which previously used an undeclared node and so only worked for operators).
- New nodes under
griefprevention.adminclaims** (defaultop):griefprevention.3dadminclaims,
griefprevention.adminclaimslist, and griefprevention.deletealladminclaims (which also still requiresgriefprevention.deleteclaims). /aclaim transfer checks griefprevention.transferclaim, and /aclaim deletechecks
griefprevention.deleteclaims, griefprevention.deleteclaimsinworld, or griefprevention.deletealladminclaimsdepending on what is being deleted.
- Previously undeclared nodes are now declared** (default
op):griefprevention.deleteclaimsinworld,
griefprevention.deathblow, and griefprevention.eavesdrop.immune.Everyone who has
griefprevention.claims or griefprevention.adminclaims keeps the same access as before; thechange only makes negating individual commands possible.
## /claimpvp needs manager trust
Toggling PvP in a claim now requires manager trust (owners, players given
/managetrust, and staff withgriefprevention.adminclaims on admin claims) instead of edit permission, and the command permission isgriefprevention.claimpvp instead of griefprevention.claims. Players without manager trust see the claim's"you don't have permission to manage permissions here" message.
## 3D config options now generate
Claims.Allow3DSubdivisions and Claims.Allow3DAdminClaims were read but never written back, so they never appearedin
config.yml. They are now added with their current values (default true) the next time the server starts.## 3D subdivision previews
Very small 3D subdivisions put several outline markers on the same block: a one-block-wide ring collapses into a
column, a one-layer subdivision drew the same ring twice, and the white wool markers of a two-layer subdivision landed
on the other ring's corners. Which marker appeared was random, so these subdivisions looked unchanged while resizing.
Each block is now drawn once with corners winning, one-layer subdivisions draw a single ring, and the wool markers only
appear when there's a gap between the top and bottom rings. This applies everywhere 3D subdivisions are shown,
including the golden shovel and investigation tool.
## Shaped claim segment markers
In
/shapedclaims, the first click on a claim boundary places a segment marker and starts a reshape path from it. Asecond click elsewhere on the same boundary was read as the next point of that path and snapped to the block next to
the first marker. A path that hasn't left the boundary yet is now dropped when you click another spot on the same
boundary, so the new marker goes exactly where you clicked. Reshaping outward, cuts, and cross-claim merges work as
before.
## Upgrade notes
- alias.yml:** existing files keep their values. If yours sets
subcommands.claim.pvp.permission:
griefprevention.claimpvp; the command also checksgriefprevention.claimpvp either way.- New messages are translated into every bundled locale.
- No storage changes. Drop-in replacement for v18.3.13.
## Overview
/extendclaimon a 3D subdivision inside a shaped claim resized the **shaped claim** instead of
- Security:** players without edit permission could resize someone else's shaped claim with
/extendclaim.- Shaped subdivisions no longer hit the "claim too narrow" / "insufficient area" minimums.
##
/extendclaim extended the wrong claimWhen no claim was selected with the golden shovel,
/extendclaim (and /claim expand) replaced theclaim the player was standing in with its **parent**. Standing inside a 3D subdivision of a shaped
claim therefore targeted the shaped claim, which grows whichever boundary segment the player faces.
That edge could be far away, so the command looked like it just flashed and refreshed the
visualization without extending anything — while quietly growing the parent claim.
Fix:
/extendclaimnow extends the most specific claim you're standing in — including 2D, 3D, and
still takes priority.
- Extending a 3D subdivision vertically checked against the parent's raw stored Y values. Shaped
now uses the parent's real vertical range (the world height limit for 2D parents).
- Shaped subdivisions use the shaped segment expansion (the same as shaped claims) instead of the
Behavior note: standing inside a rectangular subdivision,
/extendclaim now grows that subdivision,not the claim around it. To grow the whole claim, stand outside the subdivision or select the
claim's corner with the golden shovel first.
## Security: shaped claims could be resized without permission
The shaped-claim branch of
/extendclaim ran **before** the edit-permission check, so any playerholding the claim modification tool could expand (or shrink, with a negative amount) another
player's shaped claim just by standing in it. The permission check now runs first for every claim
type.
## Shaped subdivisions can be as small as you like
Shaped subdivisions carve up land the owner already paid for, so they now skip the claim size
minimums (
MinimumWidth / MinimumArea for rectangular outlines, ShapedMinimumArea for otheroutlines) both when created with
/shapedsubdivideclaims and when reshaped or extended. Top-levelclaims are unaffected.
The smallest shaped subdivision is 2×2: a shaped outline can't be one block wide, because that would
need a zero-length edge. Use a regular
/subdivideclaims subdivision for 1×1 spaces.## Upgrade notes
No configuration or storage changes. Drop-in replacement for v18.3.12.
## Overview
/extendclaimon a 3D subdivision inside a shaped claim resized the **shaped claim** instead of
- Security:** players without edit permission could resize someone else's shaped claim with
/extendclaim.- Shaped subdivisions no longer hit the "claim too narrow" / "insufficient area" minimums.
##
/extendclaim extended the wrong claimWhen no claim was selected with the golden shovel,
/extendclaim (and /claim expand) replaced theclaim the player was standing in with its **parent**. Standing inside a 3D subdivision of a shaped
claim therefore targeted the shaped claim, which grows whichever boundary segment the player faces.
That edge could be far away, so the command looked like it just flashed and refreshed the
visualization without extending anything — while quietly growing the parent claim.
Fix:
/extendclaimnow extends the most specific claim you're standing in — including 2D, 3D, and
still takes priority.
- Extending a 3D subdivision vertically checked against the parent's raw stored Y values. Shaped
now uses the parent's real vertical range (the world height limit for 2D parents).
- Shaped subdivisions use the shaped segment expansion (the same as shaped claims) instead of the
Behavior note: standing inside a rectangular subdivision,
/extendclaim now grows that subdivision,not the claim around it. To grow the whole claim, stand outside the subdivision or select the
claim's corner with the golden shovel first.
## Security: shaped claims could be resized without permission
The shaped-claim branch of
/extendclaim ran **before** the edit-permission check, so any playerholding the claim modification tool could expand (or shrink, with a negative amount) another
player's shaped claim just by standing in it. The permission check now runs first for every claim
type.
## Shaped subdivisions can be as small as you like
Shaped subdivisions carve up land the owner already paid for, so they now skip the claim size
minimums (
MinimumWidth / MinimumArea for rectangular outlines, ShapedMinimumArea for otheroutlines) both when created with
/shapedsubdivideclaims and when reshaped or extended. Top-levelclaims are unaffected.
The smallest shaped subdivision is 2×2: a shaped outline can't be one block wide, because that would
need a zero-length edge. Use a regular
/subdivideclaims subdivision for 1×1 spaces.## Upgrade notes
No configuration or storage changes. Drop-in replacement for v18.3.12.
