/// <summary> /// Applies all patch related settings that are needed to be /// set. Like different spawners, despawning old entities if the /// patch changed etc. /// </summary> public void ApplyChangedPatchSettingsIfNeeded(Patch currentPatch, bool despawnAllowed) { if (previousPatch != currentPatch && despawnAllowed) { if (previousPatch != null) { GD.Print("Previous patch (", TranslationServer.Translate(previousPatch.Name), ") different to " + "current patch (", TranslationServer.Translate(currentPatch.Name), ") despawning all entities."); } else { GD.Print("Previous patch doesn't exist, despawning all entities."); } // Despawn old entities spawnSystem.DespawnAll(); // And also all timed entities timedLife.DespawnAll(); // Clear compounds compoundCloudSystem.EmptyAllClouds(); } previousPatch = currentPatch; GD.Print("Applying patch (", TranslationServer.Translate(currentPatch.Name), ") settings"); // Update environment for process system processSystem.SetBiome(currentPatch.Biome); // Apply spawn system settings HandleCloudSpawns(currentPatch.Biome); HandleChunkSpawns(currentPatch.Biome); HandleCellSpawns(currentPatch); SetFullSpawnBags(); SetSpawnGridSize(currentPatch.Biome); // Change the lighting UpdateLight(currentPatch.BiomeTemplate); }