Exemplo n.º 1
0
        public async Task HelpAsync(ObsidianContext Context)
        {
            StringBuilder help = new StringBuilder();
            await Context.Player.SendMessageAsync(new ChatMessage()
            {
                Bold = true, Underline = true, Text = $"***Command Listing***"
            });

            foreach (var cmd in Context.Commands.GetAllCommands().Where(x => x.Parent == null))
            {
                // only list commands the user may execute.
                var success = true;
                foreach (var check in cmd.ExecutionChecks)
                {
                    if (!await check.RunChecksAsync(Context))
                    {
                        // at least one check failed
                        success = false;
                    }
                }

                if (success)
                {
                    help.Append($"{ChatColor.DarkGreen}{cmd.Name}{ChatColor.Reset}: {cmd.Description}\n");
                }
            }

            await Context.Player.SendMessageAsync(help.ToString());
        }
Exemplo n.º 2
0
        public async Task RequestOpAsync(ObsidianContext Context, string code = null)
        {
            if (!Context.Server.Config.AllowOperatorRequests)
            {
                await Context.Player.SendMessageAsync("§cOperator requests are disabled on this server.");

                return;
            }

            if (Context.Server.Operators.ProcessRequest(Context.Player, code))
            {
                await Context.Player.SendMessageAsync("Your request has been accepted");

                return;
            }

            if (Context.Server.Operators.CreateRequest(Context.Player))
            {
                await Context.Player.SendMessageAsync("A request has been to the server console");
            }
            else
            {
                await Context.Player.SendMessageAsync("§cYou have already sent a request");
            }
        }
Exemplo n.º 3
0
        public async Task TeleportAsync(ObsidianContext Context, [Remaining] Position location)
        {
            var player = (Player)Context.Player;
            await player.SendMessageAsync($"ight homie tryna tp you (and sip dicks) {location.X} {location.Y} {location.Z}");

            await player.TeleportAsync(location);
        }
Exemplo n.º 4
0
        public async Task BreakpointAsync(ObsidianContext Context)
        {
            await Context.Server.BroadcastAsync("You might get kicked due to timeout, a breakpoint will hit in 3 seconds!");

            await Task.Delay(3000);

            Debugger.Break();
        }
Exemplo n.º 5
0
        public async Task ForceChunkReloadAsync(ObsidianContext Context)
        {
            var player = (Player)Context.Player;
            var server = (Server)Context.Server;
            var c      = player.client;
            var world  = server.World;

            await world.UpdateChunksForClientAsync(c, true);
        }
Exemplo n.º 6
0
        public async Task StopAsync(ObsidianContext Context)
        {
            var server = (Server)Context.Server;
            await server.BroadcastAsync($"Server stopped by {ChatColor.Red}{Context.Player.Username}{ChatColor.Reset}.");

            await Task.Run(() =>
            {
                server.StopServer();
            });
        }
Exemplo n.º 7
0
 public async Task RevokePermission(ObsidianContext ctx, string permission)
 {
     if (await ctx.Player.RevokePermission(permission))
     {
         await ctx.Player.SendMessageAsync($"Sucessfully revoked {ChatColor.BrightGreen}{permission}{ChatColor.Reset}.");
     }
     else
     {
         await ctx.Player.SendMessageAsync($"Failed revoking {ChatColor.Red}{permission}{ChatColor.Reset}.");
     }
 }
Exemplo n.º 8
0
 public async Task CheckPermission(ObsidianContext ctx, string permission)
 {
     if (await ctx.Player.HasPermission(permission))
     {
         await ctx.Player.SendMessageAsync($"You have {ChatColor.BrightGreen}{permission}{ChatColor.Reset}.");
     }
     else
     {
         await ctx.Player.SendMessageAsync($"You don't have {ChatColor.Red}{permission}{ChatColor.Reset}.");
     }
 }
Exemplo n.º 9
0
        public async Task ForceChunkReloadAsync(ObsidianContext Context)
        {
            var c     = Context.Client;
            var world = Context.Server.World;

            int dist = c.ClientSettings?.ViewDistance ?? 1;

            (int oldChunkX, int oldChunkZ) = c.Player.LastLocation.ToChunkCoord();
            (int chunkX, int chunkZ)       = c.Player.Location.ToChunkCoord();

            await world.ResendBaseChunksAsync(dist, oldChunkX, oldChunkZ, chunkX, chunkZ, c);
        }
Exemplo n.º 10
0
        public async Task UnclaimOpAsync(ObsidianContext Context, Player player)
        {
            var onlinePlayers = Context.Server.OnlinePlayers;

            if (!onlinePlayers.ContainsKey(player.Uuid) || !onlinePlayers.Any(x => x.Value.Username == player.Username))
            {
                return;
            }

            Context.Server.Operators.RemoveOperator(player);

            await Context.Player.SendMessageAsync($"Made {player} no longer a server operator");
        }
Exemplo n.º 11
0
        public override async Task <bool> RunChecksAsync(ObsidianContext ctx)
        {
            if (this.op && ctx.Player.IsOperator)
            {
                return(true);
            }

            if (this.permission != "")
            {
                return(await ctx.Player.HasPermission(permission.ToLower()));
            }

            return(false);
        }
Exemplo n.º 12
0
        public async Task GiveOpAsync(ObsidianContext Context, IPlayer player)
        {
            var server        = (Server)Context.Server;
            var onlinePlayers = server.OnlinePlayers;

            if (!onlinePlayers.ContainsKey(player.Uuid) || !onlinePlayers.Any(x => x.Value.Username == player.Username))
            {
                return;
            }

            server.Operators.AddOperator((Player)player);

            await Context.Player.SendMessageAsync($"Made {player} a server operator");
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        public async Task GamemodeAsync(ObsidianContext Context, [Remaining] string args_)
        {
            var chatMessage = ChatMessage.Simple("");
            var args        = args_.Contains(" ") ? args_.Split(" ").ToList() : new List <string> {
                args_
            };

            if (args.Count == 1)
            {
                if (args[0].ToLower() == "creative" || args[0].ToLower() == "survival" || args[0].ToLower() == "spectator" || args[0].ToLower() == "adventure")
                {
                    try
                    {
                        var gamemode = (Gamemode)Enum.Parse(typeof(Gamemode), args[0], true);
                        if (Context.Player.Gamemode != gamemode)
                        {
                            await Context.Player.SetGamemodeAsync(gamemode);

                            chatMessage = ChatMessage.Simple($"{ChatColor.Reset}Your game mode set to {ChatColor.Red}{gamemode}{ChatColor.Reset}.");
                        }
                        else
                        {
                            await Context.Player.SetGamemodeAsync(gamemode);

                            chatMessage = ChatMessage.Simple($"{ChatColor.Reset}Your current game mode is {ChatColor.Red}{gamemode}{ChatColor.Reset}.");
                        }
                    }
                    catch (Exception)
                    {
                        chatMessage = SendCommandUsage("/gamemode <survival/creative/adventure/spectator>");
                    }
                }
            }
            else
            {
                chatMessage = SendCommandUsage("/gamemode <survival/creative/adventure/spectator>");
            }
            var player = (Player)Context.Player;
            await player.SendMessageAsync(chatMessage);
        }
Exemplo n.º 15
0
        public async Task TPSAsync(ObsidianContext ctx)
        {
            ChatColor color;

            if (ctx.Server.TPS > 15)
            {
                color = ChatColor.BrightGreen;
            }
            else if (ctx.Server.TPS > 10)
            {
                color = ChatColor.Yellow;
            }
            else
            {
                color = ChatColor.Red;
            }

            var message = new ChatMessage
            {
                Text = $"{ChatColor.Gold}Current server TPS: {color}{ctx.Server.TPS}",
            };
            await ctx.Player.SendMessageAsync(message);
        }
Exemplo n.º 16
0
 public Task AnnounceAsync(ObsidianContext Context, [Remaining] string text) => Context.Server.BroadcastAsync(text, 2);
Exemplo n.º 17
0
 public async Task ObsidianAsync(ObsidianContext Context)
 {
     await Context.Player.SendMessageAsync("§dWelcome to Obsidian Test Build. §l§4<3", 2);
 }
Exemplo n.º 18
0
 public Task DeclareCommandsTestAsync(ObsidianContext Context) => ((Player)Context.Player).client.SendDeclareCommandsAsync();
Exemplo n.º 19
0
 public async Task HelpAsync(ObsidianContext Context, [Remaining] string cmd)
 {
     // TODO subcommand help
     await Context.Player.SendMessageAsync("Overload test");
 }
Exemplo n.º 20
0
 public async Task GamemodeAsync(ObsidianContext Context)
 {
     var chatMessage = SendCommandUsage("/gamemode <survival/creative/adventure/spectator>");
     var player      = (Player)Context.Player;
     await player.SendMessageAsync(chatMessage);
 }
Exemplo n.º 21
0
 public Task DeclareCommandsTestAsync(ObsidianContext Context) => Context.Client.SendDeclareCommandsAsync();
Exemplo n.º 22
0
        public async Task HelpAsync(ObsidianContext Context, int page)
        {
            var player            = (Player)Context.Player;
            var allcommands       = Context.Commands.GetAllCommands();
            var availablecommands = new List <Command>();

            // filter available commands
            foreach (var cmd in allcommands)
            {
                var success = true;
                // check commands
                // only list commands the user may execute.
                foreach (var check in cmd.ExecutionChecks)
                {
                    if (!await check.RunChecksAsync(Context))
                    {
                        success = false;
                    }
                }
                if (success)
                {
                    availablecommands.Add(cmd);
                }
            }

            int commandcount = availablecommands.Count();

            var remainder = commandcount % CommandsPerPage;
            int pagecount = (commandcount - remainder) / CommandsPerPage; // all commands / page commands - remainder

            if (remainder > 0)
            {
                pagecount++; // if remainder, extra page
            }
            if (page < 1 || page > pagecount)
            {
                await player.SendMessageAsync(ChatMessage.Simple($"{ChatColor.Red}Invalid help page."));

                return;
            }

            var cmdsection = availablecommands.Skip((page - 1) * CommandsPerPage).Take(CommandsPerPage);

            var commands = ChatMessage.Simple("\n");
            var header   = new ChatMessage()
            {
                Underline = true,
                Text      = $"List of available commands ({page}/{pagecount}):"
            };

            commands.AddExtra(header);
            foreach (var cmd in cmdsection.Where(x => x.Parent == null))
            {
                var commandName = new ChatMessage
                {
                    Text       = $"\n{ChatColor.Gold}{(cmd.Usage == "" ? $"/{cmd.Name}" : cmd.Usage)}",
                    ClickEvent = new TextComponent
                    {
                        Action = ETextAction.SuggestCommand,
                        Value  = $"{(cmd.Usage == "" ? $"/{cmd.Name}" : cmd.Usage.Contains(" ") ? $"{cmd.Usage.Split(" ")[0]} " : cmd.Usage)}"
                    },
                    HoverEvent = new TextComponent
                    {
                        Action = ETextAction.ShowText,
                        Value  = $"Click to suggest the command"
                    }
                };
                commands.AddExtra(commandName);

                var commandInfo = new ChatMessage
                {
                    Text = $"{ChatColor.Gray}:{ChatColor.Reset} {cmd.Description}"
                };
                commands.AddExtra(commandInfo);
            }

            await player.SendMessageAsync(commands);
        }
Exemplo n.º 23
0
 public async Task SubCommandAsync(ObsidianContext ctx)
 {
     await ctx.Player.SendMessageAsync("group subcommand", 1);
 }
Exemplo n.º 24
0
 public Task EchoAsync(ObsidianContext Context, [Remaining] string text) => Context.Server.BroadcastAsync(text);
Exemplo n.º 25
0
 public async Task TestAsync(ObsidianContext Context, string test1, string test2, string test3)
 {
     await Context.Player.SendMessageAsync($"{test1} + {test2} + {test3}");
 }
Exemplo n.º 26
0
        public async Task ForceSkinAsync(ObsidianContext Context)
        {
            await Context.Client.SendPlayerInfoAsync();

            await Context.Player.SendMessageAsync(ChatMessage.Simple("done"));
        }
Exemplo n.º 27
0
 public async Task ExecuteAsync(ObsidianContext ctx)
 {
     await ctx.Player.SendMessageAsync("group command", 1);
 }
Exemplo n.º 28
0
 public Task LeaveAsync(ObsidianContext Context) => Context.Player.KickAsync("Is this what you wanted?");
Exemplo n.º 29
0
 public async Task SubCommandAsync(ObsidianContext ctx, int test)
 {
     await ctx.Player.SendMessageAsync($"group subcommand overload {test}", 1);
 }
Exemplo n.º 30
0
 public Task UptimeAsync(ObsidianContext Context)
 => Context.Player.SendMessageAsync($"Uptime: {DateTimeOffset.Now.Subtract(Context.Server.StartTime)}");