From 9e4b5390e83a46a99faf28884c0817738beeb605 Mon Sep 17 00:00:00 2001 From: raven Date: Sat, 21 Mar 2026 16:17:22 -0500 Subject: /createLevel command --- server/commands.go | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'server/commands.go') diff --git a/server/commands.go b/server/commands.go index 1bad5f6..5ec321a 100644 --- a/server/commands.go +++ b/server/commands.go @@ -1,6 +1,7 @@ package server import ( + "fmt" "sort" "strconv" "strings" @@ -128,6 +129,66 @@ var commands = map[string]commandHandler { } return "" }, + "createLevel": func(ctx commandCtx) string { + var ( + ok = true + size = blockPos {256, 256, 256} + genType = "flat" + ) + ctx.arg.flags["--size"] = func(arg *arguments) { + var coords []int + for i := 0; i < 3; i++ { + coord, k := arg.nextArg() + i, err := strconv.Atoi(coord) + ok = ok && k && err == nil + coords = append(coords, i) + } + if !ok { + return + } + size = blockPos { + X: blockCoord(coords[0]), + Y: blockCoord(coords[1]), + Z: blockCoord(coords[2]), + } + } + ctx.arg.flags["--gen"] = func(arg *arguments) { + var k bool + genType, k = arg.nextArg() + ok = ok && k + } + ok = ok && len(ctx.arg.allArgs()) == 0 + if !ok { + return usage("createLevel") + } + switch genType { + case "flat", "empty": + default: + return "Unknown generation type: " + genType + } + id, lvl := ctx.server.newLevel(levelInfo {Size: size}) + lvl.Act(nil, func() { + ctx.sender.OnCommandOutput(ctx.server, "Creating level...") + switch genType { + case "flat": + lvl.generateFlat() + case "empty": + lvl.generateEmpty() + } + ctx.sender.OnCommandOutput(ctx.server, + fmt.Sprintf("Generated level id %d.", id), + ) + }) + switch pl := ctx.sender.(type) { + case *player: + pl.ChangeLevel(ctx.server, id, entityPos { + X: entityCoord(size.X) * blockSize / 2, + Y: entityCoord(size.Y) * blockSize / 2 + blockSize, + Z: entityCoord(size.Z) * blockSize / 2, + }) + } + return "" + }, "op": func(ctx commandCtx) string { name, ok := ctx.arg.nextArg() if !ok { @@ -200,6 +261,7 @@ var commands = map[string]commandHandler { var commandAuth = map[string]authLevel { "tp": cheatAuth, + "createLevel": opAuth, "op": opAuth, "deop": opAuth, "save": opAuth, -- cgit v1.2.3