Despawn Scheduler
Bounds the automatic despawn pipeline so a flood of despawning items can't storm the server, and shares that bounded budget fairly between players.
Two independent layers:
Server budget (
performance:) — at mostmax-per-ticknew relocations start each tick and never more thanmax-concurrentrun at once. This is what stops the server from being overwhelmed.Per-user budget (
throttle:) — how much of that server budget any one player may take, via io.fairyfox.papermc.despawneditems.throttle.ThrottleManager. This is what stops one player from starving everyone else.
The void.chance roll happens here too, at enqueue time rather than per relocation attempt: an item's fate should be decided once, not re-rolled at every candidate location.