Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion projects/Thievery/docs/SYSTEM.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,16 @@ Honor `min-lock-strength-ratio` against that display strength.

Reuse `LockState` (`PRIVATE` / `GUILD` / `FACTION` / `PUBLIC`) and the same access rules as `ContainerData.canAccess` (owner, same guild, same faction, public, `thievery.admin` bypass). `FACTION` is every guild in the owner's faction. Vassals are not included. Chest lockpick sessions scale budget, risk, critical chance, and break chance from `lockpicking.lock-types`.

Shift left-click is the toggle (same titles/sound as chests). Only the owner rotates state. Shift left-click **never** breaks a lockable display.
Shift left-click is the toggle (same titles/sound as chests). The owner rotates state; staff with `thievery.admin` can also rotate a lock another player owns, and the placer stays the owner. Shift left-click **never** breaks a lockable display.

### Lock change logging

Each rotation on a container, display or furniture lock is logged to CoreProtect through `CoreProtectAPI.logLockChange` (`LockStateLog`). Lookups and the block inspector show the entry under the player's own name with the new state, for example "Steve set chest lock to Private.", and add "(staff override)" when staff changed a lock another player owns. Lock changes are never rolled back.

- A double chest is logged once, on the half that was clicked.
- CoreProtect drops interactions on air, so display and furniture changes are logged on the block holding the display: the block an item frame hangs on, or the block below other displays. The entry names that block rather than the display.
- Claiming an unowned display on the first toggle is not logged.
- Logging needs CoreProtect API 14 (CoreProtect 25.1.0) or later. Older versions, or servers without CoreProtect, skip logging.

If the player cannot access a locked display, cancel:

Expand Down
2 changes: 2 additions & 0 deletions projects/Thievery/docs/TEST_MATRIX.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ Run these checks on Minecraft **1.21.10** with the intended plugin dependencies
| L9 | Item frame / glow frame: sneak-hit toggles; locked frame cannot be rotated, emptied, or broken by stranger |
| L10 | Chunk unload/reload: furniture lock still there (variables). Armor stand / frame lock still there (uuid file) |
| L11 | Pick up and replace furniture: lock still on that piece |
| L13 | Shift left-click on an owned chest, display and furniture: `/co inspect` or `/co lookup` shows `<player> set <block> lock to <state>.`; display and furniture entries sit on the supporting block |
| L14 | Staff shift left-click on another player's lock changes state, keeps the owner, and logs with "(staff override)" |

## Robbery

Expand Down