RUMBLE does not support other mod managers. If you want to use a manager, you must use the RUMBLE Mod Manager, a manager specifically designed for this game.
Decompiled source of BPHider v1.2.1
Mods/BPHider.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BPHider; using HarmonyLib; using Il2CppRUMBLE.Managers; using Il2CppRUMBLE.Players.Subsystems; using Il2CppRUMBLE.Social; using Il2CppRUMBLE.Social.Phone; using Il2CppRUMBLE.Utilities; using Il2CppTMPro; using MatchInfo; using MelonLoader; using MelonLoader.Preferences; using RumbleModdingAPI.RMAPI; using UIFramework; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: MelonInfo(typeof(Main), "BPHider", "1.2.1", "UlvakSkillz", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: MelonColor(255, 195, 0, 255)] [assembly: MelonAuthorColor(255, 195, 0, 255)] [assembly: VerifyLoaderVersion(0, 7, 2, true)] [assembly: MelonAdditionalDependencies(new string[] { "UIFramework" })] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("BPHider")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+da6e04ed0c7687f76b3a26ea40adb0168844b97d")] [assembly: AssemblyProduct("BPHider")] [assembly: AssemblyTitle("BPHider")] [assembly: AssemblyVersion("1.0.0.0")] namespace BPHider; public static class BuildInfo { public const string ModName = "BPHider"; public const string ModVersion = "1.2.1"; public const string Author = "UlvakSkillz"; } public class Main : MelonMod { [HarmonyPatch(typeof(Main), "Log", new Type[] { typeof(string) })] public static class LoggedInitializedPatch { private static void Postfix(ref Main __instance, string msg) { if (msg != "Initialized") { return; } hasMatchInfo = true; try { matchInfoPlayer1BP = Main.player1BPComponent; } catch { return; } try { matchInfoPlayer2BP = Main.player2BPComponent; } catch { } } } [HarmonyPatch(typeof(PlayerNameTag), "UpdatePlayerBPText", new Type[] { })] public static class UpdatePlayerBPText { private static void Postfix(ref PlayerNameTag __instance) { UpdateBP(__instance); } } [HarmonyPatch(typeof(PlayerTag), "RefreshFriendIcon", new Type[] { typeof(UserData), typeof(FriendStatus), typeof(bool) })] public static class RefreshFriendIcon { private static void Postfix(ref PlayerTag __instance, UserData userData, FriendStatus friendStatus, bool sendEvent) { playerTags.Add(__instance); UpdateBP(__instance); } } [HarmonyPatch(typeof(ScrollableList), "PageDown", new Type[] { })] public static class PageDown { private static void Postfix(ref ScrollableList __instance) { UpdateBPs(); } } [HarmonyPatch(typeof(ScrollableList), "PageUp", new Type[] { })] public static class PageUp { private static void Postfix(ref ScrollableList __instance) { UpdateBPs(); } } [HarmonyPatch(typeof(ScrollableList), "ScrollDown", new Type[] { })] public static class ScrollDown { private static void Postfix(ref ScrollableList __instance) { UpdateBPs(); } } [HarmonyPatch(typeof(ScrollableList), "ScrollUp", new Type[] { })] public static class ScrollUp { private static void Postfix(ref ScrollableList __instance) { UpdateBPs(); } } [CompilerGenerated] private sealed class <HideMatchInfoBP>d__7 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <HideMatchInfoBP>d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForFixedUpdate(); <>1__state = 1; return true; case 1: <>1__state = -1; if (Preferences.enabledInMatches.Value) { ((TMP_Text)matchInfoPlayer1BP).text = "??????"; } if (Preferences.hideOwn.Value) { ((TMP_Text)matchInfoPlayer2BP).text = "??????"; } return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private static bool hasMatchInfo = false; private static TextMeshPro matchInfoPlayer1BP; private static TextMeshPro matchInfoPlayer2BP; private static readonly List<PlayerTag> playerTags = new List<PlayerTag>(); public override void OnLateInitializeMelon() { Actions.onMapInitialized += MapInit; } public override void OnInitializeMelon() { Preferences.InitPrefs(); ((ModelModItem)UI.Register((MelonBase)(object)this, (MelonPreferences_Category[])(object)new MelonPreferences_Category[1] { Preferences.BPHiderMainCategory })).OnModSaved += Save; } private void MapInit(string map) { playerTags.Clear(); if (hasMatchInfo && map.Contains("Map")) { MelonCoroutines.Start(HideMatchInfoBP()); } } [IteratorStateMachine(typeof(<HideMatchInfoBP>d__7))] private static IEnumerator HideMatchInfoBP() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <HideMatchInfoBP>d__7(0); } private static void Save() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; bool flag = Preferences.IsPrefChanged((MelonPreferences_Entry)(object)Preferences.hideOwn); bool flag2 = Preferences.IsPrefChanged((MelonPreferences_Entry)(object)Preferences.enabledInMatches); bool flag3 = Preferences.IsPrefChanged((MelonPreferences_Entry)(object)Preferences.enabledInGym); bool flag4 = Preferences.IsPrefChanged((MelonPreferences_Entry)(object)Preferences.enabledInParks); Preferences.StoreLastSavedPrefs(); if (!name.Contains("Map") && (flag || flag3 || flag4)) { UpdateBPs(); } else { if (!name.Contains("Map") || !(flag2 || flag)) { return; } for (int i = 1; i < Singleton<PlayerManager>.instance.AllPlayers.Count; i++) { UpdateBP(Singleton<PlayerManager>.instance.AllPlayers[i].Controller.PlayerNameTag); } if (hasMatchInfo) { try { ((TMP_Text)matchInfoPlayer1BP).text = (Preferences.enabledInMatches.Value ? "????? BP" : Singleton<PlayerManager>.instance.AllPlayers[1].Data.GeneralData.BattlePoints.ToString()); } catch { return; } try { ((TMP_Text)matchInfoPlayer2BP).text = (Preferences.hideOwn.Value ? "????? BP" : Singleton<PlayerManager>.instance.localPlayer.Data.GeneralData.BattlePoints.ToString()); } catch { } } } } private static void UpdateBPs() { foreach (PlayerTag playerTag in playerTags) { UpdateBP(playerTag); } } private static void UpdateBP(PlayerNameTag nameTag) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (Singleton<PlayerManager>.instance.localPlayer.Data.GeneralData.PublicUsername == nameTag.playerNameText.text) { nameTag.playerBPAmountText.text = (Preferences.hideOwn.Value ? "??????" : ((PlayerControllerSubsystem)nameTag).parentController.assignedPlayer.Data.GeneralData.BattlePoints.ToString()); return; } switch (name) { case "Gym": nameTag.playerBPAmountText.text = (Preferences.enabledInGym.Value ? "??????" : ((PlayerControllerSubsystem)nameTag).parentController.assignedPlayer.Data.GeneralData.BattlePoints.ToString()); break; case "Park": nameTag.playerBPAmountText.text = (Preferences.enabledInParks.Value ? "??????" : ((PlayerControllerSubsystem)nameTag).parentController.assignedPlayer.Data.GeneralData.BattlePoints.ToString()); break; case "Map0": case "Map1": nameTag.playerBPAmountText.text = (Preferences.enabledInMatches.Value ? "??????" : ((PlayerControllerSubsystem)nameTag).parentController.assignedPlayer.Data.GeneralData.BattlePoints.ToString()); break; } } private static void UpdateBP(PlayerTag playerTag) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (playerTag.UserData.publicName == Singleton<PlayerManager>.instance.localPlayer.Data.GeneralData.PublicUsername) { playerTag.battlePoints.text = (Preferences.hideOwn.Value ? "??????" : playerTag.UserData.battlePoints.ToString()); return; } switch (name) { case "Gym": playerTag.battlePoints.text = (Preferences.enabledInGym.Value ? "??????" : playerTag.UserData.battlePoints.ToString()); break; case "Park": playerTag.battlePoints.text = (Preferences.enabledInParks.Value ? "??????" : playerTag.UserData.battlePoints.ToString()); break; case "Map0": case "Map1": playerTag.battlePoints.text = (Preferences.enabledInMatches.Value ? "??????" : playerTag.UserData.battlePoints.ToString()); break; } } } public class Preferences { private const string CONFIG_FILE = "config.cfg"; private const string USER_DATA = "UserData/BPHider/"; internal static MelonPreferences_Category BPHiderMainCategory; internal static MelonPreferences_Entry<bool> hideOwn; internal static MelonPreferences_Entry<bool> enabledInMatches; internal static MelonPreferences_Entry<bool> enabledInGym; internal static MelonPreferences_Entry<bool> enabledInParks; internal static Dictionary<MelonPreferences_Entry, object> LastSavedValues = new Dictionary<MelonPreferences_Entry, object>(); internal static void InitPrefs() { if (!Directory.Exists("UserData/BPHider/")) { Directory.CreateDirectory("UserData/BPHider/"); } BPHiderMainCategory = MelonPreferences.CreateCategory("BPHider", "Settings"); BPHiderMainCategory.SetFilePath(Path.Combine("UserData/BPHider/", "config.cfg")); hideOwn = BPHiderMainCategory.CreateEntry<bool>("HideYourBP", true, "Hide Your BP", "Toggles Your BPs On/Off", false, false, (ValueValidator)null, (string)null); enabledInMatches = BPHiderMainCategory.CreateEntry<bool>("Hide in Matches", true, "Hide in Matches", "Toggles BPs On/Off in Matches", false, false, (ValueValidator)null, (string)null); enabledInGym = BPHiderMainCategory.CreateEntry<bool>("HideInGym", true, "Hide in Gym", "Toggles BPs On/Off in the Gym", false, false, (ValueValidator)null, (string)null); enabledInParks = BPHiderMainCategory.CreateEntry<bool>("Hide in Parks", true, "Hide in Parks", "Toggles BPs On/Off in Parks", false, false, (ValueValidator)null, (string)null); StoreLastSavedPrefs(); } internal static void StoreLastSavedPrefs() { List<MelonPreferences_Entry> list = new List<MelonPreferences_Entry>(); list.AddRange(BPHiderMainCategory.Entries); foreach (MelonPreferences_Entry item in list) { LastSavedValues[item] = item.BoxedValue; } } public static bool AnyPrefsChanged() { foreach (KeyValuePair<MelonPreferences_Entry, object> lastSavedValue in LastSavedValues) { if (!lastSavedValue.Key.BoxedValue.Equals(lastSavedValue.Value)) { return true; } } return false; } public static bool IsPrefChanged(MelonPreferences_Entry entry) { if (LastSavedValues.TryGetValue(entry, out var value)) { return !entry.BoxedValue.Equals(value); } return false; } }