mvn -q -DskipTests compile
mvn -q test
mvn -B verify
mvn -B -DskipTests checkstyle:check
mvn -B package- Create a branch from
main. - Make focused changes.
- Run compile + tests locally.
- Run
verifyandcheckstylebefore opening a PR. - Open a pull request using the repository template.
src/main/java/nl/hauntedmc/dataprovider/api: public API contractssrc/main/java/nl/hauntedmc/dataprovider/internal: registry/factory/config internalssrc/main/java/nl/hauntedmc/dataprovider/database: backend implementationssrc/main/java/nl/hauntedmc/dataprovider/logging: backend-agnostic logging contracts + adapterssrc/main/java/nl/hauntedmc/dataprovider/platform/internal: shared platform lifecycle + command behaviorsrc/main/java/nl/hauntedmc/dataprovider/platform: Bukkit/Velocity adapterssrc/test/java: unit tests by package
- Prefer typed APIs (
registerDatabaseAs,registerDataAccess) over manual casting. - Keep connection registration in startup lifecycle paths, not request hot paths.
- Handle external IO failures as non-fatal where possible and log actionable context.
- Keep platform-specific integration (
platform.bukkit,platform.velocity) thin and isolated. - Put cross-platform wrapper behavior in
platform.internalbefore adding platform-local duplication. - Avoid leaking plugin context across module boundaries.
- Plugin starts cleanly on both Velocity and Bukkit/Paper.
- DB config defaults generate as expected.
- Register/unregister lifecycle leaves no leaked connections.
- Messaging subscriptions are unsubscribed during shutdown.