From 4b470bdae6f867c367c28aa95e52b8f41d9ad7d9 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 21 Apr 2024 22:43:36 +0200 Subject: [PATCH] Put commands into categories for //help --- worldedit_commands/cuboid.lua | 5 + worldedit_commands/init.lua | 101 ++++++++++++++++-- worldedit_commands/locale/template.txt | 6 ++ .../locale/worldedit_commands.de.tr | 6 ++ 4 files changed, 108 insertions(+), 10 deletions(-) diff --git a/worldedit_commands/cuboid.lua b/worldedit_commands/cuboid.lua index dce65b6..4a0fc6f 100644 --- a/worldedit_commands/cuboid.lua +++ b/worldedit_commands/cuboid.lua @@ -3,6 +3,7 @@ local S = minetest.get_translator("worldedit_commands") worldedit.register_command("outset", { params = "[h/v] ", description = S("Outset the selected region."), + category = S("Region operations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -42,6 +43,7 @@ worldedit.register_command("outset", { worldedit.register_command("inset", { params = "[h/v] ", description = S("Inset the selected region."), + category = S("Region operations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -79,6 +81,7 @@ worldedit.register_command("inset", { worldedit.register_command("shift", { params = "x/y/z/?/up/down/left/right/front/back [+/-]", description = S("Shifts the selection area without moving its contents"), + category = S("Region operations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -114,6 +117,7 @@ worldedit.register_command("shift", { worldedit.register_command("expand", { params = "[+/-]x/y/z/?/up/down/left/right/front/back [reverse amount]", description = S("Expands the selection in the selected absolute or relative axis"), + category = S("Region operations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -163,6 +167,7 @@ worldedit.register_command("expand", { worldedit.register_command("contract", { params = "[+/-]x/y/z/?/up/down/left/right/front/back [reverse amount]", description = S("Contracts the selection in the selected absolute or relative axis"), + category = S("Region operations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) diff --git a/worldedit_commands/init.lua b/worldedit_commands/init.lua index dd33bc0..4f046cc 100644 --- a/worldedit_commands/init.lua +++ b/worldedit_commands/init.lua @@ -96,6 +96,7 @@ end -- params = "", -- Human readable parameter list (optional) -- -- if params = "" then a parse() implementation will automatically be provided -- description = "", -- Description +-- category = "", -- Category of the command (optional) -- require_pos = 0, -- Number of positions required to be set (optional) -- parse = function(param) -- return true, foo, bar, ... @@ -116,6 +117,7 @@ function worldedit.register_command(name, def) assert(name and #name > 0) def.name = name assert(def.privs) + def.category = def.category or "" def.require_pos = def.require_pos or 0 assert(def.require_pos >= 0 and def.require_pos < 3) if def.params == "" and not def.parse then @@ -317,11 +319,14 @@ worldedit.register_command("help", { return true, param end, func = function(name, param) - local function format_help_line(cmd, def) + local function format_help_line(cmd, def, follow_alias) local msg = minetest.colorize("#00ffff", "//"..cmd) if def.name ~= cmd then msg = msg .. ": " .. S("alias to @1", minetest.colorize("#00ffff", "//"..def.name)) + if follow_alias then + msg = msg .. "\n" .. format_help_line(def.name, def) + end else if def.params and def.params ~= "" then msg = msg .. " " .. def.params @@ -332,38 +337,64 @@ worldedit.register_command("help", { end return msg end + -- @param cmds list of {cmd, def} + local function sort_cmds(cmds) + table.sort(cmds, function(c1, c2) + local cmd1, cmd2 = c1[1], c2[1] + local def1, def2 = c1[2], c2[2] + -- by category (this puts the empty category first) + if def1.category ~= def2.category then + return def1.category < def2.category + end + -- put aliases last + if (cmd1 ~= def1.name) ~= (cmd2 ~= def2.name) then + return cmd2 ~= def2.name + end + -- then by name + return c1[1] < c2[1] + end) + end if not minetest.check_player_privs(name, "worldedit") then return false, S("You are not allowed to use any WorldEdit commands.") end if param == "" then - local cmds = {} + local list = {} for cmd, def in pairs(worldedit.registered_commands) do if minetest.check_player_privs(name, def.privs) then - cmds[#cmds + 1] = cmd + list[#list + 1] = cmd end end - table.sort(cmds) + table.sort(list) local help = minetest.colorize("#00ffff", "//help") return true, S("Available commands: @1@n" .. "Use '@2' to get more information," .. " or '@3' to list everything.", - table.concat(cmds, " "), help .. " ", help .. " all") + table.concat(list, " "), help .. " ", help .. " all") elseif param == "all" then local cmds = {} for cmd, def in pairs(worldedit.registered_commands) do if minetest.check_player_privs(name, def.privs) then - cmds[#cmds + 1] = format_help_line(cmd, def) + cmds[#cmds + 1] = {cmd, def} end end - table.sort(cmds) - return true, S("Available commands:@n") .. table.concat(cmds, "\n") + sort_cmds(cmds) + local list = {} + local last_cat = "" + for _, e in ipairs(cmds) do + if e[2].category ~= last_cat then + last_cat = e[2].category + list[#list + 1] = "---- " .. last_cat + end + list[#list + 1] = format_help_line(e[1], e[2]) + end + return true, S("Available commands:@n") .. table.concat(list, "\n") else local def = worldedit.registered_commands[param] if not def then return false, S("Command not available: ") .. param else - return true, format_help_line(param, def) + return true, format_help_line(param, def, true) end end end, @@ -433,6 +464,7 @@ end) worldedit.register_command("reset", { params = "", description = S("Reset the region so that it is empty"), + category = S("Region operations"), privs = {worldedit=true}, func = function(name) worldedit.pos1[name] = nil @@ -448,6 +480,7 @@ worldedit.register_command("reset", { worldedit.register_command("mark", { params = "", description = S("Show markers at the region positions"), + category = S("Region operations"), privs = {worldedit=true}, func = function(name) worldedit.marker_update(name) @@ -458,6 +491,7 @@ worldedit.register_command("mark", { worldedit.register_command("unmark", { params = "", description = S("Hide markers if currently shown"), + category = S("Region operations"), privs = {worldedit=true}, func = function(name) local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] @@ -473,6 +507,7 @@ worldedit.register_command("unmark", { worldedit.register_command("pos1", { params = "", description = S("Set WorldEdit region position @1 to the player's location", 1), + category = S("Region operations"), privs = {worldedit=true}, func = function(name) local pos = minetest.get_player_by_name(name):get_pos() @@ -486,6 +521,7 @@ worldedit.register_command("pos1", { worldedit.register_command("pos2", { params = "", description = S("Set WorldEdit region position @1 to the player's location", 2), + category = S("Region operations"), privs = {worldedit=true}, func = function(name) local pos = minetest.get_player_by_name(name):get_pos() @@ -499,6 +535,7 @@ worldedit.register_command("pos2", { worldedit.register_command("p", { params = "set/set1/set2/get", description = S("Set WorldEdit region, WorldEdit position 1, or WorldEdit position 2 by punching nodes, or display the current WorldEdit region"), + category = S("Region operations"), privs = {worldedit=true}, parse = function(param) if param == "set" or param == "set1" or param == "set2" or param == "get" then @@ -534,6 +571,7 @@ worldedit.register_command("p", { worldedit.register_command("fixedpos", { params = "set1/set2 ", description = S("Set a WorldEdit region position to the position at (, , )"), + category = S("Region operations"), privs = {worldedit=true}, parse = function(param) local found, _, flag, x, y, z = param:find("^(set[12])%s+([+-]?%d+)%s+([+-]?%d+)%s+([+-]?%d+)$") @@ -583,6 +621,7 @@ end) worldedit.register_command("volume", { params = "", description = S("Display the volume of the current WorldEdit region"), + category = S("Region operations"), privs = {worldedit=true}, require_pos = 2, func = function(name) @@ -603,6 +642,7 @@ worldedit.register_command("volume", { worldedit.register_command("deleteblocks", { params = "", description = S("Remove all MapBlocks (16x16x16) containing the selected area from the map"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, @@ -620,6 +660,7 @@ worldedit.register_command("deleteblocks", { worldedit.register_command("set", { params = "", description = S("Set the current WorldEdit region to "), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -639,6 +680,7 @@ worldedit.register_command("set", { worldedit.register_command("param2", { params = "", description = S("Set param2 of all nodes in the current WorldEdit region to "), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -660,6 +702,7 @@ worldedit.register_command("param2", { worldedit.register_command("mix", { params = " [count1] [count2] ...", description = S("Fill the current WorldEdit region with a random mix of , ..."), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -710,6 +753,7 @@ end worldedit.register_command("replace", { params = " ", description = S("Replace all instances of with in the current WorldEdit region"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = check_replace, @@ -724,6 +768,7 @@ worldedit.register_command("replace", { worldedit.register_command("replaceinverse", { params = " ", description = S("Replace all nodes other than with in the current WorldEdit region"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = check_replace, @@ -750,6 +795,7 @@ end worldedit.register_command("hollowcube", { params = " ", description = S("Add a hollow cube with its ground level centered at WorldEdit position 1 with dimensions x x , composed of ."), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_cube, @@ -765,6 +811,7 @@ worldedit.register_command("hollowcube", { worldedit.register_command("cube", { params = " ", description = S("Add a cube with its ground level centered at WorldEdit position 1 with dimensions x x , composed of ."), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_cube, @@ -792,6 +839,7 @@ end worldedit.register_command("hollowsphere", { params = " ", description = S("Add hollow sphere centered at WorldEdit position 1 with radius , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_sphere, @@ -807,6 +855,7 @@ worldedit.register_command("hollowsphere", { worldedit.register_command("sphere", { params = " ", description = S("Add sphere centered at WorldEdit position 1 with radius , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_sphere, @@ -834,6 +883,7 @@ end worldedit.register_command("hollowdome", { params = " ", description = S("Add hollow dome centered at WorldEdit position 1 with radius , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_dome, @@ -849,6 +899,7 @@ worldedit.register_command("hollowdome", { worldedit.register_command("dome", { params = " ", description = S("Add dome centered at WorldEdit position 1 with radius , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_dome, @@ -882,6 +933,7 @@ end worldedit.register_command("hollowcylinder", { params = "x/y/z/? [radius2] ", description = S("Add hollow cylinder at WorldEdit position 1 along the given axis with length , base radius (and top radius [radius2]), composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_cylinder, @@ -903,6 +955,7 @@ worldedit.register_command("hollowcylinder", { worldedit.register_command("cylinder", { params = "x/y/z/? [radius2] ", description = S("Add cylinder at WorldEdit position 1 along the given axis with length , base radius (and top radius [radius2]), composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_cylinder, @@ -936,6 +989,7 @@ end worldedit.register_command("hollowpyramid", { params = "x/y/z/? ", description = S("Add hollow pyramid centered at WorldEdit position 1 along the given axis with height , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_pyramid, @@ -956,6 +1010,7 @@ worldedit.register_command("hollowpyramid", { worldedit.register_command("pyramid", { params = "x/y/z/? ", description = S("Add pyramid centered at WorldEdit position 1 along the given axis with height , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = check_pyramid, @@ -976,6 +1031,7 @@ worldedit.register_command("pyramid", { worldedit.register_command("spiral", { params = " ", description = S("Add spiral centered at WorldEdit position 1 with side length , height , space between walls , composed of "), + category = S("Shapes"), privs = {worldedit=true}, require_pos = 1, parse = function(param) @@ -1001,6 +1057,7 @@ worldedit.register_command("spiral", { worldedit.register_command("copy", { params = "x/y/z/? ", description = S("Copy the current WorldEdit region along the given axis by nodes"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1028,6 +1085,7 @@ worldedit.register_command("copy", { worldedit.register_command("move", { params = "x/y/z/? ", description = S("Move the current WorldEdit region along the given axis by nodes"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1060,6 +1118,7 @@ worldedit.register_command("move", { worldedit.register_command("stack", { params = "x/y/z/? ", description = S("Stack the current WorldEdit region along the given axis times"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1090,6 +1149,7 @@ worldedit.register_command("stack", { worldedit.register_command("stack2", { params = " ", description = S("Stack the current WorldEdit region times by offset , , "), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1120,6 +1180,7 @@ worldedit.register_command("stack2", { worldedit.register_command("stretch", { params = " ", description = S("Scale the current WorldEdit positions and region by a factor of , , along the X, Y, and Z axes, repectively, with position 1 as the origin"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1152,6 +1213,7 @@ worldedit.register_command("stretch", { worldedit.register_command("transpose", { params = "x/y/z/? x/y/z/?", description = S("Transpose the current WorldEdit region along the given axes"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1182,6 +1244,7 @@ worldedit.register_command("transpose", { worldedit.register_command("flip", { params = "x/y/z/?", description = S("Flip the current WorldEdit region along the given axis"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1201,6 +1264,7 @@ worldedit.register_command("flip", { worldedit.register_command("rotate", { params = "x/y/z/? ", description = S("Rotate the current WorldEdit region around the given axis by angle (90 degree increment)"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1232,6 +1296,7 @@ worldedit.register_command("rotate", { worldedit.register_command("orient", { params = "", description = S("Rotate oriented nodes in the current WorldEdit region around the Y axis by angle (90 degree increment)"), + category = S("Transformations"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1255,6 +1320,7 @@ worldedit.register_command("orient", { worldedit.register_command("fixlight", { params = "", description = S("Fix the lighting in the current WorldEdit region"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, @@ -1267,6 +1333,7 @@ worldedit.register_command("fixlight", { worldedit.register_command("drain", { params = "", description = S("Remove any fluid node within the current WorldEdit region"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, @@ -1365,6 +1432,7 @@ end worldedit.register_command("clearcut", { params = "", description = S("Remove any plant, tree or foliage-like nodes in the selected region"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, @@ -1378,6 +1446,7 @@ worldedit.register_command("clearcut", { worldedit.register_command("hide", { params = "", description = S("Hide all nodes in the current WorldEdit region non-destructively"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, @@ -1390,6 +1459,7 @@ worldedit.register_command("hide", { worldedit.register_command("suppress", { params = "", description = S("Suppress all in the current WorldEdit region non-destructively"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1409,6 +1479,7 @@ worldedit.register_command("suppress", { worldedit.register_command("highlight", { params = "", description = S("Highlight in the current WorldEdit region by hiding everything else non-destructively"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1428,6 +1499,7 @@ worldedit.register_command("highlight", { worldedit.register_command("restore", { params = "", description = S("Restores nodes hidden with WorldEdit in the current WorldEdit region"), + category = S("Node manipulation"), privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, @@ -1441,7 +1513,7 @@ local function detect_misaligned_schematic(name, pos1, pos2) pos1 = worldedit.sort_pos(pos1, pos2) -- Check that allocate/save can position the schematic correctly -- The expected behaviour is that the (0,0,0) corner of the schematic stays - -- sat pos1, this only works when the minimum position is actually present + -- at pos1, this only works when the minimum position is actually present -- in the schematic. local node = minetest.get_node(pos1) local have_node_at_origin = node.name ~= "air" and node.name ~= "ignore" @@ -1457,6 +1529,7 @@ end worldedit.register_command("save", { params = "", description = S("Save the current WorldEdit region to \"(world folder)/schems/.we\""), + category = S("Schematics"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1495,6 +1568,7 @@ worldedit.register_command("save", { worldedit.register_command("allocate", { params = "", description = S("Set the region defined by nodes from \"(world folder)/schems/.we\" as the current WorldEdit region"), + category = S("Schematics"), privs = {worldedit=true}, require_pos = 1, parse = function(param) @@ -1531,6 +1605,7 @@ worldedit.register_command("allocate", { worldedit.register_command("load", { params = "", description = S("Load nodes from \"(world folder)/schems/[.we[m]]\" with position 1 of the current WorldEdit region as the origin"), + category = S("Schematics"), privs = {worldedit=true}, require_pos = 1, parse = function(param) @@ -1562,6 +1637,7 @@ worldedit.register_command("load", { worldedit.register_command("lua", { params = "", description = S("Executes as a Lua chunk in the global namespace"), + category = S("Code"), privs = {worldedit=true, server=true}, parse = function(param) if param == "" then @@ -1592,6 +1668,7 @@ worldedit.register_command("lua", { worldedit.register_command("luatransform", { params = "", description = S("Executes as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region"), + category = S("Code"), privs = {worldedit=true, server=true}, require_pos = 2, parse = function(param) @@ -1614,6 +1691,7 @@ worldedit.register_command("mtschemcreate", { params = "", description = S("Save the current WorldEdit region using the Minetest ".. "Schematic format to \"(world folder)/schems/.mts\""), + category = S("Schematics"), privs = {worldedit=true}, require_pos = 2, parse = function(param) @@ -1647,6 +1725,7 @@ worldedit.register_command("mtschemcreate", { worldedit.register_command("mtschemplace", { params = "", description = S("Load nodes from \"(world folder)/schems/.mts\" with position 1 of the current WorldEdit region as the origin"), + category = S("Schematics"), privs = {worldedit=true}, require_pos = 1, parse = function(param) @@ -1673,6 +1752,7 @@ worldedit.register_command("mtschemplace", { worldedit.register_command("mtschemprob", { params = "start/finish/get", description = S("Begins node probability entry for Minetest schematics, gets the nodes that have probabilities set, or ends node probability entry"), + category = S("Schematics"), privs = {worldedit=true}, parse = function(param) if param ~= "start" and param ~= "finish" and param ~= "get" then @@ -1723,6 +1803,7 @@ end) worldedit.register_command("clearobjects", { params = "", description = S("Clears all objects within the WorldEdit region"), + category = S("Node manipulation"), -- not really, but it doesn't fit anywhere else privs = {worldedit=true}, require_pos = 2, nodes_needed = check_region, diff --git a/worldedit_commands/locale/template.txt b/worldedit_commands/locale/template.txt index c915590..33433cb 100644 --- a/worldedit_commands/locale/template.txt +++ b/worldedit_commands/locale/template.txt @@ -15,6 +15,7 @@ Region contracted by @1 nodes= Select a cube with side length around position 1 and run on region= invalid usage: @1 cannot be used with cubeapply= Missing privileges: @1= +Region operations= Can use WorldEdit commands= no region selected= no position 1 selected= @@ -53,6 +54,7 @@ Set a WorldEdit region position to the position at (, , )= Display the volume of the current WorldEdit region= current region has a volume of @1 nodes (@2*@3*@4)= Remove all MapBlocks (16x16x16) containing the selected area from the map= +Node manipulation= Area deleted.= There was an error during deletion of the area.= Set the current WorldEdit region to = @@ -68,6 +70,7 @@ Replace all instances of with in the current WorldE @1 nodes replaced= Replace all nodes other than with in the current WorldEdit region= Add a hollow cube with its ground level centered at WorldEdit position 1 with dimensions x x , composed of .= +Shapes= @1 nodes added= Add a cube with its ground level centered at WorldEdit position 1 with dimensions x x , composed of .= Add hollow sphere centered at WorldEdit position 1 with radius , composed of = @@ -80,6 +83,7 @@ Add hollow pyramid centered at WorldEdit position 1 along the given axis with he Add pyramid centered at WorldEdit position 1 along the given axis with height , composed of = Add spiral centered at WorldEdit position 1 with side length , height , space between walls , composed of = Copy the current WorldEdit region along the given axis by nodes= +Transformations= @1 nodes copied= Move the current WorldEdit region along the given axis by nodes= @1 nodes moved= @@ -116,6 +120,7 @@ Restores nodes hidden with WorldEdit in the current WorldEdit region= @1 nodes restored= Warning: The schematic contains excessive free space and WILL be misaligned when allocated or loaded. To avoid this, shrink your area to cover exactly the nodes to be saved.= Save the current WorldEdit region to "(world folder)/schems/.we"= +Schematics= Disallowed file name: @1= Could not save file to "@1"= @1 nodes saved= @@ -126,6 +131,7 @@ Load nodes from "(world folder)/schems/[.we[m]]" with position 1 of the cu Loading failed!= @1 nodes loaded= Executes as a Lua chunk in the global namespace= +Code= Executes as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region= Save the current WorldEdit region using the Minetest Schematic format to "(world folder)/schems/.mts"= Failed to create Minetest schematic= diff --git a/worldedit_commands/locale/worldedit_commands.de.tr b/worldedit_commands/locale/worldedit_commands.de.tr index 2ac6f4d..4b33562 100644 --- a/worldedit_commands/locale/worldedit_commands.de.tr +++ b/worldedit_commands/locale/worldedit_commands.de.tr @@ -26,6 +26,7 @@ Region contracted by @1 nodes=Gebiet um @1 Blöcke geschrumpft Select a cube with side length around position 1 and run on region=Wähle einen Würfel mit Seitenlänge um Position 1 und führe auf diesem Gebiet aus invalid usage: @1 cannot be used with cubeapply=Ungültige Verwendung: @1 kann nicht mit cubeapply verwendet werden Missing privileges: @1=Fehlende Privilegien: @1 +Region operations=Gebietsoperationen Can use WorldEdit commands=Kann WorldEdit-Befehle benutzen no region selected=Kein Gebiet ausgewählt no position 1 selected=Keine Position 1 ausgewählt @@ -64,6 +65,7 @@ Set a WorldEdit region position to the position at (, , )=Position des Display the volume of the current WorldEdit region=Volumen des aktuellen WorldEdit-Gebiets anzeigen current region has a volume of @1 nodes (@2*@3*@4)=Das aktuelle Gebiet hat ein Volumen von @1 Blöcken (@2*@3*@4) Remove all MapBlocks (16x16x16) containing the selected area from the map=Alle Kartenblöcke (16x16x16) entfernen, die das Gebiet enthalten. +Node manipulation=Block-Manipulation Area deleted.=Gebiet gelöscht. There was an error during deletion of the area.=Während des Löschens des Gebiets trat ein Fehler aus. Set the current WorldEdit region to =Das aktuelle WorldEdit-Gebiet mit füllen @@ -79,6 +81,7 @@ Replace all instances of with in the current WorldE @1 nodes replaced=@1 Blöcke ersetzt Replace all nodes other than with in the current WorldEdit region=Alle Blöcke außer im aktuellen WorldEdit-Gebiet mit ersetzen. Add a hollow cube with its ground level centered at WorldEdit position 1 with dimensions x x , composed of .= +Shapes=Formen @1 nodes added=@1 Blöcke hinzugefügt Add a cube with its ground level centered at WorldEdit position 1 with dimensions x x , composed of .= Add hollow sphere centered at WorldEdit position 1 with radius , composed of = @@ -91,6 +94,7 @@ Add hollow pyramid centered at WorldEdit position 1 along the given axis with he Add pyramid centered at WorldEdit position 1 along the given axis with height , composed of = Add spiral centered at WorldEdit position 1 with side length , height , space between walls , composed of = Copy the current WorldEdit region along the given axis by nodes=Das aktuelle WorldEdit-Gebiet entlang der gegebenen Achse um Blöcke kopieren +Transformations=Transformationen @1 nodes copied=@1 Blöcke kopiert Move the current WorldEdit region along the given axis by nodes=Das aktuelle WorldEdit-Gebiet entlang der gegebenen Achse um Blöcke verschieben @1 nodes moved=@1 Blöcke verschoben @@ -127,6 +131,7 @@ Restores nodes hidden with WorldEdit in the current WorldEdit region=Versteckte @1 nodes restored=@1 Blöcke wiederhergestellt Warning: The schematic contains excessive free space and WILL be misaligned when allocated or loaded. To avoid this, shrink your area to cover exactly the nodes to be saved.=Warnung: Das Schematic hat überschüssigen freien Platz und WIRD nach dem Laden falsch ausgerichtet sein. Um dies zu vermeiden, verkleinern Sie das Gebiet sodass es die zu speichernden Blöcke exakt umfasst. Save the current WorldEdit region to "(world folder)/schems/.we"=Das aktuelle WorldEdit-Gebiet in "(Weltordner)/schems/.we" speichern +Schematics=Schematic Disallowed file name: @1=Nicht erlaubter Dateiname: @1 Could not save file to "@1"=Konnte die Datei nicht unter "@1" speichern @1 nodes saved=@1 Blöcke gespeichert @@ -137,6 +142,7 @@ Load nodes from "(world folder)/schems/[.we[m]]" with position 1 of the cu Loading failed!=Laden fehlgeschlagen! @1 nodes loaded=@1 Blöcke geladen Executes as a Lua chunk in the global namespace= +Code=Code Executes as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region= Save the current WorldEdit region using the Minetest Schematic format to "(world folder)/schems/.mts"=Das aktuelle WorldEdit-Gebiet als Minetest-Schematic in "(Weltordner)/schems/.mts" speichern Failed to create Minetest schematic=Konnte Minetest-Schematic nicht erstellen