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 LimitCartographyPins v1.1.0
LimitCartographyPins.dll
Decompiled a year agousing System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Configuration; using System.Diagnostics; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("LimitCartographyPins")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LimitCartographyPins")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4499087c-1bc3-4748-807e-1b520d880d3b")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace LimitCartographyPins { [BepInPlugin("Weiler.LimitCartographyPins", "LimitCartographyPins", "1.1.0")] public class Plugin : BaseUnityPlugin { internal const string ModName = "LimitCartographyPins"; internal const string ModVersion = "1.1.0"; internal const string Author = "Weiler"; private const string ModGUID = "Weiler.LimitCartographyPins"; private readonly Harmony _harmony = new Harmony("Weiler.LimitCartographyPins"); public static readonly ManualLogSource ItemManagerModTemplateLogger = Logger.CreateLogSource("LimitCartographyPins"); public void Awake() { Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); } } } namespace LimitCartographyPins.Properties { [CompilerGenerated] [GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")] internal sealed class Settings : ApplicationSettingsBase { private static Settings defaultInstance = (Settings)(object)SettingsBase.Synchronized((SettingsBase)(object)new Settings()); public static Settings Default => defaultInstance; } } namespace LimitCartographyPins.Patches { [HarmonyPatch(typeof(MapTable))] public class MapTable_Patches { private static bool allowRead = true; [HarmonyPrefix] [HarmonyPatch("OnWrite")] private static void OnWrite_PrefixPatch() { allowRead = false; } [HarmonyPostfix] [HarmonyPatch("OnWrite")] private static void OnWrite_PostfixPatch() { allowRead = true; } [HarmonyPrefix] [HarmonyPatch("OnRead", new Type[] { typeof(Switch), typeof(Humanoid), typeof(ItemData), typeof(bool) })] private static bool OnRead_PrefixPatch() { return allowRead; } } [HarmonyPatch(typeof(Minimap))] internal class Minimap_Patches { [HarmonyPatch(typeof(Minimap))] [HarmonyPatch("AddSharedMapData")] public class AddSharedMapDataPatch { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Stfld && list[i + 1].opcode == OpCodes.Br && list[i + 2].opcode == OpCodes.Ldloc_S && list[i + 3].opcode == OpCodes.Ldloc_S && list[i + 4].opcode == OpCodes.Beq) { list[i + 4] = new CodeInstruction(OpCodes.Pop, (object)null); list.Insert(i + 5, new CodeInstruction(OpCodes.Pop, (object)null)); list.Insert(i + 6, new CodeInstruction(OpCodes.Nop, (object)null)); break; } } return list; } } private static bool allowRemovePin = true; public static bool writePinDataOnce = false; [HarmonyPrefix] [HarmonyPatch("AddSharedMapData")] private static void AddSharedMapData_PrefixPatch() { allowRemovePin = false; } [HarmonyPostfix] [HarmonyPatch("AddSharedMapData")] private static void AddSharedMapData_PostfixPatch(Minimap __instance) { allowRemovePin = true; foreach (PinData pin in __instance.m_pins) { if (pin.m_shouldDelete) { pin.m_shouldDelete = false; } } } [HarmonyPrefix] [HarmonyPatch("RemovePin", new Type[] { typeof(PinData) })] private static bool RemovePin_PrefixPatch() { return allowRemovePin; } [HarmonyPrefix] [HarmonyPatch("GetSharedMapData")] private static bool GetSharedMapData_PrefixPatch(Minimap __instance, byte[] oldMapData, ref byte[] __result) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Expected O, but got Unknown //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Invalid comparison between Unknown and I4 //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_037a: Unknown result type (might be due to invalid IL or missing references) //IL_0384: Expected I4, but got Unknown //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) List<bool> list = new List<bool>(); ZPackage val = null; int num = 0; if (oldMapData != null) { val = new ZPackage(oldMapData); num = val.ReadInt(); int num2 = val.ReadInt(); for (int i = 0; i < num2; i++) { list.Add(val.ReadBool()); } } ZPackage val2 = new ZPackage(); val2.Write(3); val2.Write(__instance.m_explored.Length); for (int j = 0; j < __instance.m_explored.Length; j++) { bool flag = __instance.m_explored[j] || __instance.m_exploredOthers[j]; if (list.Count > j) { flag |= list[j]; } val2.Write(flag); } List<PinData> list2 = new List<PinData>(); if (val != null) { int num3 = val.ReadInt(); for (int k = 0; k < num3; k++) { PinData val3 = new PinData(); val3.m_ownerID = val.ReadLong(); val3.m_name = val.ReadString(); val3.m_pos = val.ReadVector3(); val3.m_type = (PinType)val.ReadInt(); val3.m_checked = val.ReadBool(); val3.m_author = ((num >= 3) ? val.ReadString() : ""); val3.m_save = true; list2.Add(val3); } } foreach (PinData pin in __instance.m_pins) { if (!pin.m_save || (int)pin.m_type == 4 || (IsPlayerPin(pin.m_type) && !writePinDataOnce)) { continue; } bool flag2 = false; if (IsPlayerPin(pin.m_type)) { flag2 = true; } PinData val4 = null; foreach (PinData item in list2) { if (item.m_save && Utils.DistanceXZ(pin.m_pos, item.m_pos) < 1f) { bool flag3 = false; if (IsPlayerPin(item.m_type)) { flag3 = true; } if ((flag2 && flag3) || pin.m_type == item.m_type) { val4 = item; break; } } } if (val4 == null) { list2.Add(pin); } } long playerID = Player.m_localPlayer.GetPlayerID(); string networkUserId = PrivilegeManager.GetNetworkUserId(); val2.Write(list2.Count); foreach (PinData item2 in list2) { long num4 = ((item2.m_ownerID != 0L) ? item2.m_ownerID : playerID); string text = ((string.IsNullOrEmpty(item2.m_author) && num4 == playerID) ? networkUserId : item2.m_author); val2.Write(num4); val2.Write(item2.m_name); val2.Write(item2.m_pos); val2.Write((int)item2.m_type); val2.Write(item2.m_checked); val2.Write(text); } writePinDataOnce = false; __result = val2.GetArray(); return false; } public static bool IsPlayerPin(PinType pinType) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Invalid comparison between Unknown and I4 //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Invalid comparison between Unknown and I4 return (int)pinType == 0 || (int)pinType == 1 || (int)pinType == 2 || (int)pinType == 3 || (int)pinType == 6; } } [HarmonyPatch(typeof(Terminal))] internal class Terminal_Patches { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__0_0; public static ConsoleEvent <>9__0_1; public static ConsoleEvent <>9__0_2; public static ConsoleEvent <>9__0_3; internal void <InitTerminal_Patch>b__0_0(ConsoleEventArgs args) { RemoveMyPins(args.Context, args.Args); } internal void <InitTerminal_Patch>b__0_1(ConsoleEventArgs args) { RemoveOthersPins(args.Context, args.Args); } internal void <InitTerminal_Patch>b__0_2(ConsoleEventArgs args) { RemoveAllPins(args.Context, args.Args); } internal void <InitTerminal_Patch>b__0_3(ConsoleEventArgs args) { WritePinData(args.Context, args.Args); } } [HarmonyPostfix] [HarmonyPatch("InitTerminal")] private static void InitTerminal_Patch() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { RemoveMyPins(args.Context, args.Args); }; <>c.<>9__0_0 = val; obj = (object)val; } new ConsoleCommand("removemypins", "Removes all personal pins from map", (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); object obj2 = <>c.<>9__0_1; if (obj2 == null) { ConsoleEvent val2 = delegate(ConsoleEventArgs args) { RemoveOthersPins(args.Context, args.Args); }; <>c.<>9__0_1 = val2; obj2 = (object)val2; } new ConsoleCommand("removeotherspins", "Removes all pins from others from map", (ConsoleEvent)obj2, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); object obj3 = <>c.<>9__0_2; if (obj3 == null) { ConsoleEvent val3 = delegate(ConsoleEventArgs args) { RemoveAllPins(args.Context, args.Args); }; <>c.<>9__0_2 = val3; obj3 = (object)val3; } new ConsoleCommand("removeallpins", "Removes allpins from map", (ConsoleEvent)obj3, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); object obj4 = <>c.<>9__0_3; if (obj4 == null) { ConsoleEvent val4 = delegate(ConsoleEventArgs args) { WritePinData(args.Context, args.Args); }; <>c.<>9__0_3 = val4; obj4 = (object)val4; } new ConsoleCommand("writepindata", "writepindata", (ConsoleEvent)obj4, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); } public static void RemoveMyPins(Terminal context, string[] args) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } List<PinData> list = new List<PinData>(); foreach (PinData pin in Minimap.m_instance.m_pins) { if (Minimap_Patches.IsPlayerPin(pin.m_type) && pin.m_ownerID == 0) { list.Add(pin); } } int num = 0; foreach (PinData item in list) { Minimap.m_instance.m_pins.Remove(item); num++; } context.AddString($"{num} pins deleted"); } public static void RemoveOthersPins(Terminal context, string[] args) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } List<PinData> list = new List<PinData>(); foreach (PinData pin in Minimap.m_instance.m_pins) { if (Minimap_Patches.IsPlayerPin(pin.m_type) && pin.m_ownerID != 0) { list.Add(pin); } } int num = 0; foreach (PinData item in list) { Minimap.m_instance.m_pins.Remove(item); num++; } context.AddString($"{num} pins deleted"); } public static void RemoveAllPins(Terminal context, string[] args) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } List<PinData> list = new List<PinData>(); foreach (PinData pin in Minimap.m_instance.m_pins) { if (Minimap_Patches.IsPlayerPin(pin.m_type)) { list.Add(pin); } } int num = 0; foreach (PinData item in list) { Minimap.m_instance.m_pins.Remove(item); num++; } context.AddString($"{num} pins deleted"); } public static void WritePinData(Terminal context, string[] args) { if (!((Object)(object)Player.m_localPlayer == (Object)null)) { Minimap_Patches.writePinDataOnce = true; context.AddString("Pins will be written once on interact with cartography table"); } } } }