Development and Releases
Local Build
Requirements:
- Java 25+
- Gradle
Build:
./gradlew build
Artifact:
- bukkit/build/libs/doubledoors-bukkit-<version>.jar
- velocity/build/libs/doubledoors-velocity-<version>.jar
Source Layout
- bukkit/src/main/java-common/me/szabee/doubledoors/bukkit
- bukkit/src/main/java-v26_2_x/me/szabee/doubledoors/bukkit/version
- core/src/main/java/me/szabee/doubledoors
- velocity/src/main/java/me/szabee/doubledoors/velocity
- bukkit/src/main/resources/config.yml
- bukkit/src/main/resources/plugin.yml
Coding Rules
- Java 25+ features are acceptable.
- Keep public methods documented.
- Avoid wildcard imports.
- Avoid direct block-state reads at MONITOR before scheduled delay.
Manual Test Focus
- Mirrored double door sync.
- Recursive gate/trapdoor components.
- Redstone-triggered state transitions.
- Villager open and close events.
- GriefPrevention claim boundary behavior.
- Per-player preference toggles and persistence.
Release Checklist
- Update version in
gradle.properties. - Update version in
bukkit/src/main/resources/plugin.yml. - Build with
./gradlew build. - Smoke-test on Paper 1.21.
- Create release notes under
releases/v<major>/<minor>/<patch>/RELEASE-NOTE.md. - Publish a GitHub release with both built artifacts:
bukkit/build/libs/doubledoors-bukkit-<version>.jarandvelocity/build/libs/doubledoors-velocity-<version>.jar.
Documentation Checklist
- Keep wiki configuration keys in sync with src/main/resources/config.yml.
- Keep command/permission docs in sync with
bukkit/src/main/resources/plugin.ymland command handler behavior. - Update troubleshooting page if behavior around recursive opening or compatibility changes.