GrzybcioRynek

Anti-Abuse

Listing cooldown, purchase limit from the same player, and max transaction value.

Compatible with: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

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.

yaml
anti-abuse:
  enabled: true
  max-purchases-from-same-player: 20
  purchase-window-seconds: 86400
  max-transaction-value: 10000000
  listing-cooldown-seconds: 5

enabled

falsegetListingCooldownRemaining 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-valueanti-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.