A template for building PaperMC/Spigot Minecraft server plugins!
- Automated builds, testing, and release drafting
- Discord notifcations for snapshots and releases
- Probot: Stale
- Mark issues stale after 30 days
- Dependabot
- Update GitHub Actions workflows
- Update Gradle dependencies
- Bug report template
- Feature request template
- Shadowed plugin dependencies
- Checkstyle Google standard style check
- SpotBugs code analysis
- JUnit 5 unit tests
- Mockito for mocking dependencies in unit tests
- Integration tests against real cw-commons
/examplecommand via CommandAPI demonstrating subcommands, tab completion, and permissions- Example config loading and validation via cw-commons'
BukkitConfigManagerBuilder, backed by Jackson and Hibernate Validator - Example persistent per-player data storage via cw-commons'
BukkitDataStoreBuilder/Repository/PlayerDataManager, demonstrated by/example creepersKilled:CreeperKillListenerwrites to it on each creeper kill,CreepersKilledreads it back
- Sample plugin.yml with autofill name, version, and main class.
- Example config.yml
- Gradle build config
- Simple .gitignore for common Gradle files
In order to use this template for yourself, there are a few things that you will need to keep in mind.
- Extending the example code — add commands, subcommands, config fields, or persistent per-player data
- Customizing this template — the one-time checklist for forking this repo (placeholders, secrets, etc.)
- Releases & versioning — PaperMC compatibility, version format, and how to cut a release
- Agent instructions & skills — agent guidance, Claude Code support, and available skills
Thanks to Gradle, building locally is easy no matter what platform you're on. Simply run the following command:
./gradlew build
This build step will also run all checks and tests, making sure your code is clean.
Run ./gradlew test for isolated unit tests or ./gradlew integrationTest for tests that use
real cw-commons configuration and storage implementations. Integration-test files are created in
JUnit temporary directories and removed automatically.
JARs can be found in build/libs/.
See CONTRIBUTING.md.