2.5 KiB
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
./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 contains the canonical project guidance, stories and operational processes. Access may require authorization. No private wiki content is mirrored here.