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.
105 lines
4.4 KiB
Markdown
105 lines
4.4 KiB
Markdown
# 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.
|