Files
spigot-base/design/log.md
T
dmg 6ea5bc16f4
Release / release (push) Successful in 2m54s
CI / build (push) Successful in 1m16s
feat(pocket-base): add purchasable biome changes
2026-08-24 10:32:32 -04:00

7.9 KiB
Raw Blame History

type, title, description
type title description
Log Spigot Base Design Log 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 IIV 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 the persisted owner setting /basesettings pocket mobs enable|disable, contextual autocomplete, and status reporting.
  • Reapplied saved spawn flags when Pocket Base worlds load and restored the prior world setting 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.