mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-10-31 21:33:02 +00:00
40 lines
1.2 KiB
Lua
40 lines
1.2 KiB
Lua
function worldeditadditions_core.chatcommand_handler(cmd_name, name, param)
|
|
local def = assert(worldedit.registered_commands[cmd_name], "Error: Failed to locate worldedit command definition for command '"..name.."' (this is probably a bug).")
|
|
|
|
if def.require_pos == 2 then
|
|
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
|
|
if pos1 == nil or pos2 == nil then
|
|
worldedit.player_notify(name, "no region selected")
|
|
return
|
|
end
|
|
elseif def.require_pos == 1 then
|
|
local pos1 = worldedit.pos1[name]
|
|
if pos1 == nil then
|
|
worldedit.player_notify(name, "no position 1 selected")
|
|
return
|
|
end
|
|
end
|
|
|
|
local parsed = {def.parse(param)}
|
|
local success = table.remove(parsed, 1)
|
|
if not success then
|
|
worldedit.player_notify(name, parsed[1] or "invalid usage")
|
|
return
|
|
end
|
|
|
|
if def.nodes_needed then
|
|
local count = def.nodes_needed(name, unpack(parsed))
|
|
safe_region(name, count, function()
|
|
local success, msg = def.func(name, unpack(parsed))
|
|
if msg then
|
|
minetest.chat_send_player(name, msg)
|
|
end
|
|
end)
|
|
else
|
|
-- no "safe region" check
|
|
local success, msg = def.func(name, unpack(parsed))
|
|
if msg then
|
|
minetest.chat_send_player(name, msg)
|
|
end
|
|
end
|
|
end
|