Anti-Abuse
Cooldown wystawiania, limit zakupów od tego samego gracza i max wartość transakcji.
Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.
Klasa: AntiAbuseManager. Liczniki w pamięci — restart Paper zeruje cooldown i pary zakupów.
anti-abuse:
enabled: true
max-purchases-from-same-player: 20
purchase-window-seconds: 86400
max-transaction-value: 10000000
listing-cooldown-seconds: 5enabled
false → getListingCooldownRemaining zawsze 0, canPurchase zawsze true. Pozostałe liczby są ignorowane.
Cooldown wystawiania
Po udanym sellItem: markListed(uuid). Kolejne wystawienie przed upływem listing-cooldown-seconds → anti-abuse.cooldown ({seconds}). Zaokrąglenie w górę do pełnych sekund.
Max wartość przy zakupie
Jeśli listing.price > max-transaction-value → anti-abuse.max-value ({max}), zakup pada przed rezerwacją pieniędzy.
To nie blokuje wystawienia — wystawienie tnie tylko settings.max-price.
Zakupy od tego samego sprzedawcy
Klucz: buyerUUID + ":" + sellerUUID. W oknie purchase-window-seconds liczba zakupów nie może osiągnąć max-purchases-from-same-player. Inkrement po COMPLETED (markPurchased).
Komunikat: anti-abuse.same-player ({limit}).
Okno startuje przy pierwszym zakupie pary; po wygaśnięciu licznik resetuje się na 1 przy następnym zakupie.
Czego to nie robi
- Nie wykrywa altów (osobne UUID = osobne liczniki).
- Nie zapisuje się do YAML.
- Nie ogranicza
/market admin. - Nie zastępuje
settings.max-price.