--- type: Log title: Spigot Heights Design Log description: Chronological record of material decisions affecting Spigot Heights. --- # Spigot Heights Design Log ## 2026-09-07T00:00:54Z — Player-height commands completed - Added `/heights player [scale]` for exact online-player lookup, base/effective scale reporting, immediate saved changes, and permission-protected name/size completion. - Command-set scales honor live limits and the exact `1.0` restoration exception. The player-state store now publishes cached changes only after successful persistence, and commands save before applying scale. - Verified `./gradlew clean check jar`: all 33 tests passed, including permissions, input validation, completions, scale reporting, reload, and failed-save protection. Inspected Bukkit lookup/attribute and join/respawn wiring; live-server/client verification remains unperformed. - Updated README and completed US-008 and related US-004/US-007 criteria. ## 2026-09-06T23:54:36Z — Player-height commands approved and started - Approved [US-008](user-stories/us-008-manage-player-height.md): `/heights player [scale]` for online players, admin permissions, tab completion, and UUID persistence. - Values follow current min/max bounds with the exact `1.0` exception; failed saves must not change cached or live player height. ## 2026-09-06T23:51:22Z — Settings commands completed - Added `/heights settings` and `/heights set min|max ` with `spigotheights.admin` (default op), generic sender support, and prefix-filtered tab completion of valid example values. - Validated changes are persisted through temporary-file replacement (atomic where supported) before activating shared live settings. Unrelated YAML values are preserved; malformed files and write failures do not activate new limits. - Updated gameplay listeners to read current settings without immediately resizing players or resetting launcher cooldowns. - Verified `./gradlew clean check jar`: all 26 tests passed. Inspected command registration and event wiring; live-server/client verification remains unperformed. Completed US-007 and the related US-004 change. ## 2026-09-06T23:45:28Z — Settings commands approved and started - Approved [US-007](user-stories/us-007-manage-settings-commands.md): permission-protected min/max commands, tab completion, validation, and persistent live updates. - Existing players are not resized immediately; subsequent gameplay reads current limits. The exact `1.0` restoration exception remains intact. ## 2026-09-06T23:41:16Z — Restoration completed - Added the white Potion of Restoration with persistent identity and the approved Sugar upgrade recipe. - Consumption restores exact scale `1.0` through the existing report/save path; saved `1.0` bypasses configured-range clamping on join and respawn. - Verified `./gradlew clean check jar`: all 17 tests passed, including restoration, persistence reload, range exceptions, recipe shape, identity, and existing potion regression coverage. - Inspected Bukkit recipe/metadata and event wiring; live-server gameplay verification remains unperformed. Updated the README and completed US-006 and the related US-004 change. ## 2026-09-06T23:37:19Z — Restoration approved and implementation started - Approved [US-006](user-stories/us-006-restore-default-stature.md): a Sugar-based upgrade of Shifting Stature restores exact scale `1.0`. - Approved an exception to saved-scale clamping in [US-004](user-stories/us-004-configure-and-persist.md) so restoration survives reconnects and respawns even outside configured limits. ## 2026-09-04 — Initial design approved - Player scale defaults to a configurable range of `0.4` through `2.0`. - A moderate recipe creates a random stature potion; more expensive upgrades create targeted growth and diminution potions. - Random stature is selected uniformly in configurable `0.1` increments. - Players strictly below scale `0.5` can be launched through a dispenser fed by the hopper beneath them. - Launcher speed defaults to 1.5 blocks per tick with a 20-tick cooldown and safe-exit checks. - The project follows the neighboring Spigot Base Java 25, Purpur, Gradle, OKF, CI, and release conventions. ## 2026-09-04 — Implementation started - Approved implementation began with user stories, tests, and the Gradle/Purpur foundation. ## 2026-09-04 — Initial release scope completed - Implemented authenticated random, growth, and diminution potions with approved recipes and durable UUID-keyed player scale. - Added validated stature and launcher configuration with safe clamping to Minecraft's scale range. - Implemented cooldown-protected hopper-to-dispenser launch tubes for tiny players with six-axis launch support and empty-exit checks. - Added the Java 25 Purpur build, automated tests, Gitea CI and semantic-release workflows, README, and project-specific agent guidance. - Verified the implementation with `./gradlew clean check jar` and created the public `dmg/spigot-heights` Gitea repository.