feat(admin): add Leaf administration commands

This commit is contained in:
dmg
2026-08-10 18:29:41 -04:00
parent 5d3acef8ab
commit e53548f481
11 changed files with 497 additions and 60 deletions
+14 -14
View File
@@ -2,7 +2,7 @@
type: User Story
title: "US-005: Administer Leaf"
description: Give administrators command-based control over global and per-player Leaf behavior.
status: backlog
status: done
---
# US-005: Administer Leaf
@@ -11,19 +11,19 @@ As a **server administrator**, I want to control Leaf globally and per player so
## Acceptance criteria
- [ ] Administrative commands require `leaf.admin`, which server operators receive by default.
- [ ] `/leaf enabled <on|off>` globally enables or disables Leaf.
- [ ] Global disablement immediately suppresses Leaf-managed Resistance, prefixes, and onboarding reminders without erasing player opt-in choices.
- [ ] Global enablement immediately restores protection and prefixes for eligible online opted-in players.
- [ ] `/leaf player <name|uuid> status` reports the player's identity, saved opt-in choice, active-protection state, lock state, and first-join time.
- [ ] `/leaf player <name|uuid> enabled <on|off>` changes the player's saved opt-in choice and immediately reconciles their online effect and prefix.
- [ ] `/leaf player <name|uuid> locked <on|off>` controls whether that player can change their own saved choice.
- [ ] A locked player receives a clear explanation when `/leaf on` or `/leaf off` is denied.
- [ ] PvP-triggered opt-out remains authoritative even for a locked player.
- [ ] Player targets resolve online names, previously known names, and UUIDs without confusing two players who used the same name.
- [ ] `/leaf strength <1-5>` changes the live Resistance level and immediately updates protected online players.
- [ ] Administrative autocomplete is permission-aware and suggests valid subcommands, known player targets, properties, levels, and `on` or `off` values for the current argument position.
- [ ] Every successful mutation reports exactly what changed, and invalid requests make no partial changes.
- [x] Administrative commands require `leaf.admin`, which server operators receive by default.
- [x] `/leaf enabled <on|off>` globally enables or disables Leaf.
- [x] Global disablement immediately suppresses Leaf-managed Resistance, prefixes, and onboarding reminders without erasing player opt-in choices.
- [x] Global enablement immediately restores protection and prefixes for eligible online opted-in players.
- [x] `/leaf player <name|uuid> status` reports the player's identity, saved opt-in choice, active-protection state, lock state, and first-join time.
- [x] `/leaf player <name|uuid> enabled <on|off>` changes the player's saved opt-in choice and immediately reconciles their online effect and prefix.
- [x] `/leaf player <name|uuid> locked <on|off>` controls whether that player can change their own saved choice.
- [x] A locked player receives a clear explanation when `/leaf on` or `/leaf off` is denied.
- [x] PvP-triggered opt-out remains authoritative even for a locked player.
- [x] Player targets resolve online names, previously known names, and UUIDs without confusing two players who used the same name.
- [x] `/leaf strength <1-5>` changes the live Resistance level and immediately updates protected online players.
- [x] Administrative autocomplete is permission-aware and suggests valid subcommands, known player targets, properties, levels, and `on` or `off` values for the current argument position.
- [x] Every successful mutation reports exactly what changed, and invalid requests make no partial changes.
## Related