# Spigot Creeper Fear A Spigot 26.2 plugin that lets players earn six Creeper Aura ranks. Once unlocked, an aura prevents creeper explosions that hit the player from breaking blocks, trading that protection for rank-dependent player damage. ## Requirements - Spigot 26.2 - Java 17 or newer ## Progression Players earn one current-tier point when they kill a creeper directly, through a projectile, or through an owned tameable. A self-destructing creeper also awards one point to every player its explosion hits. Each tier defaults to 100 points and resets progress to zero when unlocked. | Rank | Creeper damage | Block damage | | --- | ---: | --- | | Locked | 1× | Normal | | I | 3× | Prevented | | II | 2× | Prevented | | III | 1.5× | Prevented | | IV | 1× | Prevented | | V | 0.5× | Prevented | | VI | Cancelled | Prevented | Progress is stored by player UUID in `plugins/CreeperFear/player-progress.sqlite3`. Database work runs away from the server thread. After each point, a temporary boss bar shows current-tier progress. Unlocking a rank displays a full-screen title. Rank VI players no longer receive a progress bar. ## Build and install ```bash ./gradlew clean check jar cp build/libs/spigot-creeper-fear-0.1.0-SNAPSHOT.jar /path/to/server/plugins/ ``` Restart the server after copying the JAR. The plugin creates its configuration and SQLite database under `plugins/CreeperFear/`. ## Commands | Command | Description | Permission | | --- | --- | --- | | `/creeperaura progress` | Show personal progress | `creeperfear.progress` | | `/creeperaura progress ` | Inspect a known online or offline player | `creeperfear.admin.inspect` | | `/creeperaura set ` | Set current-tier progress | `creeperfear.admin.modify` | | `/creeperaura add ` | Adjust current-tier progress | `creeperfear.admin.modify` | | `/creeperaura rank ` | Set rank and reset tier progress | `creeperfear.admin.modify` | | `/creeperaura threshold ` | Persist a rank requirement | `creeperfear.admin.configure` | | `/creeperaura reload` | Reload validated configuration | `creeperfear.admin.configure` | The personal progress permission defaults to everyone. Administrative permissions default to server operators. Administrative changes are recorded in the server log. Commands provide permission-aware tab completion for subcommands, online player names, and valid ranks. Known offline players remain valid command targets but are not suggested. ## Configuration ```yaml progression: requirements: I: 100 II: 100 III: 100 IV: 100 V: 100 VI: 100 aura: damage-multipliers: I: 3.0 II: 2.0 III: 1.5 IV: 1.0 V: 0.5 VI: 0.0 feedback: progress-bar-seconds: 5 rank-up-title: "Creeper Aura %rank%" rank-up-subtitle: "Unlocked!" ``` Requirements must be positive integers. Multipliers must be finite and non-negative. Invalid reloads are rejected while the last valid runtime settings remain active. Requirement changes preserve current rank and tier progress; a subsequent qualifying point can unlock at most one rank. ## Releases Gitea Actions builds and tests every push and pull request and uploads a development JAR. Pull requests also validate conventional commit messages. Pushes to `main` run semantic-release: - `fix:` creates a patch release; - `feat:` creates a minor release; - a breaking-change footer or `!` creates a major release. A successful release attaches a versioned JAR to the corresponding Gitea release. The repository must define a `RELEASE_TOKEN` secret with repository contents write permission. For a local versioned artifact: ```bash ./gradlew clean check jar -PreleaseVersion=1.2.3 ``` ## Design The [OKF design bundle](design/index.md) contains the architecture and completed user stories.