Admin Tools
/market admin subcommands — list, inspect, remove, forceexpire, refund, selftest, reload.
Based on GrzybcioRynek 1.0.3 and web 0.1.0 source.
Required: market.admin (default: op). Entry: /market admin. Without a subcommand — syntax list on chat (hardcoded text, not messages.*).
list
/market admin list
Lists all active listings: #id, nick, Vault price, Material × amount.
inspect <id>
/market admin inspect 42
Header: messages.admin.inspect-header ({id}). Then (hardcoded): seller + UUID, item, price, timestamp, nexoId, oraxenId, whether the listing is reserved.
Missing listing / bad ID: Nie znaleziono oferty. / Nieprawidłowe ID.
remove <id>
/market admin remove 42
MarketManager.removeListing as admin: item returns to the seller with reason admin-removed. Reserved listing: buy.listing-locked.
forceexpire <id>
/market admin forceexpire 42
Immediate expiry: remove listing, clear favorites, return with reason expired. Success: Oferta wygaszona. Failure: Nie znaleziono oferty.
refund <tx-id> [reclaim]
/market admin refund 3f2a-…
/market admin refund 3f2a-… reclaim
Only TX in state COMPLETED without an error starting with REFUND.
- Withdraw
sellerReceivedfrom the seller (if > 0). - Deposit that amount to the buyer (or full
pricewhensellerReceived == 0). - Set
error = REFUND:<timestamp>, stateROLLED_BACK.
reclaim: tries to take the item from the buyer's inventory (if online) and puts a copy in the seller's mailbox (admin-refund). If the buyer does not have the item, a deposit to the seller's mailbox still happens — the message notes that.
Failed seller withdraw aborts the refund (no TX change). Failed buyer deposit reverses the seller withdraw.
selftest [seller] [buyer]
/market admin selftest
/market admin selftest GraczA GraczB
Without nicks: spawn FakePlayer SellerBot and BuyerBot (FakePlayerFactory), MarketSelfTest.run, then despawn. If spawn fails: use the variant with two online players.
Both must be different and online. This is a live Vault / storage integration test — do not use on production with real accounts without understanding the effects (creates listings and TX).
reload
Same as /market reload: requires market.reload or market.admin.
Blocked when hasReservedListings() — a purchase is in progress. First backup .bak, then reload YAML, finally removeExpiredListings.
Success: messages.reload.success.
Tab complete
With market.admin: list, inspect, remove, forceexpire, refund, selftest, reload. For inspect/remove/forceexpire: <id>. For refund: <transaction-id>.