public async Task PluginsAsync(CommandContext Context) { var srv = (Server)Context.Server; var sender = Context.Sender; var pluginCount = srv.PluginManager.Plugins.Count; var message = new ChatMessage { Text = $"{ChatColor.Reset}List of plugins ({ChatColor.Gold}{pluginCount}{ChatColor.Reset}): ", }; var messages = new List <ChatMessage>(); for (int i = 0; i < pluginCount; i++) { var pluginContainer = srv.PluginManager.Plugins[i]; var info = pluginContainer.Info; var plugin = new ChatMessage(); var colorByState = pluginContainer.Loaded || pluginContainer.IsReady ? HexColor.Green : HexColor.Red; plugin.Text = pluginContainer.Info.Name; plugin.Color = colorByState; plugin.HoverEvent = new HoverComponent { Action = EHoverAction.ShowText, Contents = $"{colorByState}{info.Name}{ChatColor.Reset}\nVersion: {colorByState}{info.Version}{ChatColor.Reset}\nAuthor(s): {colorByState}{info.Authors}{ChatColor.Reset}" }; if (pluginContainer.Info.ProjectUrl != null) { plugin.ClickEvent = new ClickComponent { Action = EClickAction.OpenUrl, Value = pluginContainer.Info.ProjectUrl.AbsoluteUri } } ; messages.Add(plugin); messages.Add(new ChatMessage { Text = $"{ChatColor.Reset}{(i + 1 < srv.PluginManager.Plugins.Count ? ", " : "")}" }); } if (messages.Count > 0) { message.AddExtra(messages); } else { message.Text = $"{ChatColor.Gold}There is no plugins installed{ChatColor.Reset}"; } await sender.SendMessageAsync(message); }
public async Task PluginsAsync(ObsidianContext Context) { var srv = (Server)Context.Server; var player = (Player)Context.Player; var pluginCount = srv.PluginManager.Plugins.Count; var message = new ChatMessage { Text = $"{ChatColor.Reset}List of plugins ({ChatColor.Gold}{pluginCount}{ChatColor.Reset}): ", }; var messages = new List <ChatMessage>(); for (int i = 0; i < pluginCount; i++) { var pluginContainer = srv.PluginManager.Plugins[i]; var info = pluginContainer.Info; var plugin = new ChatMessage(); var colorByState = pluginContainer.Loaded || pluginContainer.IsReady ? ChatColor.DarkGreen : ChatColor.DarkRed; plugin.Text = colorByState + pluginContainer.Info.Name; plugin.HoverEvent = new TextComponent { Action = ETextAction.ShowText, Value = $"{colorByState}{info.Name}{ChatColor.Reset}\nVersion: {colorByState}{info.Version}{ChatColor.Reset}\nAuthor(s): {colorByState}{info.Authors}{ChatColor.Reset}" }; if (pluginContainer.Info.ProjectUrl != null) { plugin.ClickEvent = new TextComponent { Action = ETextAction.OpenUrl, Value = pluginContainer.Info.ProjectUrl.AbsoluteUri } } ; messages.Add(plugin); messages.Add(new ChatMessage { Text = $"{ChatColor.Reset}{(i + 1 < srv.PluginManager.Plugins.Count ? ", " : "")}" }); } if (messages.Count > 0) { message.AddExtra(messages); } await player.SendMessageAsync(message); }