ci: add plugin build and release pipeline
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
# 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 <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.
|
||||
|
||||
## 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.
|
||||
Reference in New Issue
Block a user