GrzybcioRynek

Transaction problems

TX states, error codes, [TX id] logs, and items in mailbox / pending-returns.

Compatible with: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Based on GrzybcioRynek 1.0.3 and web 0.1.0 source.

Buying is a state machine in MarketManager.buyItem. With transactions.logging: true every stage goes to the console.

Log

text
[TX <uuid>] <STAGE> listing=#<id> buyer=<uuid> seller=<uuid> price=... fee=... item=TYPExN state=... error=...

Search for [TX and the ID. Disable logs: transactions.logging: false — states are still in market-data.yml.

States

CREATEDLISTING_RESERVEDMONEY_WITHDRAWNSELLER_PAIDITEM_DELIVEREDCOMPLETED

Terminal: ROLLED_BACK, FAILED.

error codes

CodeMeaning
LISTING_REMOVE_FAILEDremoveListing did not remove the listing
WITHDRAW_FAILEDVault did not take buyer money; listing restored
SELLER_DEPOSIT_FAILEDseller UUID deposit failed; money returned to buyer
ROLLBACK_SELLER_WITHDRAW_FAILEDcould not take money from seller — buyer is not refunded (avoid mint)
ROLLBACK_FAILED:<msg>exception in rollbackBuy
EXCEPTION_AFTER_<STATE>exception in an unhandled state
REFUND:<timestamp>admin /market admin refund

In the rollback log after item delivery: FINALIZED_AFTER_EXCEPTION (state stays COMPLETED).

Why you cannot buy

Player messages (not TX codes):

KeyText
buy.not-enough-moneynot enough money
buy.own-listingown listing
buy.listing-lockedID in reservedListings
buy.inventory-fullno space (InventoryUtil.canFit)
buy.not-availableno listing / AIR / bad price
anti-abuse.*cooldown / limit / max value
buy.transaction-failedgeneral fail / rollback

Item did not return to hands

  1. Mailbox (market-data.ymlmailbox.<uuid>) — reasons include expired, removed, admin-removed, purchase-overflow, admin-refund. Command /market mailbox.
  2. pending-returns.<uuid> in listings.yml — when mailbox.enabled: false and the player was offline. Delivery: PlayerJoinListenerdeliverPendingReturns.
  3. Reserved listing — expiry timer skips IDs in reservedListings. Crash mid-buy: check [TX log and whether the listing returned (restoreListing).

When mailbox is on, purchase overflow goes to the mailbox, not the ground. When off and the player is online: remainder drops on the ground.

“Stuck” TX

  1. Enable transactions.logging: true, repeat the buy, copy [TX <id>].
  2. /market admin inspect <listingId> — line Zablokowana: true/false.
  3. Reload while reserved: Trwają aktywne transakcje — spróbuj ponownie za chwilę.
  4. Refund only for COMPLETED: Można zwrócić tylko zakończone transakcje (stan: ...). Repeat refund: Ta transakcja została już zwrócona.
Warning

On ROLLBACK_SELLER_WITHDRAW_FAILED money may stay with the seller, and the listing may or may not return — read the log Rollback SELLER_PAID: nie udało się odjąć kasy sprzedawcy.