dmg 0183d4ff27
Release / release (push) Successful in 1m39s
CI / build (push) Successful in 57s
feat(spawn): support Purpur 26.3
Closes OpenProject #417 after required checks and verified local acceptance.
2026-10-17 04:13:14 +00:00
2026-10-17 00:11:07 -04:00
2026-08-08 13:10:04 -04:00
2026-10-17 00:11:07 -04:00

Purpur Trigger Spawn

A Purpur 26.3 plugin providing progression-gated, safe teleportation to each world's spawn area.

Players unlock /spawn by killing a Warden, Ender Dragon, or Wither after the plugin is installed. Their first, second, and third unique kills give default cooldowns of 8 hours, 4 hours, and 1 hour respectively. Each new unique kill clears the current cooldown immediately; repeated kills of the same boss do not count.

/spawn uses real elapsed cooldown time, including time offline. An accepted request displays a three-second countdown. Walking to another block, jumping, falling, teleporting, changing worlds, or disconnecting cancels it; looking around does not. The plugin samples a safe destination in the current world's circular spawn area, and failures do not consume the cooldown.

The behavior under development is specified in the SoMC OKF wiki.

Requirements

  • Purpur 26.3 build 2651
  • Java 25

The automated native lifecycle boundary downloads that exact runtime and accepts it only with SHA-256 0677c1febecfbc2e5b0a7f76abd647b70a1f38d3cbdf3dd6a82e401b4262a598.

Repository, checkout and new artifacts use purpur-trigger-spawn. Runtime TriggerSpawn, Java entrypoint/packages, plugins/TriggerSpawn/, commands/permissions, boss progression, cooldowns and world spawn settings remain unchanged. Replace the old JAR rather than installing both distributions. Old tags/assets remain available; new releases no longer support Java 17.

Build

./gradlew clean check jar

The plugin JAR is written to build/libs/purpur-trigger-spawn-<version>.jar. check includes nativeLifecycleTest: it checksum-verifies Purpur 26.3 build 2651, prepares the runtime in Paperclip patch-only mode, and loads, enables, and disables the packaged plugin through Purpur's native JavaPlugin lifecycle. The isolated test verifies command/listener wiring, retained configuration and YAML state without starting a listening server, accepting the EULA, or creating a world. Scheduler, teleport, safe-location, world-border, persistence, metadata, bytecode, and JAR exclusion regressions run alongside that boundary; this is automated compatibility evidence, not a live-server or deployment claim.

On first startup, the plugin creates plugins/TriggerSpawn/config.yml. Its cooldown defaults are:

cooldowns:
  one-kill-seconds: 28800
  two-kill-seconds: 14400
  three-kill-seconds: 3600

Durable player and per-world state is stored in plugins/TriggerSpawn/state.yml.

Each world initially uses its native spawn and a 20-block circular radius. An operator can configure the current world with:

/spawnadmin set
/spawnadmin distance <blocks>
/spawnadmin info
/spawnadmin grant <player> <duration>
/spawnadmin remove <player>
/spawnadmin access [page]
/spawnadmin ban <player>
/spawnadmin unban <player>
/spawnadmin bans [page]

Grant durations support friendly units and combinations such as 30m, 2h, 1d, or 1h30m.

For a local versioned build:

./gradlew clean check jar -PreleaseVersion=1.2.3

Releases

Gitea Actions checks every push and pull request and stores a development JAR as a workflow artifact. Pull requests also validate conventional commits.

Pushes to main run semantic-release. A release-causing conventional commit builds a versioned JAR and attaches it to the corresponding public Gitea release. The repository must define a RELEASE_TOKEN secret with repository contents write permission.

S
Description
Spigot 26.2 plugin providing progression-gated safe spawn teleportation
Readme
207 KiB
0 Stars 1 Watchers 0 Forks
v2.1.0
Latest
2026-10-17 04:13:14 +00:00
Languages
Java 100%