Files
spigot-base/design/log.md
T

11 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 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.

2026-08-25 — Static dialog command actions

  • Replaced macro command templates with static run-command actions for fixed dialog buttons.
  • Added regression coverage for the generated run-command action and its unchanged command payload.
  • Verified /basesettings opens without command exceptions on a local Purpur 26.2 build 2618 server.
  • Verified the plugin artifact with ./gradlew clean check jar.

2026-08-24 — Pocket Base mob portal travel

  • Added five-tick collision scanning that transports non-player living mobs through active Pocket Base entrance and return portals.
  • Reused safe player destinations and server-spawn fallback behavior while excluding items, projectiles, vehicles, and other non-living entities.
  • Applied the existing two-second portal cooldown to mobs to prevent immediate repeated transport.
  • Verified the feature and Java 25 plugin artifact with ./gradlew clean check jar.

2026-08-28 — Safe Pocket Base fall returns

  • Cleared accumulated fall distance whenever portal or void-return travel teleports an entity, preventing carried-over fall damage at the destination.
  • Added regression coverage for players falling out of a Pocket Base and returning to the server spawn.
  • Verified the fix and plugin artifact with ./gradlew clean check jar.

2026-08-28 — Raid-earned Pocket Base flight

  • Made a successful raid victory by the owner inside their own Pocket Base permanently unlock owner-only Survival flight.
  • Limited Pocket Base flight to its expanding horizontal boundary plus a 16-block warning buffer while allowing the world's full build height.
  • Persisted unlocks with safe locked defaults for existing records and exposed progress through chat status and the native settings dialog.
  • Verified 140 tests and the Java 25 plugin artifact with ./gradlew clean check jar.