})\r
\r
minetest.register_chatcommand("/p", {\r
- params = "set/get",\r
- description = "Set WorldEdit region by punching two nodes, or display the current WorldEdit region",\r
+ params = "set/set1/set2/get",\r
+ description = "Set WorldEdit region, WorldEdit position 1, or WorldEdit position 2 by punching nodes, or display the current WorldEdit region",\r
privs = {worldedit=true},\r
func = function(name, param)\r
if param == "set" then --set both WorldEdit positions\r
- worldedit.set_pos[name] = 1\r
+ worldedit.set_pos[name] = "pos1"\r
minetest.chat_send_player(name, "Select positions by punching two nodes")\r
+ elseif param == "set1" then --set WorldEdit position 1\r
+ worldedit.set_pos[name] = "pos1only"\r
+ minetest.chat_send_player(name, "Select position 1 by punching a node")\r
+ elseif param == "set2" then --set WorldEdit position 2\r
+ worldedit.set_pos[name] = "pos2"\r
+ minetest.chat_send_player(name, "Select position 2 by punching a node")\r
elseif param == "get" then --display current WorldEdit positions\r
if worldedit.pos1[name] ~= nil then\r
minetest.chat_send_player(name, "WorldEdit position 1: " .. minetest.pos_to_string(worldedit.pos1[name]))\r
minetest.register_on_punchnode(function(pos, node, puncher)\r
local name = puncher:get_player_name()\r
if name ~= "" and worldedit.set_pos[name] ~= nil then --currently setting position\r
- if worldedit.set_pos[name] == 1 then --setting position 1\r
- worldedit.set_pos[name] = 2 --set position 2 on the next invocation\r
+ if worldedit.set_pos[name] == "pos1" then --setting position 1\r
worldedit.pos1[name] = pos\r
worldedit.mark_pos1(name)\r
+ worldedit.set_pos[name] = "pos2" --set position 2 on the next invocation\r
minetest.chat_send_player(name, "WorldEdit region position 1 set to " .. minetest.pos_to_string(pos))\r
- else --setting position 2\r
+ elseif worldedit.set_pos[name] == "pos1only" then --setting position 1 only\r
+ worldedit.pos1[name] = pos\r
+ worldedit.mark_pos1(name)\r
worldedit.set_pos[name] = nil --finished setting positions\r
+ minetest.chat_send_player(name, "WorldEdit region position 1 set to " .. minetest.pos_to_string(pos))\r
+ elseif worldedit.set_pos[name] == "pos2" then --setting position 2\r
worldedit.pos2[name] = pos\r
worldedit.mark_pos2(name)\r
+ worldedit.set_pos[name] = nil --finished setting positions\r
minetest.chat_send_player(name, "WorldEdit region position 2 set to " .. minetest.pos_to_string(pos))\r
end\r
end\r
\r
minetest.register_chatcommand("/hide", {\r
params = "<node>",\r
- description = "Hide all nodes in the current WorldEdit region non-destructively",\r
- privs = {worldedit=true},\r
- func = function(name, param)\r
- local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
- if pos1 == nil or pos2 == nil then\r
- minetest.chat_send_player(name, "No WorldEdit region selected")\r
- return\r
- end\r
-\r
- local count = worldedit.hide(pos1, pos2)\r
- minetest.chat_send_player(name, count .. " nodes hidden")\r
- end,\r
-})\r
-\r
-minetest.register_chatcommand("/suppress", {\r
- params = "<node>",\r
- description = "Suppress all <node> in the current WorldEdit region non-destructively",\r
+ description = "Hide all <node> in the current WorldEdit region non-destructively",\r
privs = {worldedit=true},\r
func = function(name, param)\r
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
return\r
end\r
\r
- local count = worldedit.suppress(pos1, pos2, param)\r
- minetest.chat_send_player(name, count .. " nodes suppressed")\r
+ local count = worldedit.hide(pos1, pos2, param)\r
+ minetest.chat_send_player(name, count .. " nodes hidden")\r
end,\r
})\r
\r
-minetest.register_chatcommand("/find", {\r
+minetest.register_chatcommand("/highlight", {\r
params = "<node>",\r
- description = "Find <node> in the current WorldEdit region by hiding everything else non-destructively",\r
+ description = "Highlight <node> in the current WorldEdit region by hiding everything else non-destructively",\r
privs = {worldedit=true},\r
func = function(name, param)\r
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
return\r
end\r
\r
- local count = worldedit.find(pos1, pos2, param)\r
- minetest.chat_send_player(name, count .. " nodes found")\r
+ local count = worldedit.highlight(pos1, pos2, param)\r
+ minetest.chat_send_player(name, count .. " nodes highlighted")\r
end,\r
})\r
\r
end,\r
})\r
\r
+minetest.register_chatcommand("/allocate", {\r
+ params = "<file>",\r
+ description = "Set the region defined by nodes from \"(world folder)/schems/<file>.we\" as the current WorldEdit region",\r
+ privs = {worldedit=true},\r
+ func = function(name, param)\r
+ local pos1 = worldedit.pos1[name]\r
+ if pos1 == nil then\r
+ minetest.chat_send_player(name, "No WorldEdit region selected")\r
+ return\r
+ end\r
+\r
+ if param == "" then\r
+ minetest.chat_send_player(name, "Invalid usage: " .. param)\r
+ return\r
+ end\r
+\r
+ local filename = minetest.get_worldpath() .. "/schems/" .. param .. ".we"\r
+ local file, err = io.open(filename, "rb")\r
+ if err ~= nil then\r
+ minetest.chat_send_player(name, "Could not open file \"" .. filename .. "\"")\r
+ return\r
+ end\r
+ local value = file:read("*a")\r
+ file:close()\r
+\r
+ local nodepos1, nodepos2, count = worldedit.allocate(pos1, value)\r
+\r
+ worldedit.pos1[name] = nodepos1\r
+ worldedit.mark_pos1(name)\r
+ worldedit.pos2[name] = nodepos2\r
+ worldedit.mark_pos2(name)\r
+\r
+ minetest.chat_send_player(name, count .. " nodes allocated")\r
+ end,\r
+})\r
+\r
minetest.register_chatcommand("/load", {\r
params = "<file>",\r
description = "Load nodes from \"(world folder)/schems/<file>.we\" with position 1 of the current WorldEdit region as the origin",\r