Пример #1
0
        /// <summary> Deregisters all automatically
        /// and mainly registered commands. </summary>
        public static void Deregister(TerrariaPlugin Plugin)
        {
            int count = 0;

            foreach (Type type in Assembly.GetAssembly(Plugin.GetType()).GetTypes())
            {
                foreach (MethodInfo method in type.GetMethods())
                {
                    if (Deregister(method))
                    {
                        count++;
                    }
                }
            }
            if (count > 0)
            {
                TShock.Log.ConsoleInfo($"[CommandManager] Deregistered " +
                                       $"{count} commands in plugin '{Plugin.Name}'.");
            }
        }
Пример #2
0
        /// <summary> Registers all <see cref="CommandManagerDelegate"/>
        /// with <see cref="CommandInfoAttribute"/>. </summary>
        public static string[] Register(TerrariaPlugin Plugin,
                                        bool SkipIfHasNotRegisterAttribute = false)
        {
            List <string> names = new List <string>();

            MethodInfo[] methods = Assembly.GetAssembly(Plugin.GetType())
                                   .GetTypes()
                                   .SelectMany(t => t.GetMethods())
                                   .Where(m => m.IsCMDelegate())
                                   .ToArray();

            foreach (MethodInfo method in methods)
            {
                if (Register(method, SkipIfHasNotRegisterAttribute,
                             out string name))
                {
                    names.Add(name);
                }
            }
            return(names.ToArray());
        }
Пример #3
0
        void DisplayPluginInfo(TSPlayer receiver, TerrariaPlugin plugin)
        {
            string opt = GetAssemblyConfiguration(plugin.GetType().Assembly);
            string format;

            if (receiver.RealPlayer)
            {
                format = $"{TShock.Utils.ColorTag("{0}", Color.Violet)}: {{1}}";
            }
            else
            {
                format = "{0}: {1}";
            }

            receiver.SendInfoMessage(format, "Name",
                                     string.Format("{0} (v{1}) ({2})", plugin.Name, plugin.Version.ToString(),
                                                   opt == "Debug"
                        ? TShock.Utils.ColorTag("Debug", Color.OrangeRed)
                        : TShock.Utils.ColorTag("Release", Color.LimeGreen)));

            receiver.SendInfoMessage(format, "Author", plugin.Author);
            receiver.SendInfoMessage(format, "Description", plugin.Description);
        }