VaultHook
Integracja z Vault Economy — saldo, withdraw, deposit po UUID, konto sink i format kwot.
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():
getPlugin("Vault") == null→ warningVault nie znaleziono! Plugin nie będzie działać.→enabled = false.ServicesManager.getRegistration(Economy.class) == null→Nie znaleziono providera ekonomii!.- 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
| Metoda | Zachowanie |
|---|---|
getBalance(OfflinePlayer) | economy.getBalance; gdy wyłączony → 0 |
has(OfflinePlayer, amount) | economy.has po normalizeAmount |
withdraw(OfflinePlayer, amount) | withdrawPlayer; amount <= 0 → false |
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:
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:
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:
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.