From 6f37cf646b7763f3f80c27868eac9570ce7bb4fc Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Sun, 27 Sep 2026 08:52:36 +0000 Subject: [PATCH 1/2] docs(thievery): left-click on a container, display or furniture lock is now logged Shift-left-clicking a lock to cycle its state is logged to CoreProtect through logLockChange. Document the lookup wording, the staff override marker, where display and furniture changes are logged, and the API 14 requirement. Also note that staff can rotate locks they do not own, and add test matrix checks for both. Co-Authored-By: Claude Opus 5.5 (1M context) --- projects/Thievery/docs/SYSTEM.md | 11 ++++++++++- projects/Thievery/docs/TEST_MATRIX.md | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/projects/Thievery/docs/SYSTEM.md b/projects/Thievery/docs/SYSTEM.md index 21dd430..cc9e01b 100644 --- a/projects/Thievery/docs/SYSTEM.md +++ b/projects/Thievery/docs/SYSTEM.md @@ -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: diff --git a/projects/Thievery/docs/TEST_MATRIX.md b/projects/Thievery/docs/TEST_MATRIX.md index 3e3c0c2..a9ee121 100644 --- a/projects/Thievery/docs/TEST_MATRIX.md +++ b/projects/Thievery/docs/TEST_MATRIX.md @@ -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 | +| L12 | Shift left-click on an owned chest, display and furniture: `/co inspect` or `/co lookup` shows ` set lock to .`; display and furniture entries sit on the supporting block | +| L13 | Staff shift left-click on another player's lock changes state, keeps the owner, and logs with "(staff override)" | ## Robbery From 95567ed3c050fd42fb05bbd1e6e839055dae0fca Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Sun, 27 Sep 2026 08:52:49 +0000 Subject: [PATCH 2/2] docs(thievery): renumber lock logging checks to avoid clashing with L12 Co-Authored-By: Claude Opus 5.5 (1M context) --- projects/Thievery/docs/TEST_MATRIX.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Thievery/docs/TEST_MATRIX.md b/projects/Thievery/docs/TEST_MATRIX.md index a9ee121..55854c1 100644 --- a/projects/Thievery/docs/TEST_MATRIX.md +++ b/projects/Thievery/docs/TEST_MATRIX.md @@ -29,8 +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 | -| L12 | Shift left-click on an owned chest, display and furniture: `/co inspect` or `/co lookup` shows ` set lock to .`; display and furniture entries sit on the supporting block | -| L13 | Staff shift left-click on another player's lock changes state, keeps the owner, and logs with "(staff override)" | +| L13 | Shift left-click on an owned chest, display and furniture: `/co inspect` or `/co lookup` shows ` set lock to .`; 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