33 lines
1.3 KiB
Markdown
33 lines
1.3 KiB
Markdown
# Contributing
|
|
|
|
## Development Setup
|
|
|
|
Use Java 25 or newer. The Gradle wrapper downloads Gradle 9.8; dependencies are declared in `build.gradle` and resolved from Maven Central, PaperMC, and EngineHub.
|
|
|
|
```sh
|
|
./gradlew build
|
|
```
|
|
|
|
The standard build runs JUnit 5 tests without starting Minecraft. Tests use Mockito for Bukkit and external-plugin boundaries. Keep domain and configuration behavior testable without a running server.
|
|
|
|
## Live Server Tests
|
|
|
|
Live tests are opt-in and run separately from `build`:
|
|
|
|
```sh
|
|
METROPOLIS_RCON_HOST=127.0.0.1 \
|
|
METROPOLIS_RCON_PORT=25575 \
|
|
METROPOLIS_RCON_PASSWORD=... \
|
|
METROPOLIS_SERVER_DIR=/path/to/server \
|
|
./gradlew integrationTest
|
|
```
|
|
|
|
Use a disposable or backed-up Paper server with compatible WorldGuard and WorldEdit plugin jars installed. Keep RCON local, use a temporary password, and restore the server after tests that modify regions or worlds.
|
|
|
|
## Pull Requests
|
|
|
|
- Keep changes focused and include tests for behavior changes.
|
|
- Run `./gradlew build` before submitting.
|
|
- Run `integrationTest` only when changing behavior that requires Paper or the external plugins; do not add it to the default build.
|
|
- Update `README.md` and project descriptions when user-facing setup, commands, or dependencies change.
|
|
- Keep generated build output, server data, credentials, and local `.env` files out of commits. |