132 lines
9.3 KiB
Markdown
132 lines
9.3 KiB
Markdown
---
|
||
type: Log
|
||
title: Spigot Base Design Log
|
||
description: Chronological record of material decisions affecting the Spigot Base design.
|
||
---
|
||
|
||
# Spigot Base Design Log
|
||
|
||
## 2026-08-09 — Initial progression design
|
||
|
||
- Base progression is sequential: Base I establishes a base, Base II provides navigation, Base III provides personal teleportation, and Base IV permits visitor teleportation.
|
||
- Every secondary progression path requires Base I.
|
||
- A base is cylindrical and begins with a 10-block radius and a vertical extent 25 blocks above and below its set Y coordinate.
|
||
- Only Survival-mode activity contributes progress; repeatedly placing and breaking blocks is permitted.
|
||
- Flight is limited to the base, includes a five-block horizontal warning buffer, and can be toggled by the player.
|
||
- Player-facing administration will initially use commands rather than an inventory UI.
|
||
- The build and release pipeline will follow the neighboring Trigger Spawn project pattern.
|
||
|
||
## 2026-08-09 — Implementation started
|
||
|
||
- Approved implementation begins with the tested Gradle/Spigot foundation, validated configuration, and durable player state.
|
||
- Feature work will proceed incrementally using tests before implementation where practical.
|
||
|
||
## 2026-08-09 — Core implementation checkpoint
|
||
|
||
- Implemented UUID-keyed YAML state, validated configuration, Base I–IV progression, base sizing, particle navigation, controlled base flight, personal and visitor teleportation, progress feedback, and initial administrative commands.
|
||
- Added Gradle, Spigot metadata, Gitea CI/release workflows, and project documentation based on Trigger Spawn.
|
||
- Verified the implementation with `./gradlew clean check jar`: 34 tests passed and the plugin JAR was produced successfully.
|
||
- User stories remain in progress pending live-server integration verification and completion of runtime administrative configuration editing.
|
||
|
||
## 2026-08-09 — Navigation preference fix
|
||
|
||
- Added explicit, idempotent `/basenavigation on` and `/basenavigation off` modes with autocomplete while retaining no-argument toggling.
|
||
- Preserved a disabled navigation preference during later grass-or-dirt progression instead of forcing navigation back on.
|
||
|
||
## 2026-08-09 — Initial release scope completed
|
||
|
||
- Added live, validated, persisted numeric configuration updates through `/baseadmin config`.
|
||
- Added administrative progress-counter updates, prerequisite-aware level changes, cooldown clearing, and cascading path resets.
|
||
- Made progression materials, visitor currency, boss-bar duration, particle count, and title timing configurable.
|
||
- Preserved unknown forward-compatible YAML fields for retained player records while continuing to reject invalid progression state.
|
||
- Completed and verified all approved user stories with the automated Gradle check lifecycle.
|
||
|
||
## 2026-08-10 — Player command aliases
|
||
|
||
- Added `/sethome` for `/setbase`, `/home` for `/base`, and `/visit` for `/gotobase`.
|
||
- Visitor autocomplete remains available for eligible offline bases through the `/visit` alias.
|
||
- Verified the aliases and plugin build with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-10 — Toggle command autocomplete
|
||
|
||
- Added explicit, idempotent `on` and `off` modes and autocomplete to base flight and visitor access while retaining no-argument toggling.
|
||
- Added `/homenavigation`, `/homeflight`, and `/homevisitors` aliases with the same autocomplete as their canonical commands.
|
||
- Generalized toggle preference resolution for navigation, flight, and visitor access.
|
||
- Verified the implementation with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-10 — Unified base settings command
|
||
|
||
- Replaced the separate progress, navigation, flight, and visitor commands with `/basesettings` and its `/homesettings` alias.
|
||
- Added nested autocomplete for status, Base IV upgrades, visitor access, navigation, flight, and progress boss-bar settings.
|
||
- Moved the Base IV purchase from `/base upgrade` to `/basesettings upgrade`, leaving `/base` and `/home` dedicated to personal teleportation.
|
||
- Preserved the full progression report as the default `/basesettings` response and as `/basesettings status`.
|
||
- Verified the breaking command restructure with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-10 — Administrative command autocomplete and reset safety
|
||
|
||
- Added `/homeadmin` as an alias for `/baseadmin` and replaced the administrative `progress` subcommand with `status`.
|
||
- Added permission-aware, context-sensitive autocomplete for subcommands, online and known offline players, paths, levels, counters, cooldown types, reset confirmation, and numeric configuration keys.
|
||
- Removed the unsafe unconfirmed base reset path; complete resets now require `reset <player> all confirm`.
|
||
- Tightened argument validation and replaced implementation-specific enum errors with player-facing usage guidance.
|
||
- Verified the administrative revision with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-10 — Base border visualization
|
||
|
||
- Added persisted, owner-only base border particles controlled by `/basesettings border enable|disable` with contextual autocomplete.
|
||
- Rendered a bounded nearby arc at the player's current height using the current base radius while respecting world and vertical bounds.
|
||
- Added border preference reporting to player and administrative status output and safe defaults for existing state files.
|
||
- Verified the feature with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-10 — Spawnable block overlay
|
||
|
||
- Added persistent progression for Survival-mode block placements anywhere, with existing in-base placement counts used as a safe migration minimum.
|
||
- Added `/basesettings spawnable enable|disable` after a configurable 250-placement unlock and reported its progress and preference in player and admin status output.
|
||
- Added admin controls for total placement progress, the unlock threshold, and each unlocked player's overlay preference.
|
||
- Added owner-only red particles for nearby dark spawning surfaces inside base bounds, using bounded incremental scanning and rendering budgets.
|
||
- Verified the feature with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-10 — Navigation visibility buffer
|
||
|
||
- Limited enabled base navigation particles to the base's world and positions more than 25 horizontal blocks beyond the current base border.
|
||
- Used the live size-tier radius so expansion and relocation immediately update the visibility threshold.
|
||
- Added exact-boundary and controller integration coverage.
|
||
- Verified the change with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-24 — Pocket Base mob-spawning control
|
||
|
||
- Disabled natural hostile and passive mob spawning by default in new and existing Pocket Bases without a saved preference.
|
||
- Added independent persisted owner settings through `/basesettings pocket mobs <hostile|passive> <enable|disable>`, contextual autocomplete, and status reporting.
|
||
- Migrated each legacy combined mob-spawning preference to both categories to preserve existing behavior.
|
||
- Reapplied both saved spawn flags when Pocket Base worlds load and restored both prior world settings when persistence fails.
|
||
- Verified the feature with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-24 — Relocatable Pocket Base return portals
|
||
|
||
- Allowed Pocket Base owners to activate a complete return portal frame with flint and steel anywhere inside their unlocked pocket boundary.
|
||
- Persisted one active return portal location while retaining the generated portal as the default for existing Pocket Bases.
|
||
- Made only the selected intact frame functional without removing old frame blocks, preserving the void-return safety fallback.
|
||
- Verified the feature with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-24 — Purchasable Pocket Base biomes
|
||
|
||
- Added `/basesettings pocket type <void|nether|overworld> <subtype>` with type-aware autocomplete and validation.
|
||
- Defaulted new and unconfigured Pocket Bases to `void/the_void` and persisted each owner's selected biome.
|
||
- Applied biome metadata across unlocked columns and new expansion rings without changing blocks, entities, inventories, portals, progression, or mob-spawning preferences.
|
||
- Added an atomic, configurable biome-change payment that defaults to 16 netherite blocks and restores the prior biome and payment on failure.
|
||
- Verified the feature with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-24 — Native base settings dialog
|
||
|
||
- Changed `/basesettings` and `/homesettings` with no arguments to open a native Minecraft dialog dashboard, with explicit `ui` subcommands providing the same behavior.
|
||
- Added progression summaries, current and locked setting states, toggles, Pocket Base controls, biome selection, and confirmations for Base IV, Pocket Base, and biome purchases.
|
||
- Retained the detailed chat report under `/basesettings status` and kept dialog actions routed through the existing validated command behavior.
|
||
- Added dialog routing, autocomplete, alias, non-player, generated-control, locked-state, and purchase-confirmation coverage.
|
||
- Verified the feature with `./gradlew clean check jar`.
|
||
|
||
## 2026-08-24 — Purpur dialog runtime compatibility
|
||
|
||
- Replaced the Spigot-only Bungee dialog types that were absent from production with Purpur's supported Paper dialog API.
|
||
- Compiled and tested against the exact Purpur 26.2 build 2618 API with Java 25, and updated both CI workflows to use Java 25.
|
||
- Preserved unit-test coverage through server-independent dialog specifications and adapted Bukkit test fixtures to Purpur's registry-aware API behavior.
|
||
- Verified 128 tests and the Java 25 plugin artifact with `./gradlew clean check jar`.
|