Due to update 2.4.3, some mods may no longer function. FixedConfig may be necessary.
Decompiled source of AntiMatchmaking v1.0.1
AntiMatchmaking.dll
Decompiled a year agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("AntiMatchmaking")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Disables the matchamking button")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("AntiMatchmaking")] [assembly: AssemblyTitle("AntiMatchmaking")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MyFirstBoplPlugin { public static class PluginInfo { public const string PLUGIN_GUID = "AntiMatchmaking"; public const string PLUGIN_NAME = "AntiMatchmaking"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace AntiMatchmaking { [BepInPlugin("com.Melon.AntiMatchmaking", "AntiMatchmaking", "1.0.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Log; private GameObject warningBox; private void Awake() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin AntiMatchmaking is loaded!"); Harmony val = new Harmony("com.Melon.AntiMatchmaking"); MethodInfo methodInfo = AccessTools.Method(typeof(CharacterSelectHandler_online), "CanClickFindPlayers", (Type[])null, (Type[])null); MethodInfo methodInfo2 = AccessTools.Method(typeof(MyPatches), "StopMatchmaking", (Type[])null, (Type[])null); val.Patch((MethodBase)methodInfo, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } private void Update() { //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) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "ChSelect_online" && (Object)(object)warningBox == (Object)null) { DisplayWarning(); } else { activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name != "ChSelect_online" && (Object)(object)warningBox != (Object)null) { Dispose(); } } GameObject val = GameObject.Find("Find_Players"); if ((Object)(object)val != (Object)null) { activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "ChSelect_online") { Object.Destroy((Object)(object)val); } } } private void DisplayWarning() { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) Canvas component = GameObject.Find("Canvas").GetComponent<Canvas>(); if ((Object)(object)component == (Object)null) { Log.LogError((object)"No suitable canvas!"); return; } warningBox = new GameObject("Warning", new Type[2] { typeof(RectTransform), typeof(TextMeshProUGUI) }); warningBox.transform.SetParent(((Component)component).transform); TextMeshProUGUI component2 = warningBox.GetComponent<TextMeshProUGUI>(); ((Graphic)component2).raycastTarget = false; ((TMP_Text)component2).text = "WARNING: Mods have been detected, matchmaking has been disabled!"; ((Graphic)component2).color = Color.red; ((TMP_Text)component2).alignment = (TextAlignmentOptions)514; ((TMP_Text)component2).font = LocalizedText.localizationTable.GetFont(Settings.Get().Language, false); RectTransform component3 = warningBox.GetComponent<RectTransform>(); Rect rect = ((Component)component).GetComponent<RectTransform>().rect; float height = ((Rect)(ref rect)).height; rect = ((Component)component).GetComponent<RectTransform>().rect; float width = ((Rect)(ref rect)).width; ((TMP_Text)component2).fontSize = width / 100f; component3.anchoredPosition = new Vector2(0f, (0f - height) / 2f + 100f); component3.sizeDelta = new Vector2(width, 100f); warningBox.SetActive(true); } private void Dispose() { Object.Destroy((Object)(object)warningBox); } } public class MyPatches { public static bool StopMatchmaking(CharacterSelectHandler_online __instance) { if (__instance == null) { throw new ArgumentNullException("__instance"); } return false; } } }