GrzybcioRynek

Problemy z transakcjami

Stany TX, kody błędów, logi [TX id] oraz item w mailbox / pending-returns.

Kompatybilne z: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.

Zakup jest maszyną stanów w MarketManager.buyItem. Przy transactions.logging: true każdy etap idzie do konsoli.

Log

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

Szukaj [TX i ID. Wyłączenie logów: transactions.logging: false — stany i tak są w market-data.yml.

Stany

CREATEDLISTING_RESERVEDMONEY_WITHDRAWNSELLER_PAIDITEM_DELIVEREDCOMPLETED

Końcowe: ROLLED_BACK, FAILED.

Kody error

KodZnaczenie
LISTING_REMOVE_FAILEDremoveListing nie zdjął oferty
WITHDRAW_FAILEDVault nie ściągnął kasy kupującego; oferta przywrócona
SELLER_DEPOSIT_FAILEDdepozyt UUID sprzedawcy padł; kasa wróciła do kupującego
ROLLBACK_SELLER_WITHDRAW_FAILEDnie udało się odjąć kasy sprzedawcy — kupujący nie dostaje zwrotu (unik mintu)
ROLLBACK_FAILED:<msg>wyjątek w rollbackBuy
EXCEPTION_AFTER_<STATE>wyjątek w nieobsłużonym stanie
REFUND:<timestamp>admin /market admin refund

W logu rollbacku po dostarczeniu itemu: FINALIZED_AFTER_EXCEPTION (stan zostaje COMPLETED).

Dlaczego nie da się kupić

Komunikaty gracza (nie kody TX):

KluczTekst
buy.not-enough-moneybrak kasy
buy.own-listingwłasna oferta
buy.listing-lockedID w reservedListings
buy.inventory-fullbrak miejsca (InventoryUtil.canFit)
buy.not-availablebrak oferty / AIR / zła cena
anti-abuse.*cooldown / limit / max wartość
buy.transaction-failedogólny fail / rollback

Item nie wrócił do rąk

  1. Mailbox (market-data.ymlmailbox.<uuid>) — powody m.in. expired, removed, admin-removed, purchase-overflow, admin-refund. Komenda /market mailbox.
  2. pending-returns.<uuid> w listings.yml — gdy mailbox.enabled: false i gracz był offline. Dostawa: PlayerJoinListenerdeliverPendingReturns.
  3. Zarezerwowana oferta — timer wygaśnięć pomija ID w reservedListings. Crash w trakcie zakupu: sprawdź log [TX i czy oferta wróciła (restoreListing).

Gdy mailbox włączony, overflow zakupu idzie do skrzynki, nie na ziemię. Gdy wyłączony i gracz online: reszta drop na ziemię.

TX „utknięty”

  1. Włącz transactions.logging: true, powtórz zakup, skopiuj [TX <id>].
  2. /market admin inspect <listingId> — linia Zablokowana: true/false.
  3. Reload przy rezerwacji: Trwają aktywne transakcje — spróbuj ponownie za chwilę.
  4. Refund tylko dla COMPLETED: Można zwrócić tylko zakończone transakcje (stan: ...). Ponowny refund: Ta transakcja została już zwrócona.
Warning

Przy ROLLBACK_SELLER_WITHDRAW_FAILED kasa może zostać u sprzedawcy, a oferta wrócić albo nie — czytaj log Rollback SELLER_PAID: nie udało się odjąć kasy sprzedawcy.