### Build & runtime
### Command flags
- Version 4.4.0 — feature and stability release after Folia/performance audit.
- Java 21 bytecode (
--release 21) for broader Paper 1.21.x / 26.1–26.3 server compatibility.- Paper API compile target:
26.1.2.build.67-stable;plugin.ymlremainsapi-version: '1.21'.- FoliaLib shading hardened: explicit shade includes + post-package check that
WrappedBukkitTaskandSpigotImplementationexist in the jar (fixesNoClassDefFoundErrorbreaking command-on-entry and all schedulers on Paper 26.x).
### Config & startup (#14, #13)
- Shared
CommandFlagHandlerSupportfor entry/exit player and console command flags.- Entry commands dispatch only from entered regions with correct last-set tracking; exit commands run for all removed command sets.
- Player commands use
runAtEntity; console commands userunNextTick.- Scheduler self-test on enable logs SEVERE if FoliaLib is broken.
### Give-effects (#15)
logging.verbose-startup-logs(defaultfalse) — quiet console on large servers.Config.initialize()inonLoad()before flag registration — disabled flags (e.g.glide) are not registered; reduces “plugin not installed” unknown-flag warnings.- Chunk-unload tickets: one summary line per world; collision init only when flag enabled.
-PotionEffectFlagacceptsnight_vision,minecraft:night_vision, legacy names, and normalized spacing.
### Keep-inventory & combat log
### Block flags
keep-inventory-settings.combat-log-restore(defaulttrue) — DeluxeCombat soft integration: snapshot inventory on combat-log quit inside keep-inventory regions, restore on next join.- Death handler priority
HIGHESTso other plugins are less likely to clear drops after keep-inventory applies.
-allow-block-place-settings.require-membership/allow-block-break-settings.require-membership— allow lists apply only to region members/owners (e.g. member-only sign placement).
### New flag: hide-players (experimental)
### Join-location
- Opt-in via
all-flags-control.hide-players: true, then/rg flag <region> hide-players true.- Hides players from others while inside the region (hub/lobby optimization via Bukkit
hidePlayer).
- Improved Paper/Folia/Canvas detection — prefersAsyncPlayerSpawnLocationEventover deprecatedPlayerSpawnLocationEventon modern servers.
### Folia / performance audit fixes
### Config documentation
- Collision apply on join/world-change via
runAtEntity(not globalrunNextTick).- Chambered ender pearl listener rewrite (thread-safety, scheduler).
- Player count limit uses world-scoped player scan.
- Chunk-unload batched async chunk tickets.
- Join-location fallback uses
teleportAsync.- Fly/godmode quit cache cleanup; entry-level placeholder cache eviction;
onDisabletask cancel.
- Inline comments for give-effects syntax, worldedit__global__usage, glide disable behavior, hide-players setup.
####disable-completely— Vanilla spears (1.21.11+)
- Block spear items: tier materials (
WOODEN_SPEAR,STONE_SPEAR,COPPER_SPEAR,IRON_SPEAR,GOLDEN_SPEAR,DIAMOND_SPEAR,NETHERITE_SPEAR) and theSPEARshorthand (all tiers).- Riptide interaction blocking extended to spears as well as tridents when the item is disabled in the region.
- Spear Lunge (packet STAB, including Lunge enchant use) is only reliably blocked when PacketEvents or ProtocolLib is installed; without either, Lunge may bypass Bukkit-only checks.
#### Packet-level blocking (optional plugins)
disable-completelyregisters PacketEvents listeners when the PacketEvents plugin is present (primary): cancels relevant serverbound packets including spear Lunge via digging action STAB, plus use/interact/placement paths as implemented.- ProtocolLib is supported as a fallback when PacketEvents is not used or hook registration fails.
#### Safe startup without PacketEvents / ProtocolLib
- Main plugin class avoids hard references to PacketEvents and ProtocolLib APIs; registration uses reflection so the jar loads cleanly when optional dependencies are absent (
provided/softdepend).- PacketEvents API entry uses
com.github.retrooper.packetevents.PacketEvents(correct package); avoids bogusio.github.retrooper...lookups that broke hook registration at runtime.ProtocolLibHelper(give-effects) registers its listener via reflection only so the helper class does not require ProtocolLib on the classpath at load time.
#### New flag:chambered-enderpearl(experimental)
- Experimental. State flag to mitigate chambered ender pearl style bypasses: tracks pearls thrown outside flagged regions and removes them when the shooter enters a region where the flag denies the behavior (handler + session integration; configurable viaconfig-wgefp.ymlflag toggle like other flags). Behavior and defaults may change in future releases.
### Disable Collision Flag - Major Refactor
#### Implementation Changes
- If a player is the only member of their team, the plugin temporarily modifies that team's collision rule
- Minecraft teams: Now uses Minecraft's native scoreboard team system (the only reliable method for entity-to-entity collision)
- Hybrid team-based approach:
- If a player is in a team with multiple members, creates a per-player team (WGC_<hash>) to avoid affecting others
- If a player has no team, adds them to a per-player team with collision disabled
#### TAB Plugin Integration
- Full API integration: Added TAB plugin support with API integration
- Priority handling: TAB integration takes priority over direct team manipulation when TAB is installed
- Conflict prevention: Uses TAB's API to set collision rules, preventing TAB from overwriting collision settings
- Automatic fallback: If TAB is not available, automatically falls back to direct team manipulation
#### Without TAB (Normal Usage)
- Direct team manipulation: Uses Bukkit's Scoreboard API to directly modify team collision rules
- Team restoration: Properly restores original team collision rules when players leave regions
- Per-player teams: Creates temporary per-player teams when needed to avoid conflicts with shared teams
- Cleanup on disable: Properly cleans up all teams and restores original settings when plugin disables
#### Warnings and Compatibility
- Load-time warning: Displays a warning on plugin load about potential conflicts with team-using plugins
- Known plugin detection: Warns about potential conflicts with couple known plugin names
- TAB support indication: Shows supported plugins
#### Documentation Updates
- Updated documentation: Comprehensive documentation file updated with TAB integration details
- Troubleshooting guide: Added troubleshooting information for team conflicts
### Fixed
- Fixed
command-on-entryandcommand-on-exitflags causing thread check errors on Folia servers by using entity scheduler instead of global scheduler for player command dispatch- Fixed
disable-collisionflag causing player disconnections on Paper servers by properly handlingIllegalStateExceptionwhen removing players from teams- Fixed
disable-collisionflag on Folia servers - feature is now automatically disabled if team creation is not supported (prevents errors and warnings)
### Added
- Added support for
%player%and{player}placeholders incommand-on-entry,command-on-exit,console-command-on-entry, andconsole-command-on-exitflags (in addition to existing%username%and{username}placeholders)- Added EssentialsX godmode integration - the
godmodeflag now also disables EssentialsX godmode when entering regions with godmode disabled (EssentialsX is now a soft dependency)
### Changed
- Migrated configuration management to ConfigLib library for improved maintainability, automatic comment preservation, and better error handling
- Updated API version to 1.21 - plugin now officially supports Paper 1.21.10+, Spigot 1.21.x, and Folia 1.21.x
New Features
- Added inventory-craft flag - Block inventory crafting (2x2 grid) in regions
- Added Discord support link - Join our community: https://discord.gg/TCJAwsdqum
Breaking Changes
- Removed permit-completely flag - Use disable-completely instead (automatic migration included)
- Changed permit-workbenches CRAFT behavior - Now only blocks crafting table (3x3), not inventory crafting. Use deny-inventory-craft for inventory blocking.
Improvements
- Automatic message migration: permit-completely-blocked → disable-completely-blocked
- Automatic message key addition for new flags
- File-based region migration runs automatically on plugin load
Documentation
Note: Existing permit-completely flags in region files will be automatically migrated to disable-completely on plugin load.
- Updated all documentation with new flags
- Added Discord community link
- Updated version compatibility tables
# WorldGuard ExtraFlags Plus v4.3.7
###New Flag:
permit-workbenches
Block workbench usage and crafting in regions! Supports: ALL, clear, anvil, cartography, craft, ender, grindstone, loom, smithing, stonecutter.
Usage:
Code:/rg flag spawn permit-workbenches ALL /rg flag spawn permit-workbenches ALL,ender /rg flag spawn permit-workbenches craft,anvil /rg flag spawn permit-workbenches clear
Features:
- Blocks right-click on workbenches
- Blocks crafting table GUI and 2x2 inventory crafting
- Optional block placement blocking via config
- New config file:
plugins/WorldGuard/config-wgefp.yml- New message:
permit-workbenches-blockedwith{workbench}placeholder
###New Flags:
deny-item-drops&deny-item-pickup
Deny specific item drops and pickups in regions (works when WorldGuard's default flags are set to allow).
Usage:
Code:/rg flag spawn deny-item-drops diamond,emerald /rg flag spawn deny-item-pickup apple,bread
Features:
- Denies specific items from being dropped even if WorldGuard allows drops
- Denies specific items from being picked up even if WorldGuard allows pickups
- Works alongside WorldGuard's
item-dropanditem-pickupflags
##Improvements
- Messages file renamed:
messages.yml→messages-wgefp.yml(avoids conflicts)- Fixed logic: explicit workbench types now take precedence over
ALLkeyword
##Stats
- Total Flags: 37 (was 34)
- Minecraft: 1.20 – 1.21.10
- WorldGuard: 7.0.13+
- Folia:
Fully supported
##Migration
- Rename
plugins/WorldGuard/messages.ymltomessages-wgefp.ymlif you have custom messages- New
config-wgefp.ymlwill be auto-created
