# GriefPrevention3D v17.4.3
**Wiki:** https://github.com/castledking/GriefPrevention3D/wiki
## Highlights
- **Unified command hardening** — Fixed several standalone command edge cases and permission checks.
- **PlaceholderAPI support** — Added a small optional GP3D PlaceholderAPI expansion.
- **More claim protections** — Added protections for animal mounting, entity unleashing, hanging entities, and weaving cobwebs.
- **QuickShop-Hikari compatibility** — Restore-nature now preserves QuickShop shop signs.
- **Claim expiration exemption** — Players with the griefprevention.dontexpire permission are now skipped by inactive-claim cleanup when Vault is installed.
## Unified Commands
The unified command handler now handles standalone aliases more carefully:
- Explicit empty `standalone:` lists in `alias.yml` now disable standalone aliases for that subcommand instead of falling back to enum defaults.
- Standalone no-argument commands now reject extra arguments instead of forwarding unexpected input.
- Standalone commands can now use custom tab completion where needed.
- Unified subcommands now check their configured permission before execution.
- `/shapedclaims`, `/claim mode shaped`, `/3dsubdivideclaims`, and `/claim mode 3d` now consistently enforce their dedicated permissions.
Affected files: `CommandAliasConfiguration.java`, `UnifiedCommandHandler.java`, `UnifiedClaimCommand.java`, `UnifiedAdminClaimCommand.java`, `GriefPrevention.java`, `plugin.yml`.
## PlaceholderAPI
Added optional PlaceholderAPI integration with identifier `gp3d`.
New placeholders:
- `%gp3d_in_subdivision%` — `true` when the player is inside any subdivision.
- `%gp3d_in_3d_subdivision%` — `true` when the player is inside a 3D subdivision.
PlaceholderAPI is a soft dependency. The expansion registers automatically when PlaceholderAPI is installed.
Affected files: `pom.xml`, `plugin.yml`, `PlaceholderAPIExpansion.java`, `GriefPrevention.java`.
## Protection Fixes
### Animal mounting requires access trust
Players now need Access trust to mount claimed rideable animals. `/ignoreclaims` still bypasses this for administrators.
Affected file: `PlayerEventHandler.java`.
### Entity unleashing requires container trust
When theft prevention is enabled, players now need Container trust to unleash entities inside claims. `/ignoreclaims` still bypasses this for administrators.
Affected file: `PlayerEventHandler.java`.
### Hanging entity protection
Item frames, paintings, and other hanging entities are now protected from additional edge cases:
- physics breaks caused by projectiles or nearby updates while the supporting block still exists
- direct non-player damage
- player/projectile damage without Build permission
- explosion damage events
Affected file: `EntityEventHandler.java`.
### Weaving cobwebs no longer trip block-change protection
The Weaving potion effect can now create cobwebs from living-entity deaths without being caught by unrelated entity block-change protections.
Affected file: `EntityEventHandler.java`.
## QuickShop-Hikari Compatibility
Restore-nature now detects QuickShop shop signs by their persistent data key and preserves both:
- the shop sign itself
- the block supporting the shop sign
This prevents GP3D restore-nature operations from silently removing QuickShop shop signs through direct block restoration.
Affected files: `BlockSnapshot.java`, `RestoreNatureProcessingTask.java`.
## Claim Expiration Bypass
If Vault is installed, claim expiration now honors:
- `griefprevention.dontexpire`
Players with that permission are skipped by the inactive-claim cleanup task.
Affected files: `CleanupUnusedClaimPreTask.java`, `plugin.yml`.
## Migration
No data migration required.
New optional integrations:
- Install PlaceholderAPI to use the new `%gp3d_*%` placeholders.
- Install Vault plus a permissions provider to use `griefprevention.dontexpire`.
New permissions from v17.4.2 remain default-true:
- `griefprevention.shapedclaims`
- `griefprevention.3dsubdivideclaims`
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }