PAT whitelist was missing region/rg/hs/homestead/unclaim, blocking the
only entry-points to Homestead's claim flow for default players.
Added them to ProAntiTab/storage.yml on the live box and reloaded.
EssentialsX shadows /help by load-order, hiding the branded HelpCommand
page behind hide-permissionless-help. Added a help -> helpcommand:help
alias to commands.yml. Takes effect on next restart.
Lands plugin's jar is not installed (only its config dir remains);
docs explain why /lands references in HelpCommand and PAT are dead.
Adds:
- docs/DEFAULT-RANK-COMMANDS-2026-05-07.md diagnosis + fix log
- docs/PLAYER-SMOKE-TEST.md regression checklist for
YOU500 as the test rig
- scripts/test-default-perms.sh snapshot dump for diffing
before/after config edits
140 lines
5.7 KiB
Markdown
140 lines
5.7 KiB
Markdown
# Player smoke-test — racked.ru
|
|
|
|
A regression checklist for "things a default-rank player must be able to do".
|
|
Pair with `scripts/test-default-perms.sh` to spot LP/PAT regressions before
|
|
asking the test rig to log in.
|
|
|
|
**Test rig:** YOU500 (LuckPerms group `default`, weight 10). He stays on
|
|
`default` permanently — never elevate him; he is the canary. Operator
|
|
gear-loads him via RCON `give` commands; that's fine and doesn't change
|
|
his perms.
|
|
|
|
**When to run:** before any of these:
|
|
- plugin update (jar swap)
|
|
- LuckPerms group/perm change (anything affecting `default`, `settler`, or inheritance)
|
|
- ProAntiTab `storage.yml` edit (whitelist add/remove)
|
|
- `commands.yml` or `help.yml` edit
|
|
- AuthMe / AuthLimbo config change
|
|
- After server restart following a config-only change
|
|
|
|
---
|
|
|
|
## A — Authentication path (AuthLimbo + AuthMe)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| A1 | Log in cold (server restart, fresh session) | Lands at `auth_limbo` (0.5 / 128 / 0.5) facing void | |
|
|
| A2 | Type `/login <pw>` | `[AuthLimbo] Restoring YOU500 to world(...)` in logs; teleported back to last location | |
|
|
| A3 | Movement keys before `/login` | No movement; chat-prompt visible | |
|
|
| A4 | Re-login within session timeout | Auto-login, no prompt | |
|
|
|
|
## B — Help and discovery
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| B1 | `/help` | Branded HelpCommand page 1 (racked.ru header, list of basic commands) | |
|
|
| B2 | `/help 2` (or arrow `>>`) | Page 2 with /bal, /pay, /hs, /shop entries | |
|
|
| B3 | `/rules` | Server rules from RULES.md displayed | |
|
|
| B4 | `/list` | Player count + groups (default/Admins) | |
|
|
|
|
## C — Skin (SkinsRestorer)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| C1 | `/skin set <name>` (e.g. `/skin set Notch`) | Skin updates within ~3s | |
|
|
| C2 | `/skin url <https-png-url>` | Custom URL skin applied | |
|
|
| C3 | `/skins` (GUI) | Skin browser opens | |
|
|
| C4 | `/skin clear` | **Should be denied** (admin-only) | |
|
|
|
|
## D — Land claiming (Homestead)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| D1 | `/hs create test1` | "Successfully created a new region: test1" + clickable hover-link | |
|
|
| D2 | `/hs set target test1` | "test1 is now set as the target region" | |
|
|
| D3 | Stand in unclaimed chunk → `/claim` | "This chunk is now part of the region test1" | |
|
|
| D4 | `/unclaim` (in same chunk) | "This chunk has been unclaimed" | |
|
|
| D5 | `/hs menu` | Region GUI opens | |
|
|
| D6 | `/region info` (or `/rg info`) | Region data printed | |
|
|
|
|
If D1 returns "Unknown command" or the silent-PAT-block, the PAT whitelist
|
|
regressed — see `docs/DEFAULT-RANK-COMMANDS-2026-05-07.md` §5a.
|
|
|
|
## E — Homes & teleport (Essentials)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| E1 | `/sethome base` | "Home set" | |
|
|
| E2 | `/home base` | TP to base | |
|
|
| E3 | `/homes` | List of saved homes | |
|
|
| E4 | `/deletehome base` | Home removed | |
|
|
| E5 | `/spawn` | TP to spawn | |
|
|
| E6 | `/back` | TP to prior location | |
|
|
| E7 | `/tp <player>` | Sends TPA request (aliased) | |
|
|
| E8 | `/tpaccept` | Accept incoming TPA | |
|
|
|
|
## F — Economy (Vault + EZShop + AuctionHouse)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| F1 | `/bal` | Balance shown | |
|
|
| F2 | `/baltop` | Top-balance leaderboard | |
|
|
| F3 | `/pay <player> <n>` | Transfer succeeds (or "insufficient funds") | |
|
|
| F4 | `/shop` | EZShop GUI opens | |
|
|
| F5 | `/ah` (or `/auctionhouse`) | AuctionHouse GUI opens | |
|
|
|
|
## G — Chat (CarbonChat)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| G1 | Plain chat message | Visible to others, prefix per LP rank (Adventurer for default, but operator manages prefix display elsewhere) | |
|
|
| G2 | `/msg <player> hi` | DM delivered, both sides see it | |
|
|
| G3 | `/r hi` | Reply works after a DM | |
|
|
| G4 | `/pm <player> hi` (alias) | Same as `/msg` | |
|
|
|
|
## H — Negative tests (must NOT work for default)
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| H1 | `/op` | "Unknown command" or PAT-block | |
|
|
| H2 | `/gamemode creative` | Denied | |
|
|
| H3 | `/give @s diamond 64` | Denied | |
|
|
| H4 | `/lp ...` | PAT-blocks at execution (lp is global-whitelisted but LP itself denies non-ops) | |
|
|
| H5 | `/hsadmin reload` | Denied (op-only by Homestead plugin.yml) | |
|
|
| H6 | `/skin clear` | Denied (LP `false` override) | |
|
|
|
|
## I — Voicechat
|
|
|
|
| # | Step | Expected | Pass? |
|
|
|---|------|----------|-------|
|
|
| I1 | Connect with simple-voice-chat client | Mic + speaker work | |
|
|
| I2 | Group chat | Spatial audio normal | |
|
|
|
|
---
|
|
|
|
## Operator workflow
|
|
|
|
1. Run `bash scripts/test-default-perms.sh > /tmp/perms-before.txt` (snapshot).
|
|
2. Make config / plugin / LP change.
|
|
3. Run `bash scripts/test-default-perms.sh > /tmp/perms-after.txt`.
|
|
4. `diff /tmp/perms-before.txt /tmp/perms-after.txt` — anything unexpected
|
|
means the change had collateral effects on the default group.
|
|
5. Have YOU500 walk through sections A → I above. Mark Pass/Fail.
|
|
6. If anything regressed, see `docs/DEFAULT-RANK-COMMANDS-2026-05-07.md`
|
|
for last-known-good state and fix recipes.
|
|
|
|
The diff in step 4 is the cheap pre-flight; the YOU500 walk-through is the
|
|
authoritative regression test.
|
|
|
|
---
|
|
|
|
## What we explicitly are NOT testing here
|
|
|
|
- **Rank-prefix display** — operator manages LP prefixes/suffixes manually
|
|
(locked behaviour per workspace memory). YOU500 will show "Adventurer"
|
|
with `false` weight; that's intentional and not a regression.
|
|
- **Premium Lands plugin** — the `/data/plugins/Lands/` config tree exists
|
|
but the jar is not loaded. If/when re-installed, this checklist needs a
|
|
Lands section.
|
|
- **AuthMe registration of new accounts** — separate flow, not part of the
|
|
default-rank smoke test.
|