76 lines
4.4 KiB
Markdown
76 lines
4.4 KiB
Markdown
# Spigot Base
|
|
|
|
A Purpur 26.2 plugin providing progression-gated player bases and quality-of-life unlocks.
|
|
|
|
Players begin by breaking Survival-mode grass blocks or dirt. The progression paths provide a persistent base, navigation particles, expanding base bounds, controlled flight, personal teleportation, and visitor teleportation.
|
|
|
|
The approved behavior is specified in the [OKF design bundle](design/index.md).
|
|
|
|
## Requirements
|
|
|
|
- Purpur 26.2 build 2618
|
|
- Java 25 or newer
|
|
|
|
## Build
|
|
|
|
```bash
|
|
./gradlew clean check jar
|
|
```
|
|
|
|
The plugin JAR is written to `build/libs/`.
|
|
|
|
## Player commands
|
|
|
|
```text
|
|
/setbase (alias: /sethome)
|
|
/base (alias: /home)
|
|
/gotobase <player> (alias: /visit <player>)
|
|
/basesettings (alias: /homesettings)
|
|
/basesettings ui
|
|
/basesettings status
|
|
/basesettings upgrade
|
|
/basesettings pocket upgrade
|
|
/basesettings pocket mobs <hostile|passive> <enable|disable>
|
|
/basesettings pocket type <void|nether|overworld> <subtype>
|
|
/basesettings visitors <allowed|blocked>
|
|
/basesettings navigation <enable|disable>
|
|
/basesettings flight <enable|disable>
|
|
/basesettings border <enable|disable>
|
|
/basesettings spawnable <enable|disable>
|
|
/basesettings bossbar <enable|disable>
|
|
```
|
|
|
|
`/basesettings` and `/basesettings ui` open Minecraft's native dialog dashboard. The dashboard summarizes Base and Pocket Base progression, provides unlocked setting controls and purchase confirmations, and marks unavailable controls as locked. `/basesettings status` retains the detailed chat report.
|
|
|
|
Navigation particles appear only in the base's world and when the player is more than 25 blocks beyond the current base border.
|
|
|
|
After 250 Survival-mode block placements anywhere by default, the spawnable overlay can mark nearby dark hostile-mob spawning surfaces inside the player's base with owner-only red particles. The threshold is configurable.
|
|
|
|
`/base` has a stationary warm-up. Looking around is allowed, while movement between blocks, damage, teleportation, world changes, death, logout, and conflicting teleport commands cancel it without consuming the cooldown.
|
|
|
|
Base IV owners can purchase and expand a persistent Pocket Base with `/basesettings pocket upgrade`. Activating a complete diamond-block portal frame inside the normal base with flint and steel opens one public entrance to the owner's grass platform in a private void world. Players and non-player living mobs can travel through the entrance and active return portal; items, projectiles, and vehicles are not transported. The owner can move the return portal by building and igniting another complete frame inside the unlocked Pocket Base boundary; only the newly activated return portal remains functional. Natural hostile and passive mob spawning is disabled by default. Owners can control each category independently with `/basesettings pocket mobs <hostile|passive> <enable|disable>`.
|
|
|
|
Owners can change biome metadata without altering Pocket Base blocks, entities, inventories, or portals by using `/basesettings pocket type <void|nether|overworld> <subtype>`. Void uses `the_void`; Nether and Overworld accept their compatible vanilla biome names, such as `crimson_forest` or `plains`. Each change defaults to 16 netherite blocks, is configurable, and affects applicable natural mob selection when spawning is enabled. The Pocket Base remains a void-generated normal-environment world; dimension-specific mechanics do not change.
|
|
|
|
## Administration
|
|
|
|
The `spigotbase.admin` permission is granted to server operators by default. `/homeadmin` aliases `/baseadmin`.
|
|
|
|
```text
|
|
/baseadmin status <player>
|
|
/baseadmin setlevel <player> <base|size|flight|warmup|cooldown> <level>
|
|
/baseadmin setprogress <player> <grass_dirt|stone|deepslate|obsidian|placements|total_placements|base_breaks> <amount>
|
|
/baseadmin setsetting <player> spawnable <enable|disable>
|
|
/baseadmin config <numeric-key> <value>
|
|
# e.g. /baseadmin config spawnable-overlay-unlock-placements 250
|
|
/baseadmin clearcooldown <player> [personal|visitor|all]
|
|
/baseadmin reset <player> <size|flight|warmup|cooldown>
|
|
/baseadmin reset <player> all confirm
|
|
```
|
|
|
|
Default thresholds and durations are documented in `src/main/resources/config.yml`. Durable UUID-keyed state is stored in `plugins/SpigotBase/state.yml` using atomic replacement where supported.
|
|
|
|
## Releases
|
|
|
|
Gitea Actions checks pushes and pull requests and stores a development JAR. Pull requests validate conventional commits. Main-branch conventional commits drive semantic releases when the repository defines a `RELEASE_TOKEN` with contents-write permission.
|