All Mods Resource Packs Data Packs Shaders Modpacks Plugins
WorldGuard ExtraFlags Plus

WorldGuard ExtraFlags Plus

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

WorldGuard ExtraFlags Plus (WGEFP)

Release 4.4.6

An advanced WorldGuard extension that adds 45+ extra region flags for full control of player behavior, teleportation, and region rules — featuring Folia support, item blocking (Mace, Firework, Wind Charge, Totem, Goat Horn, Spears), throwable-only blocking (disable-throw for egg, snowball, pearl, XP bottle), optional PacketEvents/ProtocolLib packet hooks for full disable-completely coverage, and fully customizable messages.

⚠️ Warning DO NOT USE BOTH PLUGINS TOGETHER!

If you're upgrading from WorldGuardExtraFlags to WorldGuardExtraFlagsPlus, make sure to:

  • Remove the old WorldGuardExtraFlags.jar plugin file
  • Only keep WorldGuardExtraFlagsPlus.jar on your server
  • Both plugins cannot coexist - they will conflict with each other

📖 Full Flag Usage Guide

For comprehensive usage examples and detailed flag documentation, see the Complete Flag Usage Guide on the tinsware Wiki.

Why WorldGuard Extra Flags Plus?

  • 🪓 Item & Throwable Control — disable-completely (Mace, Firework, Wind Charge, Totem, Trident, Goat Horn, Spears), disable-throw (egg / snowball / pearl / XP bottle), deny-item-drops / deny-item-pickup
  • 🚪 Entry Control — XP or PlaceholderAPI level gates (entry-min-level / entry-max-level), permission gates (entry-permission / entry-deny-permission), player-count-limit
  • ⚙️ Region Automation — command-on-entry/exit, console-command-on-entry/exit, repeating console commands (console-command-repeat, console-command-timer), chat prefix / suffix with PlaceholderAPI; command flags support %uuid%
  • 🧱 Block & World Interaction — block place/break control (incl. buckets & waterlogged blocks), enderchest-access, permit-workbenches, inventory-craft, villager-trade, disable-collision, chunk-unload, nether-portals, worldedit, lightning-damage, frostwalker, play-sounds
  • 🧟 Mob & Spawn Control — deny-mobspawn by category or entity type
  • 🛡️ Player Protection & Effects — godmode, keep-inventory (incl. DeluxeCombat), keep-exp, item-durability, fly / glide / speed flags, blocked-effects / give-effects
  • ✨ Extras — Folia support, Paper 1.21 – 26.2+, customizable messages + cooldown, update checker, hide-players & chambered-enderpearl (experimental)

Flag List (45+)

All managed with standard WorldGuard flag commands.

[teleport-on-entry / teleport-on-exit]  [command-on-entry / command-on-exit]
[console-command-on-entry / console-command-on-exit]  [console-command-repeat / console-command-timer]
[walk-speed / fly-speed]  [fly]  [glide](elytra-blocker)  [frostwalker]
[keep-inventory / keep-exp]  [godmode]  [item-durability]
[chat-prefix / chat-suffix]  [blocked-effects]  [give-effects]  [play-sounds]
[respawn-location]  [join-location](not-on-folia)  [worldedit]
[nether-portals]  [chunk-unload]  [villager-trade]  [inventory-craft]
[allow-block-place / deny-block-place]  [allow-block-break / deny-block-break]
[deny-item-drops / deny-item-pickup]  [permit-workbenches]  [enderchest-access]
[disable-completely]  [disable-throw]  [lightning-damage]  [disable-collision]
[entry-min-level / entry-max-level]  [entry-permission / entry-deny-permission]
[deny-mobspawn]  [player-count-limit]  [hide-players](experimental)  [chambered-enderpearl](experimental)

Version Compatibility

Minecraft WorldGuard ExtraFlagsPlus Support
1.21 – 26.2+ 7.0.15+ 4.4.6+ ✅ Active
1.7 – 1.19 Older ❌ No support

The jar declares api-version: 1.21 in plugin.yml so Paper 1.21.x servers (and forks such as Canvas) load it.

Message Customization

All plugin messages live in plugins/WorldGuard/messages-wgefp.yml.

  • Edit freely to match your style; color codes supported (&c, &7, etc.); disable messages with ""
  • Placeholders: {permission}, {required}, {current}, {item}, {workbench} (e.g. disable-throw-blocked uses {item})
  • Message cooldown (default 2 seconds) prevents spam; reload instantly with /wgefp reload or /wg reload

Authors

Support & Community

⭐ If you like this project, give it a star on GitHub

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3 26.2 26.1.x +1
Folia Paper
1d ago 1
26.2 26.1.x 1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
26.2 26.1.x 1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
26.2 26.1.x 1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
26.2 26.1.x 1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
26.2 26.1.x 1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x
Folia
1d ago 1
1.21.x
Folia
1d ago 1
1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x 1.20.x 1.2.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x 1.20.x 1.2.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x 1.20.x 1.2.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x 1.20.x 1.2.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x 1.20.x 1.2.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
1.21.x 1.20.x
Bukkit Folia Paper Purpur Spigot
1d ago 1
  • Folia/Canvas + FAWE event threading

  • fly flag cross-world teleport

  • PlaceholderAPI optional dependency

https://github.com/tinsware/WorldGuardExtraFlagsPlus/releases/tag/v4.4.6
### Fixed
  • EntityPotionEffectEvent on Paper 26.1 / MC 1.21.11** | Fixed NoSuchMethodError for EntityPotionEffectEvent.getEntity() when running on Paper 26.1 — the listener now resolves the entity via EntityEvent.getEntity() for binary compatibility across 26.1 and 26.2.
  • Bucket water/lava pickup and placement** | allow-block-break / deny-block-break and allow-block-place / deny-block-place now apply correctly to bucket fill and empty actions (including waterlogged blocks). New config allow-block-break-settings.waterlogged-material-check (both | host | liquid, default both) controls whether the host block, liquid, or both are checked for waterlogged blocks.
  • fixLineWrapping apostrophe doubling on reload** | messages-wgefp.yml no longer grows on every /wgefp reload when messages contain apostrophes (e.g. can't), which was the root cause of corrupt YAML reports (files ballooning to several MB). The post-ConfigLib line-unwrapping pass now skips files with only single-line values, writes only when content actually changes, uses YAML-aware quote detection (so can''t is not mistaken for a closing quote), and outputs double-quoted strings for apostrophe text instead of re-escaping with single quotes.

### Changed
  • Minimum Minecraft version** | Minimum supported Minecraft version is now **1.21** (dropped 1.20.x support). plugin.yml api-version: 1.21 unchanged.
  • Build dependencies** | Bumped compile-time dependencies for 4.4.5: WorldGuard 7.0.18, WorldEdit 7.3.19, Paper API 26.1.2.build.67-stable (compile target reverted from 26.2 for binary compatibility on 26.1), FAWE-Core 2.15.3, ConfigLib 4.8.1, PacketEvents API 2.13.0, ProtocolLib 5.4.0, FoliaLib 0.5.1, EssentialsX 2.21.2, PlaceholderAPI 2.12.3, bStats 3.2.1, Lombok 1.18.46. WorldGuard moved from 7.0.15-SNAPSHOT to stable 7.0.18.
  • WGEFP YAML defensive loading** | config-wgefp.yml and messages-wgefp.yml now quarantine oversize files (>300 KB) to <name>.corrupt.<timestamp> and regenerate defaults automatically (plugin keeps loading). At most 3 corrupt backups are kept per file type. YAML parse failures attempt one auto-recovery before disabling the plugin. Direct WGEFP YAML writes use atomic temp-file replacement to reduce crash corruption.
  • README and listing docs** | Refreshed for 4.4.5: new flags (enderchest-access, console-command-timer), bucket/waterlogged fixes, %uuid% placeholder, dependency versions, and compatibility table (Paper 1.21 – 26.2+, WorldGuard 7.0.18+).

### Added
  • enderchest-access** | Controls whether players can open ender chests in a region (like WorldGuard chest-access, but ender chests only). Default flag value is allow — set deny on a region to block access. Enabled by default (all-flags-control.enderchest-access: true). Usage: /rg flag <region> enderchest-access deny
  • console-command-timer** | Repeats a console command at a fixed interval (1-300 seconds) while a player stays in the region. Timer resets on region exit — no cooldown persistence (hold-to-earn / KOTH semantics). Disabled by default — enable via all-flags-control.console-command-timer: true. Usage: /rg flag <region> console-command-timer "60 give %player% diamond 1"
  • %uuid% placeholder for command flags** | Parity with upstream [WorldGuardExtraFlags](https://github.com/aromaa/WorldGuardExtraFlags) by [@aromaa](https://github.com/aromaa) (commit [10dd871](https://github.com/aromaa/WorldGuardExtraFlags/commit/10dd871), Jul 2026). Command flags (command-on-entry, command-on-exit, console-command-on-entry, console-command-on-exit, console-command-repeat, console-command-timer) now support %uuid% and {uuid} in addition to existing %player% / %username% placeholders.
### Added
  • PlaceholderAPI expansion** | New placeholder %wgefp_players_in_region_<regionId>% returns the number of online players currently inside a region, summed across all worlds (case-insensitive region id, refreshed once per second, Folia-safe). Requires PlaceholderAPI; toggle via all-flags-control.papi-placeholders (default: false — opt-in, enable to register the placeholder).
  • all-flags-control.check-order** | New config option controlling the evaluation order of the block allow/deny flags (allow-block-place/deny-block-place, allow-block-break/deny-block-break). allow-first (default) keeps the current behavior — a material in the allow list is allowed even if also denied. deny-first gives deny priority — a material in the deny list is denied even if also in the allow list. Global setting in config-wgefp.yml; existing servers are unaffected by the default.

### New flags
  • deny-mobspawn** | Blocks spawning of mobs in the listed categories inside a region: ALL_HOSTILE (every Enemy mob, bosses included), ALL_NEUTRAL (provoked-only mobs), ALL_PEACEFUL (all other living mobs), ALL (all three), or specific EntityType names (e.g. ZOMBIE, CREEPER). Hostile set is derived from the Enemy interface so new hostile mobs are auto-covered. See .media/deny-mobspawn-categories.md for the exact per-category mob lists.
  • entry-permission** | Sets the permission required to enter the region (e.g. /rg flag <region> entry-permission myPlugin.myPermission.1). Takes priority over entry-deny-permission when both are set.
  • entry-deny-permission** | Denies entry to players holding the given permission (e.g. /rg flag <region> entry-deny-permission myPlugin.myPermission.1). If both flags are set, entry-permission takes priority.

### Changed
  • Default messages** | Unified all default message wording to a consistent WorldGuard-style phrasing (&c&lHey! &r&7Sorry, but ...). Idea based on [PR #24](https://github.com/tinsware/WorldGuardExtraFlagsPlus/pull/24) by [@jruk8](https://github.com/jruk8).
  • Message cooldown** | Lowered the default sendMessageCooldown from 3 to 2 seconds (only affects fresh installs — existing servers keep their configured value).
  • disable-completely** | GOAT_HORN is now a blockable item, so goat horn usage can be disabled in regions (e.g. /rg flag <region> disable-completely GOAT_HORN).

### Fixed
  • teleport-on-exit** | No longer triggers when the player teleports away (/wild, /spawn, /warp, ender pearls, portals) or respawns — it now only fires on real movement out of a region (walking, riding, knockback), so players can't be yanked back to the region's exit location by teleports. Restore the legacy behavior by setting all-flags-control.teleport-on-exit-ignore-teleports to false (default is true).
## 4.4.2

### New flags
  • lightning-damage** | Lightning strikes appear visually but don't damage players when set to deny in a region. Useful for PvP arenas. ([PR #21](https://github.com/tinsware/WorldGuardExtraFlagsPlus/pull/21) by [@1wairesd](https://github.com/1wairesd))
  • console-command-repeat** | Repeats a console command at a fixed interval (1-60 seconds) while a player stays in the region. Disabled by default — enable via all-flags-control.console-command-repeat: true. Usage: /rg flag <region> console-command-repeat "20 give %player% diamond 1"

### Fixes
  • disable-completely** | Fixed hotbar-swap bypass: a player could send HELD_ITEM_CHANGE immediately before STAB in the same tick, bypassing the region flag. Packet hooks now intercept the slot switch before NMS applies it — if the target slot holds a blocked item, the switch is cancelled outright. (Issue identified by [@1wairesd](https://github.com/1wairesd))
  • console-command-repeat** | Fixed IllegalStateException: Dispatching command async on Folia servers by routing the command dispatch through runNextTick. Fixed flag value parsing: the underlying element flag no longer auto-prepends / to entries, so values like 6 say hi are stored and parsed correctly.
  • console-command-repeat** | Fixed reward farming by adding persistent cooldown tracking. The handler now records the last execution time for each flag entry. When a player exits and re-enters the region, the remaining interval is calculated from the last payout — preventing instant rewards on re-entry. On first entry, the command waits the full interval before any payout.
  • console-command-repeat** | Fixed FoliaLib warning about 0-tick delay when the cooldown expired while the player was away. The catch-up command is now dispatched via runNextTick instead of passing 0L to the entity timer.
  • blocked-effects, give-effects, and play-sounds skip tick work when the flag is inactive and there’s nothing to restore
  • blocked-effects avoids calling hasBypass() every tick when no flag value applies (less LuckPerms/cache overhead)
  • blocked-effects uses one runAtEntity task per tick instead of N+1 separate schedules
### Build & runtime
  • 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.yml** remains **api-version: '1.21'**.
  • FoliaLib shading** hardened: explicit shade includes + post-package check that **WrappedBukkitTask** and **SpigotImplementation** exist in the jar (fixes **NoClassDefFoundError** breaking command-on-entry and all schedulers on Paper 26.x).

### Command flags
  • Shared **CommandFlagHandlerSupport** for 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 use **runNextTick**.
  • Scheduler self-test on enable logs **SEVERE** if FoliaLib is broken.

### Config & startup ([#14](https://github.com/tinsware/WorldGuardExtraFlagsPlus/issues/14), [#13](https://github.com/tinsware/WorldGuardExtraFlagsPlus/issues/13))
  • logging.verbose-startup-logs** (default **false**) — quiet console on large servers.
  • Config.initialize()** in **onLoad()** 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.

### Give-effects ([#15](https://github.com/tinsware/WorldGuardExtraFlagsPlus/issues/15))
  • PotionEffectFlag** accepts **night_vision**, **minecraft:night_vision**, legacy names, and normalized spacing.

### Keep-inventory & combat log
  • keep-inventory-settings.combat-log-restore** (default **true**) — DeluxeCombat soft integration: snapshot inventory on combat-log quit inside keep-inventory regions, restore on next join.
  • Death handler priority **HIGHEST** so other plugins are less likely to clear drops after keep-inventory applies.

### Block flags
  • 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)
  • 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**).

### Join-location
  • Improved Paper/Folia/Canvas detection — prefers **AsyncPlayerSpawnLocationEvent** over deprecated **PlayerSpawnLocationEvent** on modern servers.

### Folia / performance audit fixes
  • Collision apply on join/world-change via **runAtEntity** (not global **runNextTick**).
  • 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; **onDisable** task cancel.

### Config documentation
  • Inline comments for give-effects syntax, worldedit **__global__** usage, glide disable behavior, hide-players setup.
# Changelog - Release 4.3.13

## 4.3.13

### disable-throw region flag
  • SetFlag** listing **EGG**, **SNOWBALL**, **ENDER_PEARL**, **EXPERIENCE_BOTTLE** only (validated by **ThrowableItemFlag**); **ProjectileLaunchEvent** cancellation + **disable-throw-blocked** message ( **messages-wgefp.yml** ). Trident / wind charge remain on **disable-completely**. Toggle via **config-wgefp.yml** **all-flags-control.disable-throw**.

### Build / runtime targets (Maven)
  • Minecraft / Paper 26.1.2**: compile against **io.papermc.paper:paper-api** pinned to **26.1.2.build.60-stable** (matches Paper repo [maven-metadata.xml](https://repo.papermc.io/repository/maven-public/io/papermc/paper/paper-api/maven-metadata.xml) **release** at time of update); bump this property when Paper ships newer **26.1.2.build.*** builds. **org.spigotmc:spigot-api** removed — Paper supplies the Bukkit API ([Paper project setup](https://docs.papermc.io/paper/dev/project-setup/)).
  • javac --release 25** per Paper’s **26.1.x** toolchain recommendation (same doc).
  • plugin.yml**: **api-version: '1.21'** so Paper / forks (e.g. Canvas) **1.21.x** accept the jar at load time; declaring **26.1.2** causes Unsupported API version on those servers ([Paper plugin.yml](https://docs.papermc.io/paper/dev/plugin-yml/)).
  • Still bundled vs provided: **WorldEdit 7.3.18**, **WorldGuard 7.0.15-SNAPSHOT**, **FAWE-Core 2.12.0**, **bstats 3.1.0**, **ConfigLib 4.8.0**, **Lombok 1.18.46**, **shade 3.6.2**. **paper-repo** remains **last** in <repositories> to avoid probing EngineHub coords against Paper first.

### Join location (Paper / Folia)

### WorldEdit flag + FastAsyncWorldEdit (FAWE)
  • WorldEditFlagHandler** now intercepts FAWE batch extent APIs (setBlocks, replaceBlocks, coordinate setBlock, setBiome) in addition to per-block setBlock, so **worldedit DENY** is much harder to bypass under FAWE (addresses [Issue #7](https://github.com/tinsware/WorldGuardExtraFlagsPlus/issues/7)–style gaps).
  • Compile against **FastAsyncWorldEdit-Core** provided (Modrinth Maven); WorldGuard’s transitive WorldEdit jars are excluded on the Spigot module so the patched **AbstractDelegateExtent** API matches runtime FAWE/WorldEdit.
  • Optional permissions: **worldguardextraflagsplus.worldedit.bypass**, **worldguardextraflagsplus.worldedit.silent-deny**.
  • New message key **worldedit-denied** in messages-wgefp.yml / PluginMessages (reload to customize).

### Disabled flags in config-wgefp.yml (handler null-safety)
  • When **all-flags-control** turns off **fly** or **give-effects**, WorldGuard does not register those session handlers — **Session#getHandler returns null**. **PlayerListener**, **EntityPotionEffectEventListener**, and **RemoveEffectPacketListener** now check **Config.isFlagEnabled** and null handlers before use (fixes [Issue #9](https://github.com/tinsware/WorldGuardExtraFlagsPlus/issues/9) NPE on e.g. PlayerChangedWorldEvent).

### fly after PLUGIN teleports (portals)

### command-on-entry / console-command-on-entry
  • initialize(LocalPlayer, …)** added so commands run when the session starts **already inside** a region with the flag (previously only **onCrossBoundary** fired, so login/spawn inside the region did nothing). **console-command-on-entry** also aligns **isEmpty** checks with **command-on-entry**.
  • Command strings: strip a leading **/** only when present — YAML pasted without **/** no longer turns **say hi** into **ay hi**. **command-on-exit** / **console-command-on-exit** use the same helper; skip blank lines after processing.

#### 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 the **SPEAR** shorthand (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-completely** registers **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 bogus io.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 via config-wgefp.yml flag toggle like other flags). Behavior and defaults may change in future releases.
### Disable Collision Flag - Major Refactor

#### Implementation Changes
  • 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 the only member of their team, the plugin temporarily modifies that team's collision rule
  • 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-entry and command-on-exit flags causing thread check errors on Folia servers by using entity scheduler instead of global scheduler for player command dispatch
  • Fixed disable-collision flag causing player disconnections on Paper servers by properly handling IllegalStateException when removing players from teams
  • Fixed disable-collision flag 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 in command-on-entry, command-on-exit, console-command-on-entry, and console-command-on-exit flags (in addition to existing %username% and {username} placeholders)
  • Added EssentialsX godmode integration - the godmode flag 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
  • Updated all documentation with new flags
  • Added Discord community link
  • Updated version compatibility tables
### Note:
Existing permit-completely flags in region files will be automatically migrated to disable-completely on plugin load.
# 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:**
``
/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-blocked with {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:**
`
/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-drop and item-pickup flags

## 🔧 Improvements

  • Messages file renamed:** messages.yml → messages-wgefp.yml (avoids conflicts)
  • Fixed logic: explicit workbench types now take precedence over ALL keyword

## 📊 Stats

  • Total Flags:** 37 (was 34)
  • Minecraft:** 1.20 – 1.21.10
  • WorldGuard:** 7.0.13+
  • Folia:** ✅ Fully supported

## 🔄 Migration

  • Rename plugins/WorldGuard/messages.yml to messages-wgefp.yml if you have custom messages
  • New config-wgefp.yml` will be auto-created
Bug Fixes
Fixed Riptide Enchantment Blocking
Fixed: permit-completely flag now fully blocks Riptide enchantment on tridents
Prevents Riptide boost, spinning animation, and all movement effects
Blocks right-click interactions before Riptide can activate
Rotation locking prevents spinning animation if event somehow fires
No longer requires enchantment removal (safer approach)
✨ New Features
Block Placement & Breaking Control
Added 4 new flags for fine-grained block control:

allow-block-place - Whitelist specific blocks that can be placed
deny-block-place - Blacklist specific blocks from being placed
allow-block-break - Whitelist specific blocks that can be broken
deny-block-break - Blacklist specific blocks from being broken
Usage Examples:

/rg flag spawn allow-block-place STONE,COBBLESTONE,GRASS_BLOCK
/rg flag spawn deny-block-place TNT,LAVA_BUCKET
/rg flag spawn allow-block-break STONE,COBBLESTONE
/rg flag spawn deny-block-break BEDROCK,SPAWNER
🎉 Version 4.3.5 Release
🔄 Update Checker

Automatically checks for updates from Spigot, GitHub, and Modrinth
Uses semantic version comparison for accurate update detection
Shows formatted update notifications in console
Runs automatically after server startup

🏪 Villager Trade Flag
New villager-trade flag to control villager trading in regions
Set to deny to prevent players from trading with villagers
Fully Folia-compatible

🚫 Disable Collision Flag
New disable-collision flag to disable player collision in regions
Players can pass through each other when enabled
Uses scoreboard teams for reliable collision control
Fully Folia-compatible

📝 PlaceholderAPI Chat Integration
Chat prefix and suffix now support PlaceholderAPI placeholders
Automatically processes placeholders if PlaceholderAPI is installed
Works seamlessly without PlaceholderAPI (graceful fallback)
Example: /rg flag spawn chat-prefix "&7[%vault_rank%] "

🪓 Trident Support
Added TRIDENT to permit-completely flag
Now supports: MACE, FIREWORK_ROCKET, WIND_CHARGE, TOTEM_OF_UNDYING, TRIDENT
Blocks all trident usage (throwing, melee, interactions)

📋 Technical Details
All new features are fully Folia-compatible
Update checker uses semantic version comparison
PlaceholderAPI integration uses reflection (soft dependency)
Collision system uses Bukkit scoreboard teams API
Initial project upload.
  • Fork of WorldGuardExtraFlags with support of Folia, extra flags, customizable messages etc. (for now)

Detailed (4.3.0 - 4.3.2 - 4.3.3) logs under here: https://github.com/tins-dev/WorldGuardExtraFlagsPlus/releases

WorldGuard ExtraFlags Plus Icon
Download WorldGuard ExtraFlags Plus
Select game version
Select platform