The BepInEx console will not appear when launching like it does for other games on Thunderstore. This is normal (and helps prevent crashes during startup). You can turn it back on in your BepInEx.cfg file.
Decompiled source of CustomMessages v1.0.0
CustomMessages.dll
Decompiled 2 weeks 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.Configuration; using BepInEx.Logging; using CustomMessage.Patches; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("CustomMessages")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+df9829921202259d3aa31c0f8961b314cca5aaac")] [assembly: AssemblyProduct("CustomMessages")] [assembly: AssemblyTitle("CustomMessages")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace CustomMessage { [BepInPlugin("MasterAli2.CustomMessage", "Custom Message", "1.0.0")] public class CustomMessages : BaseUnityPlugin { public const string GUID = "MasterAli2.CustomMessage"; public const string NAME = "Custom Message"; public const string VERSION = "1.0.0"; internal static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } public static CustomMessages Instance { get; private set; } public ConfigEntry<string> MessagesConfig { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; Patch(); MessagesConfig = ((BaseUnityPlugin)this).Config.Bind<string>("General", "Messages", "Example Message 1,Example Message 2,You lost the game", "A list of messages that will be randomly picked to be displayed on the main menu; Seperate each entry by a comma"); Logger.LogInfo((object)"MasterAli2.CustomMessage v1.0.0 has loaded!"); } internal static void Patch() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown if (Harmony == null) { Harmony = new Harmony("MasterAli2.CustomMessage"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(typeof(General)); Logger.LogDebug((object)"Finished patching!"); } } } namespace CustomMessage.Patches { internal class General { private static string current = ""; [HarmonyPatch(typeof(DevMessageUI), "Start")] [HarmonyPrefix] private static bool Start(DevMessageUI __instance) { string[] array = CustomMessages.Instance.MessagesConfig.Value.Split(','); current = array[Random.RandomRangeInt(0, array.Length)]; return false; } [HarmonyPatch(typeof(DevMessageUI), "Update")] [HarmonyPrefix] private static bool Update(DevMessageUI __instance) { __instance.parent.SetActive(true); TextMeshProUGUI[] texts = __instance.texts; foreach (TextMeshProUGUI val in texts) { ((TMP_Text)val).text = current; } return false; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }