Anti-Abuse
Listing cooldown, purchase limit from the same player, and max transaction value.
Based on GrzybcioRynek 1.0.3 and web 0.1.0 source.
Class: AntiAbuseManager. Counters are in memory — a Paper restart clears cooldown and purchase pairs.
anti-abuse:
enabled: true
max-purchases-from-same-player: 20
purchase-window-seconds: 86400
max-transaction-value: 10000000
listing-cooldown-seconds: 5enabled
false → getListingCooldownRemaining always 0, canPurchase always true. Remaining numbers are ignored.
Listing cooldown
After successful sellItem: markListed(uuid). Another listing before listing-cooldown-seconds elapses → anti-abuse.cooldown ({seconds}). Rounded up to full seconds.
Max value on purchase
If listing.price > max-transaction-value → anti-abuse.max-value ({max}), purchase fails before money reservation.
This does not block listing — listing is only cut by settings.max-price.
Purchases from the same seller
Key: buyerUUID + ":" + sellerUUID. Within purchase-window-seconds the purchase count must not reach max-purchases-from-same-player. Increment after COMPLETED (markPurchased).
Message: anti-abuse.same-player ({limit}).
The window starts on the first purchase of the pair; after expiry the counter resets to 1 on the next purchase.
What it does not do
- Does not detect alts (separate UUID = separate counters).
- Does not persist to YAML.
- Does not restrict
/market admin. - Does not replace
settings.max-price.