/// <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}'."); } }
/// <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()); }
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); }