private void RefreshListOfPatchOwners(string modId, bool reset = true) { if (reset || _modIdsToColor == null) { _modIdsToColor = new Dictionary <string, string>(); } var rgbaValues = Enum.GetValues(typeof(RGBA)); var rgbaCount = rgbaValues.Length; foreach (Patch patch in Harmony.GetAllPatchedMethods().SelectMany(method => { Patches patches = Harmony.GetPatchInfo(method); return(patches.Prefixes.Concat(patches.Transpilers).Concat(patches.Postfixes)); })) { if (!_modIdsToColor.ContainsKey(patch.owner)) { var rgbaIndex = Math.Abs(patch.owner.GetHashCode() % rgbaCount); RGBA color = (RGBA)rgbaValues.GetValue(rgbaIndex); var colorString = color.ToHtmlString(); _modIdsToColor[patch.owner] = colorString; //_modIdsToColor[patch.owner] = ColorUtility.ToHtmlStringRGBA(UnityEngine.Random.ColorHSV(0f, 1f, 0.25f, 1f, 0.75f, 1f)); } } }