Files
dmg 49627d58b5
Release / release (push) Successful in 5m35s
CI / build (push) Successful in 1m21s
feat(creeper-fear): migrate distribution to Java 25 and Purpur
BREAKING CHANGE: New releases require Java 25/Purpur 26.2 and use purpur-creeper-fear-<version>.jar. Runtime CreeperFear identity and existing SQLite progression data are retained, including the bundled driver. Replace the old JAR rather than installing both distributions.
2026-09-12 14:07:13 -04:00

105 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Purpur Creeper Fear
A Purpur 26.2 plugin that lets players earn six Creeper Aura ranks. Once unlocked, an aura prevents a creeper explosion within 25 blocks of the player from breaking blocks, whether or not the explosion hits the player. Players hit by the explosion receive rank-dependent damage.
## Requirements
- Purpur 26.2 build 2618
- Java 25
New repositories/checkouts/artifacts use `purpur-creeper-fear`; runtime `CreeperFear`, Java entrypoint/packages, commands/permissions and `plugins/CreeperFear/player-progress.sqlite3` are unchanged. The SQLite driver remains bundled. Replace the old JAR rather than installing both distributions. Old tags/assets are retained, and the v1.3.0 download was verified byte-for-byte after renaming. New releases no longer support Java 17.
## 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. Rank I unlocks at 25 points by default; subsequent ranks require 100 points each. Progress resets to zero when a rank is 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/purpur-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 <player>` | Inspect a known online or offline player | `creeperfear.admin.inspect` |
| `/creeperaura set <player> <progress>` | Set current-tier progress | `creeperfear.admin.modify` |
| `/creeperaura add <player> <amount>` | Adjust current-tier progress | `creeperfear.admin.modify` |
| `/creeperaura rank <player> <rank>` | Set rank and reset tier progress | `creeperfear.admin.modify` |
| `/creeperaura threshold <rank> <points>` | 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: 25
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 [SoMC OKF wiki](https://git.garvis.dev/dmg/somc-okf/src/branch/main/projects/purpur-creeper-fear/index.md) contains the architecture and completed user stories.