All Mods Resource Packs Data Packs Shaders Modpacks Plugins
GriefPrevention3D

GriefPrevention3D

by castledking • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

GriefPrevention3D

The self-service anti-griefing plugin for Minecraft servers — now with full 3D subdivisions

GitHub Repository GitHub Issues GitHub Wiki

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.

GriefPrevention Youtube Tutorial


Key Features

  • 3D Subdivisions Create subdivisions with exact Y-level boundaries.
    /3dsubdivideclaims

    Use this command to switch to 3D subdivision mode.

  • 3D Admin Claims Create free, height-bounded administrative claims with exact Y coordinates.
    /3dadminclaims

    Use this command or /aclaim mode admin3d to switch to 3D admin claim mode. Requires the griefprevention.adminclaims permission.

  • Shaped Claims / SubClaims
    AllowShapedClaims: false
    AllowShapedSubClaims: false

    Set to true to enable non-rectangular claims & subdivisions. /shapedclaims /shapedsubdivideclaims Use this command to switch to the shaped claims mode.

  • Merge Claims Merge two of your claims into a single larger claim.
    /mergeclaims

    Stand in the first claim and run /mergeclaims, then go to the second claim and run /mergeclaims again 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: false

    Set to true to allow subdivisions inside other subdivisions.

  • Visualization Glow
    VisualizationGlow: false

    Set to true to enable glowing claim boundary visualization. (Requires 1.19.4+)

  • Unified Command Handler In GriefPreventionData/alias.yml:
    enabled: true

    Provides unified commands like: /claim create /claim trust /claim abandon View Docs

  • Neighbor Trust & Minimum Distance
    GriefPrevention:
      Claims:
        MinimumDistance: 0

    Enforce 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 /scrollresize Resize 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 /witherexplosions Use 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: false in 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 abandon or /claim trust during that resize session
    • /restrictsubclaim while standing in main claims now instantly restricts all subdivisions inside
    • /trustlist now shows inherited permissions
    • Manage trust uses /managetrust and griefprevention.managetrust. Permission-node trust uses /permissiontrust <permission> <access|container|build|manage> or /aclaim trust permission <permission> <type>. It requires griefprevention.permissiontrust, inherited by griefprevention.adminclaims; bare dotted nodes and bracketed [permission.node] targets are accepted.
    • Split the griefprevention.eavesdrop permission to griefprevention.eavesdrop.pm & griefprevention.eavesdrop.softmute for 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

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

Original Plugin

This is a fork of GriefPrevention by RoboMWM.


Weird flex but ok

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3 26.2 26.1.x +1
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.3 26.2 26.1.x +1
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.3 26.2 26.1.x +1
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.3 26.2 26.1.x +1
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.3 26.2 26.1.x +1
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.3 26.2 26.1.x +1
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.3 26.2 26.1.x +14
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.11
Fabric
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.2 26.1.x 1.21.x +13
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x +12
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
26.1.x 1.21.x 1.20.x
Bukkit Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
15h ago 1
# GriefPrevention3D v18.4.12 — Fabric (experimental beta)



> **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 pieces
with 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 a
Spigot/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.subdivideclaims and griefprevention.3dsubdivideclaims both default to true, as on
Paper.
  • Take the golden shovel into a claim you manage, right-click where the subdivision starts, right-click again where
it ends. A 2D subdivision fills the height of its claim; a 3D one uses the heights you clicked, exactly.
  • Subdivisions may be any size, including one block, and must fit inside their parent without touching each other.
Overlaps are refused with Paper's messages and a conflict zone.
  • Subdivisions can be resized by clicking their corner and dragged to the opposite corner, and they carry their own
trust: /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
claim whose corner it is, exactly as on Paper.
  • 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
whichever block of that corner the view passes is the one clicked. The corner under water is as good as any other.

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
started instead of the corner being selected for a resize.

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
it from the display, as breaking it always did.
  • 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. The
roadmap lists the protections still to come.
# GriefPrevention3D v18.4.12


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 and
Folia, and 1.21.2 through 1.21.11 and 26.1 through 26.3 on Fabric.
# GriefPrevention3D v18.4.11


## New options

  • AutoIgnoreClaims (default false).** Staff who hold the new griefprevention.autoignoreclaims
permission start each session with claim protections already off, so they can build wherever they
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 back
on 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 of
griefprevention.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.
# GriefPrevention3D v18.4.11


## New options

  • AutoIgnoreClaims (default false).** Staff who hold the new griefprevention.autoignoreclaims
permission start each session with claim protections already off, so they can build wherever they
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 back
on 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 of
griefprevention.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.
# GriefPrevention3D v18.4.10 — Fabric (experimental beta)



> **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 through
26.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
still around 2 MB.
  • Every build boots the jar on all fifteen versions with Fabric Loader and checks it against each version's
game classes.
  • 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 pvp setting in server.properties. From 1.21.11 on,
the per-world 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 the
protections still to come.

## Upgrade notes

  • Claims and player data use the same GriefPreventionData format as Paper on every supported version;
nothing to migrate.
# GriefPrevention3D v18.4.10


## Fixes

  • A claim transfer an addon cancels now does nothing, and says nothing.** When an addon cancels the
transfer, /transferclaim, /makeadmin and /makebasic leave the claim with its owner and stop
quietly. 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
someone gives away to a different player, the transfer now counts as done. Before, it was treated as
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
dependency. Iris soft-depends on eco and eco on GriefPrevention, so the loop stopped the server from
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
lesser corner from the original's greater corner, which shrank it to a single column of blocks. That was
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.
# GriefPrevention3D v18.4.9 — Fabric (experimental alpha)



> **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. Deleting
someone 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.others give the claim they stand in to any player straight away, or
make it an admin claim when no name is given.
  • Players can give away a claim they own once Claims.TransferClaim.Enabled is true (off by default). The
recipient needs enough claim blocks and a free claim slot, and the giver confirms with confirm. The recipient is
told if they're online.
  • Fabric has no economy plugin to charge with. If Claims.TransferClaim.Price is above 0, a player's transfer is
refused, as Paper refuses one without Vault, unless they have griefprevention.transferclaim.free.

## Explosions

/claimexplosions [on|off] and /witherexplosions [on|off] let anyone with build trust in a claim decide whether
explosions 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 Paper
plugin'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.
# GriefPrevention3D v18.4.9


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.
# GriefPrevention3D v18.4.8 — Fabric (experimental alpha)


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 on
Fabric yet.
# GriefPrevention3D v18.4.8


## Giving claims to other players

/transferclaim <player>, or /claim transfer <player>, now lets players give away a top-level claim they own, once
a 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.
# GriefPrevention3D v18.4.7 — Fabric (experimental alpha)



> **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 still
works as a Spigot/Paper plugin. The commands are now Paper's, including /acb and /scb. Staff can create admin
claims, 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
and stays around 2 MB.
  • Every build boots the jar on all six versions with Fabric Loader and checks it against each version's game
classes.
  • 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
everyone and staff commands to operators or griefprevention.admin.*. Setting griefprevention.claims to false
still takes the claim commands away.
  • /trust no longer fails with "An unexpected error occurred". If a command does fail, the error is now logged in
the server console.
  • Player names are matched against online players and players who have joined the server, never looked up with
Mojang, so offline-mode servers always get the UUID the player actually joins with.
  • /createclaim, /claimblocks and /claimhere are gone. Use /claim create, /claimslist and the stick
instead.

### 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.
  • /claimslist showed 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, count
toward 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: true adds 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
half-finished claim.
  • Staff with griefprevention.seeinactivity see how long ago a claim's owner was last online. Fabric records this
in LastSeen.yml from this version on, so owners who haven't joined since the update show no time yet.
  • The tool items, MinimumWidth, MinimumArea and per-world Claims.Mode are read from config.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
they would change.
  • Cake, cauldrons, respawn anchors, berry bushes, pumpkins and anvils need container trust. Editing signs needs
build trust.
  • Item frames and armor stands need build trust to use. Item frames, paintings, armor stands, end crystals and
vehicles need build trust to damage, by hand or by projectile, and so do villagers with Claims.ProtectCreatures
on. Other animals need container trust. Monsters are never protected.
  • Players in claims are safe from PvP according to PvP.ProtectPlayersInLandClaims, and /claimpvp lets a claim
choose for itself.
  • 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.FireSpreadsInClaims and Claims.FireDamagesInClaims.
  • Dispensers and droppers only reach into their own claim.
  • Farmland trampling follows build trust and CreaturesTrampleCrops; endermen follow EndermenMoveBlocks.

## 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 Fabric
yet. The roadmap lists the protections still to come.

## Upgrade notes

  • Claims and player data use the same GriefPreventionData format as Paper; nothing to migrate.
  • Scripts or command blocks that used /createclaim, /claimblocks or /claimhere need updating.
  • Building from source: build/libs/GriefPrevention3D.jar is now the universal jar, and the Paper-only jar is
GriefPrevention3D-Bukkit.jar.
# GriefPrevention3D v18.4.7


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.
# GriefPrevention3D v18.4.6


## Overview

%gp3d_trust_level% and %gp3d_is_trusted% now update live in TAB and other plugins that refresh placeholders in the
background. 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 fires
ClaimPermissionCheckEvent. Paper only allows that event on the main server thread. TAB and similar plugins refresh
placeholders 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 a
scoreboard configuration mistake.

### The fix

Claim gains hasDefaultPermission(Player, ClaimPermission). It runs the same default trust rules as
checkPermission without firing the event:

  • claim owner
  • /ignoreclaims with 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 has
container 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 player
vanished 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.
# GriefPrevention3D v18.4.6


## Overview

%gp3d_trust_level% and %gp3d_is_trusted% now update live in TAB and other plugins that refresh placeholders in the
background. 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 fires
ClaimPermissionCheckEvent. Paper only allows that event on the main server thread. TAB and similar plugins refresh
placeholders 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 a
scoreboard configuration mistake.

### The fix

Claim gains hasDefaultPermission(Player, ClaimPermission). It runs the same default trust rules as
checkPermission without firing the event:

  • claim owner
  • /ignoreclaims with 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 has
container 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 player
vanished 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.
# GriefPrevention3D v18.4.5


## Overview

With VisualizationGlow: true, players on clients older than 1.19.4 saw claim borders as blocks nudged out of
alignment, 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
happened.
  • ViaVersion installed:** each viewer is checked as their border is drawn. Modern clients keep glowing borders;
older ones get fake blocks.
  • 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 by
comparing 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 render
glowing borders gets them. Drop-in replacement for v18.4.4.
# GriefPrevention3D v18.4.5


## Overview

With VisualizationGlow: true, players on clients older than 1.19.4 saw claim borders as blocks nudged out of
alignment, 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
happened.
  • ViaVersion installed:** each viewer is checked as their border is drawn. Modern clients keep glowing borders;
older ones get fake blocks.
  • 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 by
comparing 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 render
glowing borders gets them. Drop-in replacement for v18.4.4.
# GriefPrevention3D 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 of
the bundled Lang/messages_*.yml files — and the placeholder is resolved for the player who actually receives the
message, 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
per-player locales enabled this is exactly where messages_en.yml is swapped for the client's language, so a German
player 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
supplier that only resolves at send time), scroll resize status, action bar and delayed/respawn messages. No
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
alone.
  • 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 with
the 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 out
so 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 the
jar — 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,
which is built from locale strings at startup — shows the literal placeholder text unless the book is customised.
  • A placeholder only generates output while the player and its backing plugin (e.g. Vault) are online. Messages sent
to a player who just logged out keep the placeholder text rather than crash.

Drop-in replacement for v18.4.3.
# GriefPrevention3D 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 of
the bundled Lang/messages_*.yml files — and the placeholder is resolved for the player who actually receives the
message, 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
per-player locales enabled this is exactly where messages_en.yml is swapped for the client's language, so a German
player 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
supplier that only resolves at send time), scroll resize status, action bar and delayed/respawn messages. No
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
alone.
  • 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 with
the 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 out
so 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 the
jar — 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,
which is built from locale strings at startup — shows the literal placeholder text unless the book is customised.
  • A placeholder only generates output while the player and its backing plugin (e.g. Vault) are online. Messages sent
to a player who just logged out keep the placeholder text rather than crash.

Drop-in replacement for v18.4.3.
# GriefPrevention3D 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_CZ could 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 events
GriefPrevention 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 to
nothing — 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, and
a 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 into Lang/ on first start. An unlisted file stays
bundled, unreachable no matter what the configuration asks for.
  • SUPPORTED_LOCALE_CODES** — the codes accepted by Locale: in config.yml and matched against a client's
language for the per-player locale feature.

messages_cs_CZ.yml is now registered in both. Server admins can set Locale: cs_CZ, and Czech clients get their
language automatically when PerPlayerLocale is left enabled, falling back to English where a message has no Czech
translation 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.2
rate 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 is
then selectable as Locale: cs_CZ or served to Czech clients automatically. Drop-in replacement for v18.4.2.
# GriefPrevention3D 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_CZ could 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 events
GriefPrevention 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 to
nothing — 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, and
a 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 into Lang/ on first start. An unlisted file stays
bundled, unreachable no matter what the configuration asks for.
  • SUPPORTED_LOCALE_CODES** — the codes accepted by Locale: in config.yml and matched against a client's
language for the per-player locale feature.

messages_cs_CZ.yml is now registered in both. Server admins can set Locale: cs_CZ, and Czech clients get their
language automatically when PerPlayerLocale is left enabled, falling back to English where a message has no Czech
translation 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.2
rate 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 is
then selectable as Locale: cs_CZ or served to Czech clients automatically. Drop-in replacement for v18.4.2.
# GriefPrevention3D 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
length of a session.
  • 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
the arrow in flight, so it keeps colliding with the block; this was the worst of the set.
  • Damage to claimed entities** — animals, pets, armor stands, item frames, villagers, end crystals and vehicles, each
of which messaged once per swing or arrow.
  • PvP safe zones and spawn immunity** — the knockback handler sent its own copies of these on every hit, duplicating
denials that were already throttled elsewhere.
  • Hanging entities, paintings, signs, block and multi-block placement**, the creative active-block limit, and
automatic claim creation failing because another claim is too close.
  • 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
denied at a claim border.

## 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:

  • NoPistonsOutsideClaims
  • TooDeepToClaim
  • NoEnoughBlocksForChestClaim

## 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 lists
the 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.
# GriefPrevention3D 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
length of a session.
  • 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
the arrow in flight, so it keeps colliding with the block; this was the worst of the set.
  • Damage to claimed entities** — animals, pets, armor stands, item frames, villagers, end crystals and vehicles, each
of which messaged once per swing or arrow.
  • PvP safe zones and spawn immunity** — the knockback handler sent its own copies of these on every hit, duplicating
denials that were already throttled elsewhere.
  • Hanging entities, paintings, signs, block and multi-block placement**, the creative active-block limit, and
automatic claim creation failing because another claim is too close.
  • 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
denied at a claim border.

## 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:

  • NoPistonsOutsideClaims
  • TooDeepToClaim
  • NoEnoughBlocksForChestClaim

## 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 lists
the 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.
# GriefPrevention3D 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 EntityChangeBlockEvent handler already allowed a projectile fired by a dispenser standing in the same claim.
  • An earlier ProjectileHitEvent guard cancelled every hit on a chorus flower or decorated pot that a player did not
fire. Since Minecraft 1.20.2 a cancelled hit never reaches the block, so the handler that would have allowed the
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, and
players still need trust in the claim. The guard is kept for older servers whose EntityChangeBlockEvent does not
cover 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).
# GriefPrevention3D 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 EntityChangeBlockEvent handler already allowed a projectile fired by a dispenser standing in the same claim.
  • An earlier ProjectileHitEvent guard cancelled every hit on a chorus flower or decorated pot that a player did not
fire. Since Minecraft 1.20.2 a cancelled hit never reaches the block, so the handler that would have allowed the
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, and
players still need trust in the claim. The guard is kept for older servers whose EntityChangeBlockEvent does not
cover 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).
# GriefPrevention3D v18.4.0


## 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
trust, and sitting on one can optionally need access trust.
  • Straw beds** are not part of the vanilla beds tag, so the existing bed rule never covered them. Using one now
needs access trust by default.

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
seats reserved for trusted players can turn on the new option below.

``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 for
v18.3.14.
# GriefPrevention3D v18.4.0


## 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
trust, and sitting on one can optionally need access trust.
  • Straw beds** are not part of the vanilla beds tag, so the existing bed rule never covered them. Using one now
needs access trust by default.

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
seats reserved for trusted players can turn on the new option below.

``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 for
v18.3.14.
# GriefPrevention3D v18.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
without removing the rest of griefprevention.claims or griefprevention.adminclaims. Denials send the plugin's
own "no permission" message everywhere.
  • Changed:** /claimpvp now needs manager trust in the claim instead of edit permission.
  • Fix:** Claims.Allow3DSubdivisions and Claims.Allow3DAdminClaims are now written to config.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 /shapedclaims placed the segment marker next to
the previous one instead of where you clicked.

## /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
stand inside, like a 1x1x1 — or the claim you selected by right-clicking one of its corners.

  • Which side:** the side your line of sight hits. From outside a claim that's the side facing you (the top when you
look down on it); from inside, it's the side you're looking at. Right-clicking a corner first limits the resize to the
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 one
of 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,
one block per notch. Looking down at a 1x1x1 subdivision, scroll down raises its top and scroll up brings it back to a
single layer.

  • Preview:** the new outline is drawn through GriefPrevention's normal visualization event, so fake-block and glowing
borders — and visualization addons that hook that event — show it. Nearby claims and the parent claim's other
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,
the session stays open so you can scroll back.
  • Left-click, drop (Q), swap hands (F, 1.9+), a number key, switching off the claim tool, changing worlds, or a
minute without scrolling** cancels it and restores the claim's real outline.

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 meant
losing all of them. GP3D now gives each command its own node under a parent bundle:

  • Commands check their own node.** plugin.yml commands, /claim and /aclaim subcommands, and the standalone
aliases configured in alias.yml all check the command's specific permission. For example: /claim untrust checks
griefprevention.untrust, /claim pvp checks griefprevention.claimpvp, /claim trust <player> access checks
griefprevention.accesstrust, and /claim abandon all checks griefprevention.abandonallclaims.
  • One denial message.** Every denial sends NoPermissionForCommand from messages.yml — including Bukkit's own
plugin.yml permission check and dynamically registered aliases, which previously sent generic English text.
  • New nodes under griefprevention.claims** (default true): 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** (default op): griefprevention.3dadminclaims,
griefprevention.adminclaimslist, and griefprevention.deletealladminclaims (which also still requires
griefprevention.deleteclaims). /aclaim transfer checks griefprevention.transferclaim, and /aclaim delete
checks griefprevention.deleteclaims, griefprevention.deleteclaimsinworld, or griefprevention.deletealladminclaims
depending 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; the
change 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 with
griefprevention.adminclaims on admin claims) instead of edit permission, and the command permission is
griefprevention.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 appeared
in 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. A
second 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.claims, you can change it to griefprevention.claimpvp; the command also checks
griefprevention.claimpvp either way.
  • New messages are translated into every bundled locale.
  • No storage changes. Drop-in replacement for v18.3.13.
# GriefPrevention3D v18.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
without removing the rest of griefprevention.claims or griefprevention.adminclaims. Denials send the plugin's
own "no permission" message everywhere.
  • Changed:** /claimpvp now needs manager trust in the claim instead of edit permission.
  • Fix:** Claims.Allow3DSubdivisions and Claims.Allow3DAdminClaims are now written to config.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 /shapedclaims placed the segment marker next to
the previous one instead of where you clicked.

## /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
stand inside, like a 1x1x1 — or the claim you selected by right-clicking one of its corners.

  • Which side:** the side your line of sight hits. From outside a claim that's the side facing you (the top when you
look down on it); from inside, it's the side you're looking at. Right-clicking a corner first limits the resize to the
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 one
of 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,
one block per notch. Looking down at a 1x1x1 subdivision, scroll down raises its top and scroll up brings it back to a
single layer.

  • Preview:** the new outline is drawn through GriefPrevention's normal visualization event, so fake-block and glowing
borders — and visualization addons that hook that event — show it. Nearby claims and the parent claim's other
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,
the session stays open so you can scroll back.
  • Left-click, drop (Q), swap hands (F, 1.9+), a number key, switching off the claim tool, changing worlds, or a
minute without scrolling** cancels it and restores the claim's real outline.

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 meant
losing all of them. GP3D now gives each command its own node under a parent bundle:

  • Commands check their own node.** plugin.yml commands, /claim and /aclaim subcommands, and the standalone
aliases configured in alias.yml all check the command's specific permission. For example: /claim untrust checks
griefprevention.untrust, /claim pvp checks griefprevention.claimpvp, /claim trust <player> access checks
griefprevention.accesstrust, and /claim abandon all checks griefprevention.abandonallclaims.
  • One denial message.** Every denial sends NoPermissionForCommand from messages.yml — including Bukkit's own
plugin.yml permission check and dynamically registered aliases, which previously sent generic English text.
  • New nodes under griefprevention.claims** (default true): 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** (default op): griefprevention.3dadminclaims,
griefprevention.adminclaimslist, and griefprevention.deletealladminclaims (which also still requires
griefprevention.deleteclaims). /aclaim transfer checks griefprevention.transferclaim, and /aclaim delete
checks griefprevention.deleteclaims, griefprevention.deleteclaimsinworld, or griefprevention.deletealladminclaims
depending 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; the
change 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 with
griefprevention.adminclaims on admin claims) instead of edit permission, and the command permission is
griefprevention.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 appeared
in 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. A
second 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.claims, you can change it to griefprevention.claimpvp; the command also checks
griefprevention.claimpvp either way.
  • New messages are translated into every bundled locale.
  • No storage changes. Drop-in replacement for v18.3.13.
# GriefPrevention3D v18.3.13


## Overview

  • /extendclaim on a 3D subdivision inside a shaped claim resized the **shaped claim** instead of
the subdivision.
  • 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 claim

When no claim was selected with the golden shovel, /extendclaim (and /claim expand) replaced the
claim 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:

  • /extendclaim now extends the most specific claim you're standing in — including 2D, 3D, and
shaped subdivisions — matching upstream GriefPrevention. A claim selected with the golden shovel
still takes priority.
  • Extending a 3D subdivision vertically checked against the parent's raw stored Y values. Shaped
claims store only their floor, so a 3D subdivision inside one could never grow upward. The check
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
rectangle resize, which would have changed their stored bounds without moving their outline.

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 player
holding 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 other
outlines) both when created with /shapedsubdivideclaims and when reshaped or extended. Top-level
claims 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.
# GriefPrevention3D v18.3.13


## Overview

  • /extendclaim on a 3D subdivision inside a shaped claim resized the **shaped claim** instead of
the subdivision.
  • 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 claim

When no claim was selected with the golden shovel, /extendclaim (and /claim expand) replaced the
claim 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:

  • /extendclaim now extends the most specific claim you're standing in — including 2D, 3D, and
shaped subdivisions — matching upstream GriefPrevention. A claim selected with the golden shovel
still takes priority.
  • Extending a 3D subdivision vertically checked against the parent's raw stored Y values. Shaped
claims store only their floor, so a 3D subdivision inside one could never grow upward. The check
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
rectangle resize, which would have changed their stored bounds without moving their outline.

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 player
holding 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 other
outlines) both when created with /shapedsubdivideclaims and when reshaped or extended. Top-level
claims 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.
GriefPrevention3D Icon
Download GriefPrevention3D
Select game version
Select platform