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 RemoteSignalTranslator v1.0.2
BepInEx\plugins\RemoteSignalTranslator\RemoteSignalTranslator.dll
Decompiled 2 months agousing System; using System.Diagnostics; using System.Drawing; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using ChatCommandAPI; using ChatCommandAPI.Utils; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("RemoteSignalTranslator")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("RemoteSignalTranslator")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("0F10D8DF-E840-4F4C-BF67-12214079366B")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyVersion("1.0.0.0")] namespace RemoteSignalTranslator; [BepInPlugin("2unhy2.RemoteSignalTranslator", "RemoteSignalTranslator", "1.0.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public const string ModGuid = "2unhy2.RemoteSignalTranslator"; public const string ModName = "RemoteSignalTranslator"; public const string ModVersion = "1.0.2"; private readonly Harmony harmony = new Harmony("2unhy2.RemoteSignalTranslator"); private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"RemoteSignalTranslator has loaded successfully!"); harmony.PatchAll(); SignalImePatch.PatchChatCommandApi(harmony); new SignalCommand(); } } public class SignalCommand : Command { public override string Name => "Signal Translator"; public override string Description => "Send a Signal Translator message remotely."; public override string Command => "sig"; public override string[] Syntax => new string[1] { "<message>" }; public override void Invoke(string args) { Execute(args); } public static void Execute(string args) { HUDManager instance = HUDManager.Instance; if (string.IsNullOrEmpty(args)) { Chat.Print("<color=#B084F5>[RemoteSignalTranslator]</color> Enter a message after /sig.", (Color?)null); return; } SignalTranslator val = Object.FindObjectOfType<SignalTranslator>(); if ((Object)(object)val == (Object)null) { Chat.Print("<color=#B084F5>[RemoteSignalTranslator]</color> You need to purchase the Signal Translator first.", (Color?)null); return; } float num = Time.realtimeSinceStartup - val.timeLastUsingSignalTranslator; if (num < 8f) { int num2 = Mathf.CeilToInt(8f - num); Chat.Print($"<color=#B084F5>[RemoteSignalTranslator]</color> Signal Translator ready in {num2}s.", (Color?)null); } else { instance.UseSignalTranslatorServerRpc(args); } } } [HarmonyPatch(typeof(HUDManager))] public static class SignalImePatch { public static void PatchChatCommandApi(Harmony harmony) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown Type type = AccessTools.TypeByName("ChatCommandAPI.Patches.HUDManager_SubmitChat_performed"); if (!(type == null)) { MethodInfo methodInfo = AccessTools.Method(type, "Prefix", (Type[])null, (Type[])null); MethodInfo methodInfo2 = AccessTools.Method(typeof(SignalImePatch), "BeforeChatCommandApiPrefix", (Type[])null, (Type[])null); if (!(methodInfo == null) && !(methodInfo2 == null)) { harmony.Patch((MethodBase)methodInfo, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } } } public static bool BeforeChatCommandApiPrefix(ref HUDManager __0, ref bool __result) { string text = __0.chatTextField.text; if (text == "/sig" || text.StartsWith("/sig ")) { __result = true; return false; } return true; } [HarmonyPatch("OnEnable")] [HarmonyPostfix] public static void OnEnable(HUDManager __instance) { ((UnityEvent<string>)(object)__instance.chatTextField.onSubmit).RemoveListener((UnityAction<string>)OnSubmitChat); ((UnityEvent<string>)(object)__instance.chatTextField.onSubmit).AddListener((UnityAction<string>)OnSubmitChat); } [HarmonyPatch("OnDisable")] [HarmonyPrefix] public static void OnDisable(HUDManager __instance) { ((UnityEvent<string>)(object)__instance.chatTextField.onSubmit).RemoveListener((UnityAction<string>)OnSubmitChat); } [HarmonyPatch("SubmitChat_performed")] [HarmonyPrefix] [HarmonyPriority(int.MaxValue)] public static bool BeforeSubmitChat(HUDManager __instance) { string text = __instance.chatTextField.text; if (text == "/sig" || text.StartsWith("/sig ")) { return false; } return true; } [HarmonyPatch("AddTextToChatOnServer")] [HarmonyPrefix] public static bool BeforeAddTextToChatOnServer(string __0) { if (__0 == "/sig" || __0.StartsWith("/sig ")) { return false; } return true; } private static void OnSubmitChat(string input) { if (!(input != "/sig") || input.StartsWith("/sig ")) { SignalCommand.Execute((input == "/sig") ? "" : input.Substring(5)); CloseChat(HUDManager.Instance); } } private static void CloseChat(HUDManager hudManager) { PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if ((Object)(object)localPlayerController != (Object)null) { localPlayerController.isTypingChat = false; } hudManager.chatTextField.text = ""; EventSystem.current.SetSelectedGameObject((GameObject)null); hudManager.PingHUDElement(hudManager.Chat, 2f, 1f, 0.2f); ((Behaviour)hudManager.typingIndicator).enabled = false; } }