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);
        }