GrzybcioRynek

Architektura pluginu

Jak MarketPlace 1.0.3 składa hooki, magazyn, menedżery i GUI — bez warstwy HTTP.

Kompatybilne z: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.

Jedyna działająca logika rynku jest w pluginie Paper. Klasa startowa: com.example.marketplace.MarketPlace. Strona WWW nie wchodzi w ten łańcuch.

Start (onEnable)

  1. isSupportedServerVersion() — tylko token 26.2 (Paper ServerBuildInfo, potem BukkitVersion / MinecraftVersion / getVersion()). Inna wersja: log GrzybcioRynek działa TYLKO na Paper 26.2! i disablePlugin.
  2. ConfigurationSerialization.registerClass(MarketListing.class).
  3. ConfigManager, GuiConfigManager, MessageManager.
  4. VaultHook. Jeśli Economy niegotowa — retry za 20 ticków (1 s). Drugi fail: Vault nie znaleziono lub brak providera ekonomii! Wyłączanie pluginu.
  5. finishEnable().

finishEnable() kolejność:

NexoHook → OraxenHook → CustomItemsHook ExtendedDataStore → StorageManager backupListings() + extendedDataStore.backup() AntiAbuseManager → MailboxService → AlertService StatsManager → ListingQueryService → ChatInputManager MarketManager → GUIManager MarketAPI.init(this) komendy + listenerzy + opcjonalny PlaceholderHook removeExpiredListings() + processExpiryOutbox() timer co 30 minut (20L * 60 * 30)

onDisable: synchroniczny storageManager.save() i extendedDataStore.save().

Graf zależności

MarketPlace ├── ConfigManager / GuiConfigManager / MessageManager ├── VaultHook ├── NexoHook / OraxenHook / CustomItemsHook ├── ExtendedDataStore market-data.yml ├── StorageManager listings.yml ├── AntiAbuseManager ├── MailboxService / AlertService ├── StatsManager / ListingQueryService ├── ChatInputManager ├── MarketManager ├── GUIManager └── MarketAPI

Komendy: MarketCommand (/market, aliasy ah, rynek), WystawCommand (/wystaw), AukcjeCommand (/aukcje, aliasy rynek-gui, ah-gui). Listenerzy: GUIListener, PlayerJoinListener, ChatInputListener.

Warstwy

WarstwaKlasyOdpowiedzialność
WejścieMarketCommand, WystawCommand, AukcjeCommand, GUIkomendy i kliknięcia
RynekMarketManagerwystawianie, zakup, usuwanie, refund, rezerwacje
ZapytaniaListingQueryService + ItemSearchUtilfiltr, sort, kategoria
OfertyStorageManagerlistings.yml, expiry outbox, pending queues
Dane rozszerzoneExtendedDataStorehistoria, mailbox, ulubione, alerty, oceny
EkonomiaVaultHooksaldo, withdraw, deposit po UUID, depositAccount
Custom itemyCustomItemsHookklon stacka; rebuild tylko gdy AIR
GUIInventoryGUI + impl/*ekrany rynku

Transakcja zakupu (skrót)

MarketManager.buyItem trzyma reservedListings i globalLock. Stany: CREATEDLISTING_RESERVEDMONEY_WITHDRAWNSELLER_PAIDITEM_DELIVEREDCOMPLETED. Błąd: FAILED albo rollback do ROLLED_BACK. Szczegóły: MarketManager.

Dane na dysku

plugins/GrzybcioRynek/ ├── config.yml ├── gui.yml ├── listings.yml ├── listings.yml.bak ├── market-data.yml └── market-data.yml.bak

Komunikaty są w config.yml pod messages.*. Osobnego messages.yml nie ma.

Poza pluginem

CzęśćRola
Strona/Next.js 16, mock 0.1.0 — brak połączenia z pluginem
Wiki/dokumentacja
Danger

HTTP API i webhooki nie istnieją. To 🚧 Planned — zobacz Planowane HTTP API.