diff options
| author | raven <citrons@mondecitronne.com> | 2026-03-21 17:25:01 -0500 |
|---|---|---|
| committer | raven <citrons@mondecitronne.com> | 2026-03-21 17:25:01 -0500 |
| commit | 5b7c853952b1a358bf53053a6944bcbd30a200bd (patch) | |
| tree | 295397227862ea669cbcdce247f396f33c85606a /server/commands.go | |
| parent | 0f0a8676f96d6fef56c4d4afba09cb4149899070 (diff) | |
/kick and /ban
Diffstat (limited to 'server/commands.go')
| -rw-r--r-- | server/commands.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/server/commands.go b/server/commands.go index 4e544ce..804be0d 100644 --- a/server/commands.go +++ b/server/commands.go @@ -1,6 +1,7 @@ package server import ( + "io" "fmt" "sort" "strconv" @@ -195,6 +196,50 @@ var commands = map[string]commandHandler { } return "" }, + "kick": func(ctx commandCtx) string { + name, ok := ctx.arg.nextArg() + if !ok { + return usage("kick") + } + arg, _ := io.ReadAll(ctx.arg.rd) + reason := strings.TrimSpace(string(arg)) + if reason != "" { + reason = "Kicked: " + reason + } + if ctx.server.kick(name, string(reason)) { + ctx.sender.OnCommandOutput(ctx.server, + fmt.Sprintf("Kicked %s.", name), + ) + } else { + return "Unknown player: " + name + } + return "" + }, + "ban": func(ctx commandCtx) string { + name, ok := ctx.arg.nextArg() + if !ok { + return usage("ban") + } + arg, _ := io.ReadAll(ctx.arg.rd) + reason := strings.TrimSpace(string(arg)) + if reason != "" { + reason = "Banned: " + reason + } + ctx.server.ban(name, string(reason)) + ctx.sender.OnCommandOutput(ctx.server, fmt.Sprintf("Banned %s.", name)) + return "" + }, + "unban": func(ctx commandCtx) string { + name, ok := ctx.arg.nextArg() + if !ok { + return usage("unban") + } + ctx.server.unban(name) + ctx.sender.OnCommandOutput(ctx.server, + fmt.Sprintf("Unbanned %s.", name), + ) + return "" + }, "op": func(ctx commandCtx) string { name, ok := ctx.arg.nextArg() if !ok { @@ -267,6 +312,8 @@ var commands = map[string]commandHandler { var commandAuth = map[string]authLevel { "tp": cheatAuth, + "kick": moderateAuth, + "ban": moderateAuth, "createLevel": opAuth, "op": opAuth, "deop": opAuth, @@ -291,6 +338,18 @@ var help = map[string][]string { "* --gen: Level generation type (flat, empty)", "* --size: Level dimensions", }, + "kick": []string { + "/kick <player> [reason]", + "Disconnect a player from the server", + }, + "ban": []string { + "/ban <player> [reason]", + "Ban a player from joining the server", + }, + "unban": []string { + "/unban <player> [reason]", + "Unban a player from joining the server", + }, "op": []string { "/op <player>", "Grant operator status", |
