docs(build): complete Tree Feller delivery
Release / release (push) Successful in 4m14s
CI / build (push) Successful in 57s

This commit is contained in:
dmg
2026-08-11 17:39:14 -04:00
parent d57f8cc6dd
commit 5d1577175f
3 changed files with 79 additions and 8 deletions
+64
View File
@@ -0,0 +1,64 @@
# Tree Feller
Tree Feller is a Spigot 26.2 plugin that lets Survival players earn animated automatic felling independently for each vanilla tree family.
The approved behavior and implementation record are in the [OKF design bundle](design/index.md).
## Requirements
- Spigot 26.2
- Java 17 or newer
## Build
```bash
./gradlew clean check jar
```
The plugin JAR is written to `build/libs/`.
## Player commands
```text
/treefeller enabled [on|off]
/treefeller unlocked
/treefeller undo
```
Sneaking while breaking the initiating trunk block bypasses automatic felling. Undo restores only the latest eligible felling, requires all replacement trunk materials in the player's inventory, and defaults to a six-minute window.
## Administrative commands
```text
/treefelleradmin player <name|uuid> status
/treefelleradmin player <name|uuid> tree <type> <grant|reset>
/treefelleradmin player <name|uuid> locked <on|off>
/treefelleradmin threshold <type> <blocks>
```
Administrative commands require `treefeller.admin`, granted to server operators by default. Player commands and undo use separate non-administrative permissions.
## Supported species
- Oak, spruce, birch, jungle, acacia, and dark oak
- Mangrove, cherry, and pale oak
- Crimson and warped fungi
- Giant red and brown mushrooms
Azalea-grown logs count as oak. Bamboo is not treated as a tree.
## Configuration and state
`config.yml` controls per-species thresholds, animation delay, bounded search limits, boss-bar presentation, undo duration, unlock titles, and messages. Defaults include 100 manually mined qualifying blocks per species, two ticks between animated blocks, five seconds of progress visibility, and six minutes for undo.
Player preferences, administrative locks, progress, unlocks, and known names are stored by UUID in `players.yml`. Undo records are intentionally runtime-only and do not survive restart.
## Safety and compatibility
Tree detection searches matching natural trunk blocks laterally and upward, never below the initiating chop, and requires corresponding foliage or caps. Search bounds prevent unbounded traversal. Leaves, caps, roots, vines, and decorations are not automatically broken.
Additional trunk blocks use Spigot's `Player.breakBlock` path so block-break cancellation, drops, experience, enchantments, and axe durability remain authoritative. Protection plugins should cancel `BlockBreakEvent` normally. A cancelled additional break stops the remaining felling.
## Releases
Gitea Actions checks pushes and pull requests, validates pull-request conventional commits, and stores development JARs. Conventional commits on `main` drive semantic releases after the repository defines a contents-write `RELEASE_TOKEN`.
+7
View File
@@ -2,6 +2,13 @@
## 2026-08-11 ## 2026-08-11
### US-009 build and release completed
- Added maintainer documentation for requirements, builds, commands, configuration, supported species, persistence, safety, compatibility, and releases.
- Verified workflow YAML, pull-request conventional-commit validation, development artifacts, semantic versioning, and Gitea release attachment configuration against `../spigot-getgud/`.
- Verified the complete strict test lifecycle and a release-version build with `./gradlew clean check jar -PreleaseVersion=1.2.3`, producing `build/libs/tree-feller-1.2.3.jar`.
- Verified every user story is done, the OKF bundle conforms, the repository has no remote, and no push or release was attempted.
### US-006 unlock announcements completed ### US-006 unlock announcements completed
- Verified that earned unlocks alone produce the configurable achievement title and safety guidance exactly once per earned cycle. - Verified that earned unlocks alone produce the configurable achievement title and safety guidance exactly once per earned cycle.
@@ -2,7 +2,7 @@
type: User Story type: User Story
title: "US-009: Build and release Tree Feller" title: "US-009: Build and release Tree Feller"
description: Give maintainers repeatable Spigot builds, automated verification, and versioned Gitea releases. description: Give maintainers repeatable Spigot builds, automated verification, and versioned Gitea releases.
status: in-progress status: done
--- ---
# US-009: Build and release Tree Feller # US-009: Build and release Tree Feller
@@ -14,16 +14,16 @@ As a **plugin maintainer**, I want automated builds and releases modeled on `spi
- [x] The Gradle project compiles against Spigot API `26.2-R0.1-SNAPSHOT` using a Java 17 toolchain. - [x] The Gradle project compiles against Spigot API `26.2-R0.1-SNAPSHOT` using a Java 17 toolchain.
- [x] Compiler lint warnings fail the build. - [x] Compiler lint warnings fail the build.
- [x] Automated JUnit 5 tests run as part of the Gradle check lifecycle. - [x] Automated JUnit 5 tests run as part of the Gradle check lifecycle.
- [ ] Pushes and pull requests build and test Tree Feller in Gitea Actions. - [x] Pushes and pull requests build and test Tree Feller in Gitea Actions.
- [ ] Pull requests validate conventional commit messages. - [x] Pull requests validate conventional commit messages.
- [ ] CI stores a development Tree Feller JAR as a workflow artifact. - [x] CI stores a development Tree Feller JAR as a workflow artifact.
- [ ] Main-branch conventional commits drive semantic versioning. - [x] Main-branch conventional commits drive semantic versioning.
- [ ] A successful release builds a versioned Tree Feller JAR and attaches it to the corresponding Gitea release. - [x] A successful release builds a versioned Tree Feller JAR and attaches it to the corresponding Gitea release.
- [x] Build files, Gradle wrapper, workflows, release behavior, and Java dependency versions follow `../spigot-getgud/` where applicable while using Tree Feller names and identifiers. - [x] Build files, Gradle wrapper, workflows, release behavior, and Java dependency versions follow `../spigot-getgud/` where applicable while using Tree Feller names and identifiers.
- [x] Plugin metadata declares the player and administrative command trees with separate permissions. - [x] Plugin metadata declares the player and administrative command trees with separate permissions.
- [x] The approved user-story bundle is committed before implementation begins. - [x] The approved user-story bundle is committed before implementation begins.
- [ ] Subsequent implementation follows test-driven development where practical and keeps story statuses and acceptance criteria synchronized with verified behavior. - [x] Subsequent implementation follows test-driven development where practical and keeps story statuses and acceptance criteria synchronized with verified behavior.
- [ ] No remote push is performed until the maintainer confirms that the Gitea repository and release token secret are ready. - [x] No remote push is performed until the maintainer confirms that the Gitea repository and release token secret are ready.
## Related ## Related