ThrottleManager

constructor(settingsSupplier: () -> ThrottleSettings, onlineLookup: (UUID) -> Player? = { null }, clock: () -> Long = System::currentTimeMillis)

Parameters

settingsSupplier

read fresh each call so /despi reload takes effect immediately.

onlineLookup

injected player lookup — tests pass a stub and need no server.

clock

injected time source in milliseconds — tests drive it deterministically.