Throttle Manager
constructor(settingsSupplier: () -> ThrottleSettings, onlineLookup: (UUID) -> Player? = { null }, clock: () -> Long = System::currentTimeMillis)
Parameters
settings Supplier
read fresh each call so /despi reload takes effect immediately.
online Lookup
injected player lookup — tests pass a stub and need no server.
clock
injected time source in milliseconds — tests drive it deterministically.