Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of RPChat v0.4.2
plugins\RPChat.dll
Decompiled a year agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("JotunnModStub")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("JotunnModStub")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("0.0.1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.1.0")] namespace RPChat; [BepInPlugin("org.bepinex.plugins.bid.rpchat", "RPChat", "0.4.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] internal class RPChat : BaseUnityPlugin { [HarmonyPatch(typeof(Player), "CanSwitchPVP")] private class Player_CanSwitchPVP_patch { private static bool Prefix(ref bool __result) { if (PVPConfig.Value) { __result = false; return false; } return true; } } [HarmonyPatch(typeof(Player), "OnSpawned")] private class Player_OnSpawned_patch { private static void Postfix(Player __instance) { if (PVPConfig.Value) { __instance.SetPVP(true); } } } [HarmonyPatch(typeof(Player), "OnRespawn")] private class Player_OnRespawn_patch { private static void Postfix(Player __instance) { if (PVPConfig.Value) { __instance.SetPVP(true); } } } [HarmonyPatch(typeof(ZNet), "Awake")] private class ZNet_Awake_patch { private static void Postfix(ZNet __instance) { if (DontShowPlayersConfig.Value) { __instance.SetPublicReferencePosition(false); } } } [HarmonyPatch(typeof(ZNet), "SetPublicReferencePosition")] private class ZNet_SetPublicReferencePosition_patch { private static void Prefix(ref bool pub) { if (DontShowPlayersConfig.Value) { pub = false; if ((Object)(object)Minimap.instance != (Object)null && !Minimap.instance.m_publicPosition.isOn) { ((Selectable)Minimap.instance.m_publicPosition).interactable = false; } } else { ((Selectable)Minimap.instance.m_publicPosition).interactable = true; } } } [HarmonyPatch(typeof(ZNet), "IsReferencePositionPublic")] private class ZNet_IsReferencePositionPublic_patch { private static bool Prefix(ref bool __result) { if (DontShowPlayersConfig.Value) { __result = false; if ((Object)(object)Minimap.instance != (Object)null && ((Selectable)Minimap.instance.m_publicPosition).interactable) { ((Selectable)Minimap.instance.m_publicPosition).interactable = false; } return false; } if ((Object)(object)Minimap.instance != (Object)null && !((Selectable)Minimap.instance.m_publicPosition).interactable) { ((Selectable)Minimap.instance.m_publicPosition).interactable = true; } return true; } } [HarmonyPatch(typeof(Player), "SetPVP", new Type[] { typeof(bool) })] private class Player_SetPVP_patch { private static void Prefix(ref bool enabled, Player __instance) { if (PVPConfig.Value) { enabled = true; if ((Object)(object)InventoryGui.instance != (Object)null && !InventoryGui.instance.m_pvp.isOn) { InventoryGui.instance.m_pvp.isOn = true; } } } } [HarmonyPatch(typeof(Talker), "Awake")] private class Talker_Awake_patch { private static void Postfix(Talker __instance) { if (!((Object)(object)__instance == (Object)null)) { __instance.m_visperDistance = WhisperDistanceConfig.Value; __instance.m_normalDistance = SayDistanceConfig.Value; __instance.m_shoutDistance = ShoutDistanceConfig.Value; } } } [HarmonyPatch(typeof(Chat), "OnNewChatMessage", new Type[] { typeof(GameObject), typeof(long), typeof(Vector3), typeof(Type), typeof(UserInfo), typeof(string), typeof(string) })] private class Chat_OnNewChatMessage_patch { private static bool Prefix(GameObject go, long senderID, Vector3 pos, Type type, UserInfo user, string text, string senderNetworkUserId) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected I4, but got Unknown //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Player.m_localPlayer == (Object)null) { return true; } float num = 0f; switch ((int)type) { case 0: num = WhisperDistanceConfig.Value; break; case 1: num = SayDistanceConfig.Value; break; case 2: num = ShoutDistanceConfig.Value; break; case 3: num = SayDistanceConfig.Value; break; } Vector3 val = pos; if ((int)type == 3) { foreach (Player allPlayer in Player.GetAllPlayers()) { ZDOID zDOID = ((Character)allPlayer).GetZDOID(); if (((ZDOID)(ref zDOID)).UserID == senderID) { val = ((Component)allPlayer).transform.position; } } } if (Vector3.Distance(val, ((Component)Player.m_localPlayer).transform.position) < num) { return true; } return false; } } public const string PluginGUID = "org.bepinex.plugins.bid.rpchat"; public const string PluginName = "RPChat"; public const string PluginVersion = "0.4.2"; public static ConfigEntry<int> WhisperDistanceConfig; public static ConfigEntry<int> SayDistanceConfig; public static ConfigEntry<int> ShoutDistanceConfig; public static ConfigEntry<bool> PVPConfig; public static ConfigEntry<bool> DontShowPlayersConfig; private readonly Harmony harmony = new Harmony("org.bepinex.plugins.bid.rpchat"); public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization(); private void Awake() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) Logger.LogInfo((object)"RPChat has landed"); CreateConfigValues(); new Harmony("org.bepinex.plugins.bid.rpchat").PatchAll(); CreatureManager.OnVanillaCreaturesAvailable += ModifyAndCloneVanillaCreatures; } private void OnDestroy() { harmony.UnpatchSelf(); } private void AddInputs() { } private void CreateConfigValues() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Expected O, but got Unknown //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Expected O, but got Unknown //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Expected O, but got Unknown ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; WhisperDistanceConfig = ((BaseUnityPlugin)this).Config.Bind<int>("Server config", "WhisperDistance", 4, new ConfigDescription("distance whispering can be heard", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); SayDistanceConfig = ((BaseUnityPlugin)this).Config.Bind<int>("Server config", "SayDistance", 15, new ConfigDescription("distance normal chats can be heard", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); ShoutDistanceConfig = ((BaseUnityPlugin)this).Config.Bind<int>("Server config", "ShoutDistance", 70, new ConfigDescription("distance shouting can be heard", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); PVPConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Server config", "PVPOn", false, new ConfigDescription("force PVP on", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); DontShowPlayersConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Server config", "ForceShowPlayersOff", false, new ConfigDescription("force visibility of player off", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr) { if (attr.InitialSynchronization) { Logger.LogMessage((object)"Initial Config sync event received"); } else { Logger.LogMessage((object)"Config sync event received"); } }; if ((Object)(object)Player.m_localPlayer != (Object)null && PVPConfig.Value) { Player.m_localPlayer.SetPVP(PVPConfig.Value); } if ((Object)(object)ZNet.instance != (Object)null && DontShowPlayersConfig.Value) { ZNet.instance.SetPublicReferencePosition(false); } } private void Update() { } private void ModifyAndCloneVanillaCreatures() { CreatureManager.OnVanillaCreaturesAvailable -= ModifyAndCloneVanillaCreatures; } }