GrzybcioRynek

Item Serialization

ItemStack Bukkit w YAML plus opcjonalne nexoId/oraxenId — recreateItem klonuje stack, rebuild tylko przy AIR.

Kompatybilne z: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.

Przedmiot oferty i transakcji jest zapisywany jako natywny Bukkit ItemStack w YAML (ConfigurationSerializable). Dodatkowo, jeśli hook coś wykrył, zapisane są stringi nexoId / oraxenId.

Parse

ItemStackSerializer.parse:

  • już ItemStack → clone, o ile nie AIR i amount > 0
  • MapItemStack.deserialize
  • AIR / amount ≤ 0 / wyjątek → null

Oferta bez poprawnego itemu jest pomijana przy load (parseListing / deserialize rzuca / wraca null).

Zapis oferty

MarketListing.serialize():

yaml
id: 1
seller: "…"
sellerName: Gracz
item: {==: org.bukkit.inventory.ItemStack, type: DIAMOND_SWORD, amount: 1, meta: }
price: 1500.0
timestamp: 1730000000000
nexoId: my_sword      # tylko gdy nie null
oraxenId: steel_blade

To samo idzie do TX w market-data.yml.

recreateItem

clone(stored) jeśli stored jest AIR: spróbuj Nexo z nexoId inaczej spróbuj Oraxen z oraxenId zwróć stored (klon)

Cel: zachować enchants, PDC, display name z momentu wystawienia. Pack jest planem B przy uszkodzonych danych (AIR).

Skrzynka i outbox

Mailbox i expiry-outbox też trzymają ItemStack w YAML. Outbox używa recreateItem w momencie kolejkowania.

Czego nie ma

  • Osobnego formatu base64
  • SQL BLOB
  • ItemsAdder namespaced-id
  • Przepisywania itemu przy każdym load()