From c7ded5dbced10d1caa984c0060ad5527c4206ac3 Mon Sep 17 00:00:00 2001 From: Philipp Date: Mon, 10 Nov 2025 13:01:29 +0100 Subject: [PATCH 1/2] Add known-to-work-with-mod classification --- src/csm/Mods/ModCompat.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/csm/Mods/ModCompat.cs b/src/csm/Mods/ModCompat.cs index e1a3dd5..6f66f09 100644 --- a/src/csm/Mods/ModCompat.cs +++ b/src/csm/Mods/ModCompat.cs @@ -17,6 +17,7 @@ public enum ModSupportType Unsupported, Supported, KnownWorking, + KnownWorkingWithMod, } public struct ModSupportStatus @@ -45,7 +46,8 @@ public static class ModCompat private static readonly string[] _ignoredMods = { "CitiesHarmony.Mod" }; private static readonly string[] _knownToWork = { "NetworkExtensions.Mod", "BigCity.BigCityUserMod" }; - private static readonly string[] _unsupportedMods = { "TrafficManager.Lifecycle.TrafficManagerMod" }; + private static readonly string[] _knownToWorkWithMod = { "TrafficManager.Lifecycle.TrafficManagerMod" }; + private static readonly string[] _unsupportedMods = { }; private static readonly string[] _disableChirperNames = { "MyFirstMod.DestroyChirperMod", "RemoveChirper.RemoveChirper", "ChirpRemover.ChirpRemover" }; public static bool HasDisableChirperMod { @@ -91,6 +93,9 @@ public static bool NeedsToBePresent(PluginManager.PluginInfo info) if (_clientSideMods.Contains(modInstanceName)) return false; + if (_knownToWorkWithMod.Contains(modInstanceName)) + return true; + if (_knownToWork.Contains(modInstanceName)) return true; @@ -154,6 +159,13 @@ private static IEnumerable GetModSupport() continue; } + // Mods known to work when all players use them + if (_knownToWorkWithMod.Contains(modInstanceName)) + { + yield return new ModSupportStatus(modInstance?.Name, modInstanceName, ModSupportType.KnownWorkingWithMod, isClientSide); + continue; + } + // Mods with loaded multiplayer support if (ModSupport.Instance.ConnectedMods.Select(mod => mod.ModClass) .Contains(modInstance?.GetType())) @@ -237,6 +249,10 @@ public static void BuildModInfo(UIPanel panel) message = "Known to work"; labelColor = new Color32(160, 255, 0, 255); break; + case ModSupportType.KnownWorkingWithMod: + message = "Known to work with mod"; + labelColor = new Color32(160, 255, 0, 255); + break; case ModSupportType.Unknown: message = "Unknown"; labelColor = new Color32(255, 100, 0, 255); From a0115e15a8eb4756b352517e93e4b5f3f1594d48 Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 13 Nov 2025 18:54:27 +0100 Subject: [PATCH 2/2] Revert "Add known-to-work-with-mod classification" --- src/csm/Mods/ModCompat.cs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/csm/Mods/ModCompat.cs b/src/csm/Mods/ModCompat.cs index 6f66f09..e1a3dd5 100644 --- a/src/csm/Mods/ModCompat.cs +++ b/src/csm/Mods/ModCompat.cs @@ -17,7 +17,6 @@ public enum ModSupportType Unsupported, Supported, KnownWorking, - KnownWorkingWithMod, } public struct ModSupportStatus @@ -46,8 +45,7 @@ public static class ModCompat private static readonly string[] _ignoredMods = { "CitiesHarmony.Mod" }; private static readonly string[] _knownToWork = { "NetworkExtensions.Mod", "BigCity.BigCityUserMod" }; - private static readonly string[] _knownToWorkWithMod = { "TrafficManager.Lifecycle.TrafficManagerMod" }; - private static readonly string[] _unsupportedMods = { }; + private static readonly string[] _unsupportedMods = { "TrafficManager.Lifecycle.TrafficManagerMod" }; private static readonly string[] _disableChirperNames = { "MyFirstMod.DestroyChirperMod", "RemoveChirper.RemoveChirper", "ChirpRemover.ChirpRemover" }; public static bool HasDisableChirperMod { @@ -93,9 +91,6 @@ public static bool NeedsToBePresent(PluginManager.PluginInfo info) if (_clientSideMods.Contains(modInstanceName)) return false; - if (_knownToWorkWithMod.Contains(modInstanceName)) - return true; - if (_knownToWork.Contains(modInstanceName)) return true; @@ -159,13 +154,6 @@ private static IEnumerable GetModSupport() continue; } - // Mods known to work when all players use them - if (_knownToWorkWithMod.Contains(modInstanceName)) - { - yield return new ModSupportStatus(modInstance?.Name, modInstanceName, ModSupportType.KnownWorkingWithMod, isClientSide); - continue; - } - // Mods with loaded multiplayer support if (ModSupport.Instance.ConnectedMods.Select(mod => mod.ModClass) .Contains(modInstance?.GetType())) @@ -249,10 +237,6 @@ public static void BuildModInfo(UIPanel panel) message = "Known to work"; labelColor = new Color32(160, 255, 0, 255); break; - case ModSupportType.KnownWorkingWithMod: - message = "Known to work with mod"; - labelColor = new Color32(160, 255, 0, 255); - break; case ModSupportType.Unknown: message = "Unknown"; labelColor = new Color32(255, 100, 0, 255);