Files
spigot-tree-feller/design/log.md
T

2.6 KiB

Tree Feller Design Log

2026-08-11

Initial tree-felling design

  • Players earn automatic felling separately for each supported tree species by manually mining qualifying tree blocks in Survival with an axe.
  • Each species defaults to a 100-block unlock threshold; lowered thresholds are evaluated on the player's next qualifying block, while earned unlocks are permanent unless an administrator resets them.
  • Supported species cover Spigot 26.2 overworld trees, crimson and warped fungi, and giant red and brown mushrooms; bamboo is excluded.
  • The prior ../yetanothertreefeller/ search strategy informs detection: connected trunk blocks are searched laterally and upward, never downward, and associated foliage or caps establish that the structure is a tree. The new implementation will use bounded iteration rather than unbounded recursion.
  • Unlocked trees break from bottom to top, one trunk block every two ticks by default. Leaves and caps are not automatically removed.
  • Sneaking bypasses automatic felling. Players may also persistently enable or disable it with /treefeller enabled <on|off>.
  • The player's latest felling may be undone for six minutes by default. Undo preflights the complete operation, reclaims all required replacement materials from inventory, and reports shortages without making partial changes.
  • Unlock progress is shown through /treefeller unlocked and a temporary boss bar. Unlocks produce a title and a chat explanation of sneaking and undo.
  • Player commands use /treefeller; administration uses the separate /treefelleradmin command and treefeller.admin permission.
  • Administrators can inspect players, grant or reset species, lock all automatic felling for a player, and persistently change species thresholds. Administrative locking does not stop manual progress.
  • Build and release conventions follow ../spigot-getgud/, including Spigot API 26.2-R0.1-SNAPSHOT, Java 17, Gradle, strict compilation, tests, and Gitea automation.

Implementation started

  • Began US-009 by establishing the test-first Gradle and plugin-metadata foundation.
  • US-009 remains in progress until all stories and final delivery behavior have been verified.

Build foundation checkpoint

  • Added the Java 17 Gradle project, Spigot 26.2 dependency, strict compilation, JUnit lifecycle, plugin metadata, wrapper, and Gitea CI and semantic-release workflows.
  • Verified separate player and administrative command metadata through a failing-then-passing test.
  • Verified the local foundation with ./gradlew clean check jar; remote workflow and release criteria remain pending final delivery verification.