public void DoWork() { TTRPG.Api.consoleOutput("Started Clean Vehicles Thread"); while (!_interuped) { List <NetHandle> vehicles = TTRPG.Api.getAllVehicles(); foreach (NetHandle handle in vehicles) { Vehicle veh = TTRPG.Api.getEntityFromHandle <Vehicle>(handle); int maxIdleTime = -1; if (veh.getSyncedData("MaxIdleTime") != null) { maxIdleTime = (int)veh.getSyncedData("MaxIdleTime"); } if (veh.occupants.Length == 0 && veh.health > 0 && maxIdleTime != -1) { // Idle DateTime lastUsage = (DateTime)veh.getData("last-driver-time"); if (DateTime.Now.Subtract(lastUsage).TotalMilliseconds >= maxIdleTime && VehiclesHelper.GetDistanceToSpawnLocation(veh) >= 0.5) { VehiclesHelper.RespawnVehicle(veh, true); } } else if (veh.health <= 0) { DateTime lastUsage = (DateTime)veh.getData("last-death-time"); // destroyed if (maxIdleTime != -1 && DateTime.Now.Subtract(lastUsage).TotalMilliseconds >= maxIdleTime) { VehiclesHelper.RespawnVehicle(veh, true); } else if (DateTime.Now.Subtract(lastUsage).TotalMilliseconds >= 300000) { veh.delete(); } } } // Run Thread only every Minutes Thread.Sleep(60000); } }