GrzybcioRynek

Plugin architecture

How MarketPlace 1.0.3 wires hooks, storage, managers, and GUI — no HTTP layer.

Compatible with: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Based on GrzybcioRynek 1.0.3 and web 0.1.0 source.

All working market logic lives in the Paper plugin. Startup class: com.example.marketplace.MarketPlace. The website is not part of this chain.

Startup (onEnable)

  1. isSupportedServerVersion() — only token 26.2 (Paper ServerBuildInfo, then BukkitVersion / MinecraftVersion / getVersion()). Other version: log GrzybcioRynek działa TYLKO na Paper 26.2! and disablePlugin.
  2. ConfigurationSerialization.registerClass(MarketListing.class).
  3. ConfigManager, GuiConfigManager, MessageManager.
  4. VaultHook. If Economy is not ready — retry after 20 ticks (1 s). Second fail: Vault nie znaleziono lub brak providera ekonomii! Wyłączanie pluginu.
  5. finishEnable().

finishEnable() order:

NexoHook → OraxenHook → CustomItemsHook ExtendedDataStore → StorageManager backupListings() + extendedDataStore.backup() AntiAbuseManager → MailboxService → AlertService StatsManager → ListingQueryService → ChatInputManager MarketManager → GUIManager MarketAPI.init(this) commands + listeners + optional PlaceholderHook removeExpiredListings() + processExpiryOutbox() timer every 30 minutes (20L * 60 * 30)

onDisable: synchronous storageManager.save() and extendedDataStore.save().

Dependency graph

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

Commands: MarketCommand (/market, aliases ah, rynek), WystawCommand (/wystaw), AukcjeCommand (/aukcje, aliases rynek-gui, ah-gui). Listeners: GUIListener, PlayerJoinListener, ChatInputListener.

Layers

LayerClassesResponsibility
EntryMarketCommand, WystawCommand, AukcjeCommand, GUIcommands and clicks
MarketMarketManagerlisting, buy, remove, refund, reservations
QueriesListingQueryService + ItemSearchUtilfilter, sort, category
ListingsStorageManagerlistings.yml, expiry outbox, pending queues
Extended dataExtendedDataStorehistory, mailbox, favorites, alerts, ratings
EconomyVaultHookbalance, withdraw, deposit by UUID, depositAccount
Custom itemsCustomItemsHookclone stack; rebuild only when AIR
GUIInventoryGUI + impl/*market screens

Buy transaction (summary)

MarketManager.buyItem holds reservedListings and globalLock. States: CREATEDLISTING_RESERVEDMONEY_WITHDRAWNSELLER_PAIDITEM_DELIVEREDCOMPLETED. On error: FAILED or rollback to ROLLED_BACK. Details: MarketManager.

Data on disk

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

Messages live in config.yml under messages.*. There is no separate messages.yml.

Outside the plugin

PartRole
Strona/Next.js 16, mock 0.1.0 — no connection to the plugin
Wiki/documentation
Danger

HTTP API and webhooks do not exist. That is 🚧 Planned — see Planned HTTP API.