Files
dmg f615600818
Release / release (push) Successful in 6m49s
CI / build (push) Successful in 2m45s
feat(harvest): migrate distribution to Java 25 and Purpur
BREAKING CHANGE: New releases require Java 25/Purpur 26.2 and use purpur-harvest-<version>.jar. Runtime SpigotHarvest identity, data folders and crop progression remain unchanged. Replace the old JAR instead of installing both distributions.
2026-09-12 13:56:35 -04:00

51 lines
2.3 KiB
Markdown

# Purpur Harvest
A Purpur 26.2 plugin providing progression-gated, connected crop harvesting and automatic replanting.
The approved behavior is specified in the [SoMC OKF wiki](https://git.garvis.dev/dmg/somc-okf/src/branch/main/projects/purpur-harvest/index.md).
## Requirements
- Purpur 26.2 build 2618
- Java 25
## Distribution migration
New repositories/checkouts/artifacts use `purpur-harvest`; runtime `SpigotHarvest`, Java entrypoints/packages, data folders, commands, permissions and crop progression remain unchanged. New releases no longer support Java 17. Replace the old JAR rather than installing both distributions. Historical tags and `spigot-harvest-*` assets are retained; the prior v1.0.1 download was checked for identical bytes after renaming.
## Build
```bash
./gradlew clean check jar
```
The plugin JAR is written to `build/libs/`. `check` includes `nativeHarvestTest`: it downloads SHA-256-verified Purpur 2618 under `build/harvest-runtime/`, loads native registry/service providers, and runs real item-stack/drop/replant regressions without starting a listening server. Those tests are not replaced by item mocks or excluded from verification.
## Commands
```text
/harvest
/harvest status [wheat|carrot|potato|beetroot]
/harvest bossbar <enable|disable>
```
The progress boss bar is enabled by default and remains visible for five seconds after its latest update. Sneaking while breaking a mature crop bypasses auto-harvest while still earning progress.
## Administration
The `spigotharvest.admin` permission is granted to server operators by default.
```text
/harvestadmin status <player> [crop]
/harvestadmin setlevel <player> <crop> <0|I|II|III|IV|V|VI|VII|VIII|IX|X>
/harvestadmin setprogress <player> <crop> <amount>
/harvestadmin reset <player> <crop>
/harvestadmin reset <player> all confirm
```
Validated progression and presentation defaults are documented in `src/main/resources/config.yml`. UUID-keyed player state is stored in `plugins/SpigotHarvest/state.yml` using atomic replacement where supported.
## Releases
Gitea Actions checks pushes and pull requests and stores a development JAR. Pull requests validate conventional commits. Main-branch conventional commits drive semantic releases when the repository defines a `RELEASE_TOKEN` with contents-write permission.