First, `OnPlayerSleep()` hooks fire for every NPC on the map at startup (NPCMissionProvider, NPCSimpleMissionProvider, VehicleVendor, NPCShopKeeper, NPCFarmAccess, etc.).

Second, this causes ZoneManager to create a bunch of 2 second timers. These never fire on Carbon because it leaves one-shot timers created prior to OnServerInitialized() in a zombie state.

Suggestions:

  1. Add a `player.userID.IsSteamId()` or similar check to the hook logic to scope it to actual players.
  2. Unsubscribe the hook in `Init()` and resubscribe it in `OnServerInitialized()` to avoid wasted processing from it firing during server startup.