Added optional support for using worledit for selections.

This commit is contained in:
Joseph Pickard 2016-01-17 19:33:13 -05:00
parent 8b0b8c1ad2
commit 79821b0892
2 changed files with 40 additions and 12 deletions

1
depends.txt Normal file
View File

@ -0,0 +1 @@
worldedit?

51
pos.lua
View File

@ -118,25 +118,52 @@ minetest.register_chatcommand("area_pos", {
end,
})
function areas.useWorldedit(playerName)
if worldedit then
if nil == playerName then
return true;
elseif minetest.check_player_privs(playerName, {worldedit = true}) then
return true;
end
end
return false;
end
function areas:getPos(playerName)
local pos1, pos2 = areas.pos1[playerName], areas.pos2[playerName]
if not (pos1 and pos2) then
return nil
end
-- Copy positions so that the area table doesn't contain multiple
-- references to the same position.
pos1, pos2 = vector.new(pos1), vector.new(pos2)
return areas:sortPos(pos1, pos2)
local pos1, pos2 = nil, nil;
if areas.useWorldedit(playerName) then
pos1, pos2 = worldedit.pos1[playerName], worldedit.pos2[playerName];
else
pos1, pos2 = areas.pos1[playerName], areas.pos2[playerName];
end
if not (pos1 and pos2) then
return nil
end
-- Copy positions so that the area table doesn't contain multiple
-- references to the same position.
pos1, pos2 = vector.new(pos1), vector.new(pos2)
return areas:sortPos(pos1, pos2)
end
function areas:setPos1(playerName, pos)
areas.pos1[playerName] = pos
areas.markPos1(playerName)
if areas.useWorldedit(playerName) then
worldedit.pos1[playerName] = pos;
worldedit.mark_pos1(playerName);
else
areas.pos1[playerName] = pos
areas.markPos1(playerName)
end
end
function areas:setPos2(playerName, pos)
areas.pos2[playerName] = pos
areas.markPos2(playerName)
if areas.useWorldedit(playerName) then
worldedit.pos2[playerName] = pos;
worldedit.mark_pos2(playerName);
else
areas.pos2[playerName] = pos
areas.markPos2(playerName)
end
end