Files
dmg c701f75713
CI / build (pull_request) Successful in 1m20s
CI / build (push) Successful in 1m53s
feat(platform): support Purpur 26.3
2026-10-16 23:47:17 -04:00

27 lines
2.5 KiB
Markdown

# Purpur Potato
A Java 25 plugin for Purpur 26.3 build 2651. Right-click a poisonous potato to throw it with native snowball flight and a potato visual. Each successful launch costs one potato (including Creative), has a 20-tick cooldown, and deals one health point of base damage without poison. Native damage modifiers, PvP rules and protection cancellations remain authoritative. Projectiles expire after 100 ticks; misses are not refunded.
`/potato [help]` explains the mechanic to players and console. `purpurpotato.help` defaults to true. No recipe, unlock, persistent data or runtime credential is required.
## Build
```sh
./gradlew clean check jar
./gradlew clean check jar -PreleaseVersion=1.2.3
```
Gradle 9.6.1 selects Java 25 and compiles against Purpur API `26.3.build.2651-stable`. Full checks include Java tests, mandatory non-listening native tests against the checksum-pinned `purpur-26.3-2651.jar` runtime, and TypeScript release-tool tests (`npm ci` requires Node 20+). Native preparation runs Paperclip **patch-only** in a build-specific directory: it does not start a server, listen on a port, access production, or reuse an extracted runtime from another supported build. Build downloads require network access. Generated runtime files stay under ignored `build/`.
Outputs: `build/libs/purpur-potato-<version>.jar`. Server and test dependencies are not bundled. Do not deploy snapshot workflow artifacts.
## Release boundary
CI checks pushes and pull requests; main releases verify snapshot and versioned builds before publishing a draft's exact JAR. Git uses a repository-scoped, memory-only credential helper; uploads use in-process HTTP authentication and reject redirects. Never pass tokens in command arguments or remote URLs, print environment variables, or enable credential tracing.
`RELEASE_TOKEN` requires separately approved protected-file/stdin provisioning **before the first main push**. `scripts/secret-input.ts` only validates metadata and constructs an input plan; it never provisions or reads secret bytes. Recheck permissions and obtain approval before executing any upload. Local tests are not proof of CI or publication. Source publication is not deployment approval.
## Canonical documentation
The shared [SoMC wiki](https://git.garvis.dev/dmg/somc-okf) contains the canonical [project guidance](https://git.garvis.dev/dmg/somc-okf/src/branch/main/projects/purpur-potato/index.md), stories and operational processes. Access may require authorization. No private wiki content is mirrored here.