GrzybcioRynek

VaultHook

Integracja z Vault Economy — saldo, withdraw, deposit po UUID, konto sink i format kwot.

Kompatybilne z: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.

VaultHook jest wymagany. Bez pluginu Vault albo bez RegisteredServiceProvider<Economy> plugin się wyłącza (po jednym ponowieniu za 1 s).

Start

setupEconomy():

  1. getPlugin("Vault") == null → warning Vault nie znaleziono! Plugin nie będzie działać.enabled = false.
  2. ServicesManager.getRegistration(Economy.class) == nullNie znaleziono providera ekonomii!.
  3. Sukces: Pomyślnie połączono z Vault!.

isEnabled() = enabled && economy != null.

MarketPlace.onEnable przy pierwszym failu loguje Economy jeszcze niedostępna — ponawiam za 1s (Essentials/Vault)... i woła konstruktor ponownie po 20 tickach. Drugi fail: Vault nie znaleziono lub brak providera ekonomii! Wyłączanie pluginu.

plugin.yml: depend: [Vault], softdepend: [..., Essentials]. Essentials nie ma klasy hooka — tylko timing late-load Economy.

Metody

MetodaZachowanie
getBalance(OfflinePlayer)economy.getBalance; gdy wyłączony → 0
has(OfflinePlayer, amount)economy.has po normalizeAmount
withdraw(OfflinePlayer, amount)withdrawPlayer; amount <= 0false
deposit(OfflinePlayer, amount)deleguje do deposit(player, amount, null)
deposit(OfflinePlayer, amount, sellerName)tylko depositPlayer(player, amount) po UUID
depositAccount(String, amount)depositPlayer(accountName, amount) — sink prowizji
format(double)$123 albo $123.45 (nie Vault format)

Kwoty są zaokrąglane: Math.round(amount * 100.0) / 100.0. Depozyt <= 0 zwraca true (no-op).

Brak fallbacku po nicku

depositToSeller woła wyłącznie economy.depositPlayer(player, amount). Gdy to się nie uda, nawet przy poprawnym sellerName:

text
Vault deposit po UUID nieudany dla <uuid> (<error>) — NIE używam fallbacku po nicku.

sellerName służy tylko do logów (resolveTargetName). Wartość "Nieznany" jest odrzucana jako nazwa.

Fail withdraw/deposit/deposit-account:

text
Vault <type> nie powiodlo sie dla <target> (<amount>): <errorMessage>

type to withdraw, deposit albo deposit-account.

Prowizja i sink

ConfigManager.calculateSaleFee / calculateListingFee — procent, potem minimum-fee, potem maximum-fee gdy > 0. market-fee.enabled: false → obie prowizje = 0.

Po SELLER_PAID, jeśli fee > 0 i market-fee.sink-account niepusty: depositAccount(sink, fee). Fail nie cofa zakupu — tylko warning:

text
Nie udało się wpłacić prowizji <fee> na konto sink '<sink>'.

Puste sink-account = prowizja jest spalana (nie wraca do nikogo).

Format w PAPI i GUI

PlaceholderHook (total_spent, total_earned, market_volume) i komunikaty rynku używają VaultHook.format, nie natywnego formatu Vault.