Double Doors
A Bukkit/Spigot plugin that opens mirrored double doors together, with low-latency syncing and optional compatibility handling for common server stacks.
Features
- Same-tick partner door sync (no scheduled 1-tick delay)
- Strict mirrored pair matching for doors:
- same door type
- same facing direction
- opposite hinge
- side-by-side only
- Optional recursive opening support for non-door openables (fence gates/trapdoors)
- Per-player toggle:
/doubledoors toggle - LuckPerms-friendly permission nodes
- GriefPrevention compatibility check for linked-door claim access
- Duplicate interaction debounce (helps packet duplication patterns seen with some Bedrock/Geyser flows)
- Translation support via JSON language files (built-in + custom)
Compatibility
Geyser / Floodgate
- Plugin declares soft-depends on
Geyser-Spigotandfloodgate. - A short duplicate-interaction debounce window is used to avoid rapid duplicate toggles on the same block.
LuckPerms
- Works through standard Bukkit permissions, so LuckPerms applies automatically.
- Use
doubledoors.useto allow/deny linked opening behavior.
GriefPrevention
- Plugin declares a soft-depend on
GriefPrevention. - When present, linked-door interaction is checked against claim build permission before toggling the partner door.
Commands
/doubledoors reload- reload config/doubledoors toggle- toggle behavior for yourself/doubledoors server-toggle- toggle behavior server-wide
Permissions
doubledoors.use(default:true)doubledoors.toggle(default:true)doubledoors.reload(default:op)doubledoors.server-toggle(default:op)
Config
src/main/resources/config.yml
enableRecursiveOpening(default:true)recursiveOpeningMaxBlocksDistance(default:10)enableDoors(default:true)enableFenceGates(default:true)enableTrapdoors(default:true)enableVillagerLinkedDoors(default:true)serverWideEnabled(default:true)language(default:en_US)
Language files:
- Built-in fallback file:
src/main/resources/lang/en_US.json - Runtime custom language folder:
plugins/DoubleDoors/lang/ - Set active language with
language: <code>inconfig.yml(example:language: de_DE) - Custom files are JSON objects of key/value strings and override built-in messages when present.
Build
Requirements:
- Java 21
- Maven
Build command:
mvn -DskipTests package
Output jar is generated under target/.
License
Licensed under the GNU General Public License v3.0.
See LICENSE.

