Compatibility
Platform
- Bukkit/Spigot/Paper/Purpur 1.21+
- Folia (region-aware scheduling)
- Java 25+
Permission Plugins
LuckPerms
- Uses standard Bukkit permissions.
- No special integration code required.
- Manage
doubledoors.*nodes as usual.
Protection Plugins
GriefPrevention
- Optional reflective integration.
- Linked partner door checks require Access trust by default because
griefprevention.requireBuildForLinkedDoorsdefaults tofalse. Enabling the option changes the requirement to Build trust. - If reflection fails or API signatures differ while GriefPrevention is installed, the linked action is denied and a compatibility error is logged. If GriefPrevention is absent, the integration is bypassed.
- Per-claim villager blocking: admins can toggle villager linked-door access per claim using
/doubledoors grief villagers.
WorldGuard
- Optional reflective integration via
softdepend. - Build permission check: When
worldGuardRespectBuildPermissionis true, linked door actions require WorldGuard build permission. - USE flag check: When
worldGuardRespectUseFlagis true, linked door actions require the WorldGuard USE flag to be set toallow. - Custom state-flag: A configurable flag name (default
double-doors-allow) can be set per-region toallowordenyDoubleDoors behavior. Resolved with priority-based flag resolution when multiple regions overlap. - Region blacklist/whitelist:
worldGuardRegionFilter.modecontrols which WorldGuard regions are subject to DoubleDoors linking. Region IDs are collected via WorldGuard'sgetApplicableRegions()API. - If reflection fails or API signatures differ while WorldGuard is installed, the linked action is denied and a compatibility error is logged. If WorldGuard is absent, the integration is bypassed.
Bedrock Bridge
Geyser and Floodgate
- Optional soft dependency.
- Duplicate interaction debounce is active to reduce double-fire toggles for the same block interaction.
- When SQL storage is enabled, the Bukkit plugin polls the shared database to detect if a remote Velocity proxy has Geyser/Floodgate active, enabling Bedrock client debounce even when Geyser runs on a separate proxy.
Concurrency Frameworks
Folia
- Plugin declares
folia-supported: trueinplugin.yml. - Uses region-aware scheduling via reflection:
getGlobalRegionScheduler(),getRegionScheduler(),getAsyncScheduler(). - Falls back to standard Bukkit scheduler when Folia is not present.
- Delayed block updates and shared-state access use Folia-aware region scheduling.
Other Plugins
DoubleDoors is event-driven and generally compatible with typical server stacks. If another plugin cancels interaction events before MONITOR handlers run, DoubleDoors will not process those cancelled events.
Practical Advice
- Keep only one plugin responsible for advanced multi-block door logic.
- If you stack multiple similar plugins, expect conflicts or race-like state overrides.
- Prefer explicit permission setup for user groups even if defaults already allow use.