Files
dmg f011410b17
Release / release (push) Successful in 2m54s
CI / build (push) Successful in 1m2s
feat(commands): view and set online player heights
2026-09-06 20:05:41 -04:00

65 lines
4.9 KiB
Markdown

---
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 <name> [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 <name> [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 <value>` 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.