mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-11-04 23:33:01 +00:00
41 lines
1.1 KiB
Lua
41 lines
1.1 KiB
Lua
|
function worldeditadditions_core.chatcommand_handler(cmd_name, name, param)
|
||
|
local def = assert(worldedit.registered_commands[cmd_name])
|
||
|
|
||
|
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
|