GrzybcioRynek

market-data.yml

Ulubione, skrzynka, alerty, oceny i transakcje — zapis async do pliku tymczasowego.

Kompatybilne z: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.

Plik: plugins/GrzybcioRynek/market-data.yml. Klasa: ExtendedDataStore. Tworzony przy starcie. Backup: market-data.yml.bak przy enable/reload.

Sekcje

SekcjaZawartość
favorites.<uuid>lista int — ID ofert
mailbox.<uuid>lista wpisów skrzynki
alerts.<uuid>lista alertów
ratingslista ocen
transactionslista TX

Przykład

yaml
favorites:
  069a79f4-44e9-4726-a5be-fca90e38aaf5:
    - 12
    - 44

mailbox:
  069a79f4-44e9-4726-a5be-fca90e38aaf5:
    - id: "a1b2c3"
      item: {==: org.bukkit.inventory.ItemStack, type: DIAMOND, amount: 8}
      reason: expired
      timestamp: 1730000000000
      previousPrice: 100.0

alerts:
  069a79f4-44e9-4726-a5be-fca90e38aaf5:
    - query: "diament"
      maxPrice: 5000.0
      timestamp: 1730000000000

ratings:
  - seller: "..."
    rater: "..."
    transactionId: "..."
    stars: 5
    timestamp: 1730000000000

transactions:
  - id: "3f2a…"
    listingId: 12
    buyer: "…"
    buyerName: Kupujący
    seller: "…"
    sellerName: Sprzedawca
    item: {==: org.bukkit.inventory.ItemStack, type: DIAMOND_SWORD, amount: 1}
    price: 1500.0
    fee: 75.0
    sellerReceived: 1425.0
    state: COMPLETED
    timestamp: 1730000000000
    nexoId: null
    oraxenId: null
    error: null

error przy refundzie: REFUND:<epochMs>.

Zapis atomowy

saveAsync() → scheduler async → save():

  1. zapis do market-data.yml.tmp
  2. ATOMIC_MOVE na market-data.yml
  3. gdy atomic padnie — zwykły move z replace
  4. ostateczny fallback: data.save(dataFile)

Reload: flushAndSave() (synchronicznie pod lockiem) + backup().

Retencja

pruneHistory usuwa z transactions tylko COMPLETED starsze niż history.retention-days. Reszta sekcji nie jest automatycznie czyszczona (poza ulubionymi przy zniknięciu oferty).

Czego tu nie ma

SQL, osobnego pliku historii, webhooków Discord.