--- type: Log title: Spigot Harvest Design Log description: Chronological record of material decisions affecting the Spigot Harvest design. --- # Spigot Harvest Design Log ## 2026-08-14 — Initial harvesting progression design - Initial crop support includes wheat, carrots, potatoes, and beetroot, with an independent Level 0–X progression path for each crop. - Normal crop breaking triggers auto-harvest, while sneaking bypasses auto-harvest without preventing the manually broken mature crop from contributing progress. - Connected crops may be adjacent in any of the eight horizontal directions and differ by no more than one Y level for each connection. - The total operation cap includes the triggering crop and doubles from 4 at Level I through 2,048 at Level X. - Level requirements are incremental rather than cumulative and are based on the preceding level's harvest cap: a multiplier of 100 through Level V, 200 for Levels VI–VIII, 300 for Level IX, and 400 for Level X. - Automated harvests contribute progression, execute at one crop per server tick by default, and permit only one active auto-harvest operation per player. - Qualifying progress displays a player-toggleable boss bar that is enabled by default, persists its preference, and remains visible for five seconds after its latest update by default. - Harvested crops are automatically replanted, remaining drops go to the player's inventory, and inventory overflow drops near the player. - The project and delivery pipeline will follow the neighboring Spigot Base project where applicable. ## 2026-08-14 — Build and release foundation completed - Added the Java 17 Gradle/Spigot foundation, strict compiler linting, JUnit 5 lifecycle, plugin metadata, and initial documentation. - Added Gitea CI and semantic-release workflows with development and versioned JAR artifacts. - Verified the foundation with `./gradlew clean check jar`. ## 2026-08-14 — Initial plugin scope completed - Implemented independent Level 0–X progression for wheat, carrots, potatoes, and beetroot with validated configuration and atomic UUID-keyed YAML state. - Implemented deterministic connected-crop traversal, one-operation-per-player scheduling, one-crop-per-tick harvesting, protection-event checks, automatic replanting, inventory delivery, and overflow drops. - Added player status and boss-bar controls, five-second idle progress presentation, unlock titles, administrative inspection and mutations, offline-player lookup, and safe confirmed resets. - Developed the progression, traversal, drops, persistence, settings, status, and administration behavior through failing-first automated tests. ## 2026-08-14 — Triggering crop replant fix - Changed auto-harvest to process and replant the manually broken triggering crop immediately before animating connected crops. - Kept the triggering crop inside the level cap, so Level I processes the trigger and at most three connected crops. - Added regression coverage for triggering-crop execution, replanting, and operation-cap accounting. - Verified the fix with `./gradlew clean check jar`.