summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShadowNinja <noreply@gmail.com>2013-09-03 01:33:08 -0400
committerShadowNinja <noreply@gmail.com>2013-09-03 01:33:08 -0400
commit7b0ff512f7f44fde11204e57f5b9b30ae550e4bb (patch)
tree61a8584c2320341858c9dc2c063e85743ba65195
parent3d866330bf01409e5113ece322e500aaa095417a (diff)
Shorten lines
-rw-r--r--chatcommands.lua275
-rw-r--r--internal.lua47
-rw-r--r--legacy.lua10
-rw-r--r--pos.lua112
-rw-r--r--settings.lua6
5 files changed, 256 insertions, 194 deletions
diff --git a/chatcommands.lua b/chatcommands.lua
index 22c4d8e..8a22887 100644
--- a/chatcommands.lua
+++ b/chatcommands.lua
@@ -22,7 +22,9 @@ minetest.register_chatcommand("protect", {
local canAdd, errMsg = areas:canPlayerAddArea(pos1, pos2, name)
if not canAdd then
- minetest.chat_send_player(name, "You can't protect that area: "..errMsg)
+ minetest.chat_send_player(name,
+ "You can't protect that area: "
+ ..errMsg)
return
end
@@ -38,103 +40,101 @@ end})
minetest.register_chatcommand("set_owner", {
params = "<PlayerName> <AreaName>",
- description = "Protect an area beetween two positions and give a player access to it without setting the parent of the area to any existing area",
+ description = "Protect an area beetween two positions and give"
+ .." a player access to it without setting the parent of the"
+ .." area to any existing area",
privs = {areas=true},
func = function(name, param)
- if param and param ~= "" then
- local found, _, ownername, areaname = param:find('^([^%s]+)%s(.+)$')
+ local found, _, ownername, areaname = param:find('^([^%s]+)%s(.+)$')
- if not found then
- minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
- return
- end
-
- local pos1, pos2 = {}, {}
- if areas:getPos1(name) and areas:getPos2(name) then
- pos1 = areas:getPos1(name)
- pos2 = areas:getPos2(name)
- pos1, pos2 = areas:sortPos(pos1, pos2)
- else
- minetest.chat_send_player(name, 'You need to select an area first')
- return
- end
-
- if not areas:player_exists(ownername) then
- minetest.chat_send_player(name, 'The player "'..ownername..'" does not exist')
- return
- end
-
- --local canAdd, errMsg = areas:canPlayerAddArea(pos1, pos2, name)
- --if not canAdd then
- -- minetest.chat_send_player(name, "You can't protect that area: "..errMsg)
- -- return
- --end
-
- minetest.log("action", "/set_owner invoked, Owner="..ownername..
- " AreaName="..areaname..
- " StartPos="..minetest.pos_to_string(pos1)..
- " EndPos=" ..minetest.pos_to_string(pos2))
+ if not found then
+ minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
+ return
+ end
- areas:add(ownername, areaname, pos1, pos2, nil)
- areas:save()
-
- minetest.chat_send_player(ownername, "A concession has been granted to you! Type /list_areas to show your concessions.")
- minetest.chat_send_player(name, "Area protected")
+ local pos1, pos2 = {}, {}
+ if areas:getPos1(name) and areas:getPos2(name) then
+ pos1 = areas:getPos1(name)
+ pos2 = areas:getPos2(name)
+ pos1, pos2 = areas:sortPos(pos1, pos2)
else
- minetest.chat_send_player(name, 'Invalid usage, see /help set_owner')
+ minetest.chat_send_player(name, 'You need to select an area first')
+ return
end
+
+ if not areas:player_exists(ownername) then
+ minetest.chat_send_player(name, 'The player "'
+ ..ownername..'" does not exist')
+ return
+ end
+
+ minetest.log("action", "/set_owner invoked, Owner="..ownername..
+ " AreaName="..areaname..
+ " StartPos="..minetest.pos_to_string(pos1)..
+ " EndPos=" ..minetest.pos_to_string(pos2))
+
+ areas:add(ownername, areaname, pos1, pos2, nil)
+ areas:save()
+
+ minetest.chat_send_player(ownername,
+ "You have been granted control over an area."
+ .." Type /list_areas to show your areas.")
+ minetest.chat_send_player(name, "Area protected")
end})
minetest.register_chatcommand("add_owner", {
params = "<ParentID> <Player> <AreaName>",
- description = "Give a player access to a sub-area beetween two positions that have already been protected, use set_owner if you don't want the parent to be set",
+ description = "Give a player access to a sub-area beetween two"
+ .." positions that have already been protected,"
+ .." Use set_owner if you don't want the parent to be set.",
privs = {},
func = function(name, param)
- if param and param ~= "" then
- local found, _, pid, ownername, areaname = param:find('^(%d+)%s([^%s]+)%s(.+)$')
+ local found, _, pid, ownername, areaname
+ = param:find('^(%d+)%s([^%s]+)%s(.+)$')
- if not found then
- minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
- return
- end
-
- local pos1, pos2 = {}, {}
- if areas:getPos1(name) and areas:getPos2(name) then
- pos1 = areas:getPos1(name)
- pos2 = areas:getPos2(name)
- pos1, pos2 = areas:sortPos(pos1, pos2)
- else
- minetest.chat_send_player(name, 'You need to select an area first')
- return
- end
-
- if not areas:player_exists(ownername) then
- minetest.chat_send_player(name, 'The player "'..ownername..'" does not exist')
- return
- end
+ if not found then
+ minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
+ return
+ end
- minetest.log("action", "add_owner invoked, Owner = "..ownername..
- " AreaName = "..areaname.." ParentID = "..pid..
- " StartPos = "..pos1.x..","..pos1.y..","..pos1.z..
- " EndPos = " ..pos2.x..","..pos2.y..","..pos2.z)
+ local pos1, pos2 = {}, {}
+ if areas:getPos1(name) and areas:getPos2(name) then
+ pos1 = areas:getPos1(name)
+ pos2 = areas:getPos2(name)
+ pos1, pos2 = areas:sortPos(pos1, pos2)
+ else
+ minetest.chat_send_player(name, 'You need to select an area first')
+ return
+ end
- --Look to see if this new area is inside an area owned by the player using this function
- pid = tonumber(pid)
- if (not areas:isAreaOwner(pid, name)) or
- (not areas:isSubarea(pos1, pos2, pid)) then
- minetest.chat_send_player(name, "You can't protect that area")
- return
- end
+ if not areas:player_exists(ownername) then
+ minetest.chat_send_player(name, 'The player "'
+ ..ownername..'" does not exist')
+ return
+ end
- areas:add(ownername, areaname, pos1, pos2, pid)
- areas:save()
-
- minetest.chat_send_player(ownername, "A concession has been granted to you! Type /list_areas to show your concessions.")
- minetest.chat_send_player(name, "You granted "..ownername.." a concession successfully!")
- else
- minetest.chat_send_player(name, 'Invalid usage, see /help add_owner')
+ minetest.log("action", "add_owner invoked, Owner = "..ownername..
+ " AreaName = "..areaname.." ParentID = "..pid..
+ " StartPos = "..pos1.x..","..pos1.y..","..pos1.z..
+ " EndPos = " ..pos2.x..","..pos2.y..","..pos2.z)
+
+ -- Check if this new area is inside an area owned by the player
+ pid = tonumber(pid)
+ if (not areas:isAreaOwner(pid, name)) or
+ (not areas:isSubarea(pos1, pos2, pid)) then
+ minetest.chat_send_player(name,
+ "You can't protect that area")
+ return
end
+
+ areas:add(ownername, areaname, pos1, pos2, pid)
+ areas:save()
+
+ minetest.chat_send_player(ownername,
+ "You have been gtanted control over an area."
+ .." Type /list_areas to show your areas.")
+ minetest.chat_send_player(name, "Area protected.")
end})
@@ -146,19 +146,20 @@ minetest.register_chatcommand("rename_area", {
local found, _, id, newName = param:find("^(%d+)%s(.+)$")
if not found then
- minetest.chat_send_player(name, "Invalid usage, see /help rename_area")
+ minetest.chat_send_player(name,
+ "Invalid usage, see /help rename_area")
return
end
index = areas:getIndexById(tonumber(id))
if not index then
- minetest.chat_send_player(name, "That area doesn't exist")
+ minetest.chat_send_player(name, "That area doesn't exist.")
return
end
if not areas:isAreaOwner(id, name) then
- minetest.chat_send_player(name, "You don't own that area")
+ minetest.chat_send_player(name, "You don't own that area.")
return
end
@@ -169,14 +170,23 @@ end})
minetest.register_chatcommand("list_owners", {
params = "",
- description = "list the players that can edit the area you are in",
+ description = "List the owners of your position",
privs = {},
func = function(name, param)
- local owners = areas:getNodeOwners(vector.round(minetest.get_player_by_name(name):getpos()))
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ minetest.chat_send_player(name,
+ "Unable to find your position.")
+ return
+ end
+ local pos = vector.round(player:getpos())
+ local owners = areas:getNodeOwners(pos)
if #owners > 0 then
- minetest.chat_send_player(name, "Owners: "..table.concat(owners, ", "))
+ minetest.chat_send_player(name,
+ "Owners: "..table.concat(owners, ", "))
else
- minetest.chat_send_player(name, "Your position is unowned")
+ minetest.chat_send_player(name,
+ "Your position is unowned.")
end
end})
@@ -186,38 +196,42 @@ minetest.register_chatcommand("find_areas", {
description = "Find areas using a Lua regular expression",
privs = {},
func = function(name, param)
- if param and param ~= "" then
- local found = false
- for _, area in pairs(areas.areas) do
- if areas:isAreaOwner(area.id, name) and
- areas:toString(area):find(param) then
- minetest.chat_send_player(name, areas:toString(area))
- found = true
- end
- end
- if not found then
- minetest.chat_send_player(name, "No matches found")
+ if param == "" then
+ minetest.chat_send_player(name,
+ "A regular expression is required.")
+ return
+ end
+ local found = false
+ for _, area in pairs(areas.areas) do
+ if areas:isAreaOwner(area.id, name) and
+ areas:toString(area):find(param) then
+ minetest.chat_send_player(name, areas:toString(area))
+ found = true
end
- else
- minetest.chat_send_player(name, "Regular expression required")
+ end
+ if not found then
+ minetest.chat_send_player(name, "No matches found")
end
end})
minetest.register_chatcommand("list_areas", {
params = "",
- description = "list the areas you own, or all areas if you have privileges",
+ description = "List your areas, or all areas if you are an admin.",
privs = {},
func = function(name, param)
admin = minetest.check_player_privs(name, {areas=true})
if admin then
- minetest.chat_send_player(name, "Showing all owner entries.")
+ minetest.chat_send_player(name,
+ "Showing all areas.")
else
- minetest.chat_send_player(name, "Showing your owner entries (You can only modify these).")
+ minetest.chat_send_player(name,
+ "Showing your areas.")
end
for _, area in pairs(areas.areas) do
if admin or area.owner == name then
- minetest.chat_send_player(name, areas:toString(area))
+ minetest.chat_send_player(name,
+ areas:toString(area))
end
end
end})
@@ -230,8 +244,9 @@ minetest.register_chatcommand("recursive_remove_areas", {
func = function(name, param)
local id = tonumber(param)
if not id then
- minetest.chat_send_player(name, 'Invalid usage, see /help recursive_remove_areas')
- minetest.chat_send_player(name, 'Use /list_areas to see entries')
+ minetest.chat_send_player(name,
+ "Invalid usage, see"
+ .." /help recursive_remove_areas")
return
end
@@ -240,10 +255,13 @@ minetest.register_chatcommand("recursive_remove_areas", {
areas:sort()
areas:save()
else
- minetest.chat_send_player(name, "Area "..id.." does not exist or is not owned by you")
+ minetest.chat_send_player(name, "Area "..id
+ .." does not exist or is"
+ .." not owned by you.")
return
end
- minetest.chat_send_player(name, 'Removed area '..id..'and sub areas')
+ minetest.chat_send_player(name, "Removed area "..id
+ .." and it's sub areas.")
end})
@@ -254,8 +272,8 @@ minetest.register_chatcommand("remove_area", {
func = function(name, param)
local id = tonumber(param)
if not id then
- minetest.chat_send_player(name, 'Invalid usage, see /help remove_area')
- minetest.chat_send_player(name, 'Use /list_areas to see entries')
+ minetest.chat_send_player(name,
+ "Invalid usage, see /help remove_area")
return
end
@@ -264,7 +282,9 @@ minetest.register_chatcommand("remove_area", {
areas:sort()
areas:save()
else
- minetest.chat_send_player(name, "Area "..id.." does not exist or is not owned by you")
+ minetest.chat_send_player(name, "Area "..id
+ .." does not exist or"
+ .." is not owned by you")
return
end
minetest.chat_send_player(name, 'Removed area '..id)
@@ -272,31 +292,38 @@ end})
minetest.register_chatcommand("change_owner", {
- params = "<id> <newplayer>",
- description = "change the owner of an area using its id",
+ params = "<id> <NewOwner>",
+ description = "Change the owner of an area using its id",
privs = {},
func = function(name, param)
- local found, _, id, new_owner = param:find('^(%d+)%s+([^%s]+)$')
+ local found, _, id, new_owner =
+ param:find('^(%d+)%s+([^%s]+)$')
if not found then
- minetest.chat_send_player(name, 'Invalid usage, see /help change_area_owner')
- minetest.chat_send_player(name, 'Use /list_areas to see entries')
+ minetest.chat_send_player(name,
+ "Invalid usage,"
+ .." see /help change_area_owner")
return
end
if not areas:player_exists(new_owner) then
- minetest.chat_send_player(name, 'The player "'..new_owner..'" does not exist')
+ minetest.chat_send_player(name, 'The player "'
+ ..new_owner..'" does not exist')
return
end
id = tonumber(id)
- if areas:isAreaOwner(id, name) then
- areas.areas[areas:getIndexById(id)].owner = new_owner
- areas:save()
- minetest.chat_send_player(name, 'Owner changed succesfully')
- minetest.chat_send_player(new_owner, name..'" has granted you a concession!')
- else
- minetest.chat_send_player(new_owner, "Area "..id.." does not exist or is not owned by you")
+ if not areas:isAreaOwner(id, name) then
+ minetest.chat_send_player(name,
+ "Area "..id.." does not exist"
+ .." or is not owned by you.")
+ return
end
+ local index = areas:getImdexById(id)
+ areas.areas[index].owner = new_owner
+ areas:save()
+ minetest.chat_send_player(name, 'Owner changed.')
+ minetest.chat_send_player(new_owner,
+ name..'" has given you control over an area.')
end})
diff --git a/internal.lua b/internal.lua
index 2fee018..142e610 100644
--- a/internal.lua
+++ b/internal.lua
@@ -45,7 +45,8 @@ function areas:remove(id, recurse)
local parent = self:getAreaById(id).parent
local children = self:getChildren(id)
for _, child in pairs(children) do
- -- The subarea parent will be niled out if the removed area does not have a parent
+ -- The subarea parent will be niled out if the
+ -- removed area does not have a parent
areas.areas[self:getIndexById(child)].parent = parent
end
@@ -58,15 +59,18 @@ end
-- Checks if a area between two points is entirely contained by another area
function areas:isSubarea(pos1, pos2, id)
local area = areas:getAreaById(id)
- if area then
- p1, p2 = area.pos1, area.pos2
- if (pos1.x >= p1.x and pos1.x <= p2.x) and (pos2.x >= p1.x and pos2.x <= p2.x) and
- (pos1.y >= p1.y and pos1.y <= p2.y) and (pos2.y >= p1.y and pos2.y <= p2.y) and
- (pos1.z >= p1.z and pos1.z <= p2.z) and (pos2.z >= p1.z and pos2.z <= p2.z) then
- return true
- end
+ if not area then
+ return false
+ end
+ p1, p2 = area.pos1, area.pos2
+ if (pos1.x >= p1.x and pos1.x <= p2.x) and
+ (pos2.x >= p1.x and pos2.x <= p2.x) and
+ (pos1.y >= p1.y and pos1.y <= p2.y) and
+ (pos2.y >= p1.y and pos2.y <= p2.y) and
+ (pos1.z >= p1.z and pos1.z <= p2.z) and
+ (pos2.z >= p1.z and pos2.z <= p2.z) then
+ return true
end
- return false
end
-- Returns a table (list) of children of an area given it's identifier
@@ -83,17 +87,20 @@ end
-- Checks if the user has sufficient privileges.
-- If the player is not a administrator it also checks
-- if the area intersects other areas that they do not own.
--- Also checks the size of the area and if the user already has more than max_areas.
+-- Also checks the size of the area and if the user already
+-- has more than max_areas.
function areas:canPlayerAddArea(pos1, pos2, name)
- --[[
if minetest.check_player_privs(name, {areas=true}) then
return true
- end--]]
+ end
- -- Check self protection privilege, if it is enabled, and if the area is too big.
+ -- Check self protection privilege, if it is enabled,
+ -- and if the area is too big.
if (not self.self_protection) or
- (not minetest.check_player_privs(name, {[areas.self_protection_privilege]=true})) then
- return false, "Self protection is disabled or you do not have the necessary privilege."
+ (not minetest.check_player_privs(name,
+ {[areas.self_protection_privilege]=true})) then
+ return false, "Self protection is disabled or you do not have"
+ .." the necessary privilege."
end
if (pos2.x - pos1.x) > self.self_protection_max_size.x or
@@ -111,7 +118,9 @@ function areas:canPlayerAddArea(pos1, pos2, name)
end
end
if count > self.self_protection_max_areas then
- return false, "You have reached the maximum amount of areas that you are allowed to protect."
+ return false, "You have reached the maximum amount"
+ .." of areas that you are allowed to"
+ .." protect."
end
end
@@ -122,7 +131,8 @@ function areas:canPlayerAddArea(pos1, pos2, name)
(area.pos1.z <= pos2.z and area.pos2.z >= pos1.z) then
--Found an area intersecting with the suplied area
if area.owner ~= name then
- return false, "The area intersects with a area that you do not own."
+ return false, "The area intersects with an"
+ .." area that you do not own."
end
end
end
@@ -130,7 +140,8 @@ function areas:canPlayerAddArea(pos1, pos2, name)
return true, ""
end
--- Given a area returns a string in the format "name [id]: owner (x1, y1, z1) (x2, y2, z2) -> children"
+-- Given a area returns a string in the format:
+-- "name [id]: owner (x1, y1, z1) (x2, y2, z2) -> children"
function areas:toString(area)
local message = area.name..
" ["..area.id.."]: "..area.owner.." "..
diff --git a/legacy.lua b/legacy.lua
index 9ff7c77..135e6dd 100644
--- a/legacy.lua
+++ b/legacy.lua
@@ -3,12 +3,11 @@
minetest.register_chatcommand("legacy_load_areas", {
params = "",
- description = "Loads, converts, and saves the areas from a legacy save file.",
- privs = {areas=true, server=true},
+ description = "Loads, converts, and saves the areas from"
+ .." a legacy node_ownership save file.",
+ privs = {areas=true, server=true, privs=true},
func = function(name, param)
minetest.chat_send_player(name, "Converting areas...")
- local startTime = os.clock()
-
err = areas:legacy_load()
if err then
minetest.chat_send_player(name, "Error loading legacy file: "..err)
@@ -36,8 +35,7 @@ minetest.register_chatcommand("legacy_load_areas", {
minetest.chat_send_player(name, "Table format updated.")
areas:save()
- minetest.chat_send_player(name, "Converted areas saved.")
- minetest.chat_send_player(name, "Finished in "..tostring(os.clock() - startTime).."s.")
+ minetest.chat_send_player(name, "Converted areas saved. Done.")
end})
-- The old load function from node_ownership (with minor modifications)
diff --git a/pos.lua b/pos.lua
index d89289a..0ff94d7 100644
--- a/pos.lua
+++ b/pos.lua
@@ -1,7 +1,8 @@
-- I could depend on WorldEdit for this, but you need to have the 'worldedit'
--- permission to use those commands and you don't have /area_pos{1,2} [x y z|x,y,z]
--- Since this is mostly copied from WorldEdit it is licensed under the AGPL.
+-- permission to use those commands and you don't have
+-- /area_pos{1,2} [x y z|x,y,z]. Since this is mostly copied from WorldEdit
+-- it is licensed under the AGPL.
areas.marker1 = {}
areas.marker2 = {}
@@ -16,27 +17,32 @@ minetest.register_chatcommand("select_area", {
func = function(name, param)
local id = tonumber(param)
if not id then
- minetest.chat_send_player(name, "Invalid usage, see /help select_area.")
+ minetest.chat_send_player(name,
+ "Invalid usage, see /help select_area.")
end
for k, area in pairs(areas.areas) do
if area.id == id then
areas:setPos1(name, area.pos1)
areas:setPos2(name, area.pos2)
- minetest.chat_send_player(name, "Area "..tostring(id).." selected.")
+ minetest.chat_send_player(name,
+ "Area "..id.." selected.")
return
end
end
- minetest.chat_send_player(name, "The area "..tostring(id).." does not exist.")
+ minetest.chat_send_player(name,
+ "The area "..id.." does not exist.")
end})
minetest.register_chatcommand("area_pos1", {
params = "[X Y Z|X,Y,Z]",
- description = "Set area protection region position 1 to the player's location or the one specified",
+ description = "Set area protection region position 1 to your"
+ .." location or the one specified",
privs = {},
func = function(name, param)
local pos = {}
- local found, _, x, y, z = param:find("^(-?%d+)[%s%,]+(-?%d+)[%s%,]+(-?%d+)$")
+ local found, _, x, y, z = param:find(
+ "^(-?%d+)[%s%,]+(-?%d+)[%s%,]+(-?%d+)$")
if found then
pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)}
elseif param == "" then
@@ -44,25 +50,31 @@ minetest.register_chatcommand("area_pos1", {
if player then
pos = player:getpos()
else
- minetest.chat_send_player(name, "Unable to get position")
+ minetest.chat_send_player(name,
+ "Unable to get position")
return
end
else
- minetest.chat_send_player(name, "Invalid usage, see /help no_pos1")
+ minetest.chat_send_player(name,
+ "Invalid usage, see /help area_pos1")
end
- pos.x, pos.y, pos.z = math.floor(pos.x + 0.5), math.floor(pos.y + 0.5), math.floor(pos.z + 0.5)
+ pos = vector.round(pos)
areas:setPos1(name, pos)
- minetest.chat_send_player(name, "Area position 1 set to " .. minetest.pos_to_string(pos))
+ minetest.chat_send_player(name,
+ "Area position 1 set to "
+ ..minetest.pos_to_string(pos))
end,
})
minetest.register_chatcommand("area_pos2", {
params = "[X Y Z|X,Y,Z]",
- description = "Set area protection region position 2 to the player's location or the one specified",
+ description = "Set area protection region position 2 to your"
+ .." location or the one specified",
privs = {},
func = function(name, param)
local pos = {}
- local found, _, x, y, z = param:find("^(-?%d+)[%s%,]+(-?%d+)[%s%,]+(-?%d+)$")
+ local found, _, x, y, z = param:find(
+ "^(-?%d+)[%s%,]+(-?%d+)[%s%,]+(-?%d+)$")
if found then
pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)}
elseif param == "" then
@@ -70,46 +82,59 @@ minetest.register_chatcommand("area_pos2", {
if player then
pos = player:getpos()
else
- minetest.chat_send_player(name, "Unable to get position")
+ minetest.chat_send_player(name,
+ "Unable to get position")
return
end
else
- minetest.chat_send_player(name, "Invalid usage, see /help no_pos2")
+ minetest.chat_send_player(name,
+ "Invalid usage, see /help area_pos2")
end
- pos.x, pos.y, pos.z = math.floor(pos.x + 0.5), math.floor(pos.y + 0.5), math.floor(pos.z + 0.5)
+ pos = vector.round(pos)
areas:setPos2(name, pos)
- minetest.chat_send_player(name, "Area position 2 set to " .. minetest.pos_to_string(pos))
+ minetest.chat_send_player(name,
+ "Area position 2 set to "
+ ..minetest.pos_to_string(pos))
end,
})
minetest.register_chatcommand("area_pos", {
params = "set/set1/set2/get",
- description = "Set area protection region, position 1, or position 2 by punching nodes, or display the region",
+ description = "Set area protection region, position 1, or position 2"
+ .." by punching nodes, or display the region",
privs = {},
func = function(name, param)
if param == "set" then -- Set both area positions
areas.set_pos[name] = "pos1"
- minetest.chat_send_player(name, "Select positions by punching two nodes")
+ minetest.chat_send_player(name,
+ "Select positions by punching two nodes")
elseif param == "set1" then -- Set area position 1
areas.set_pos[name] = "pos1only"
- minetest.chat_send_player(name, "Select position 1 by punching a node")
+ minetest.chat_send_player(name,
+ "Select position 1 by punching a node")
elseif param == "set2" then -- Set area position 2
areas.set_pos[name] = "pos2"
- minetest.chat_send_player(name, "Select position 2 by punching a node")
+ minetest.chat_send_player(name,
+ "Select position 2 by punching a node")
elseif param == "get" then -- Display current area positions
if areas.pos1[name] ~= nil then
- minetest.chat_send_player(name, "Position 1: " .. minetest.pos_to_string(areas.pos1[name]))
+ minetest.chat_send_player(name, "Position 1: "
+ ..minetest.pos_to_string(areas.pos1[name]))
else
- minetest.chat_send_player(name, "Position 1 not set")
+ minetest.chat_send_player(name,
+ "Position 1 not set")
end
if areas.pos2[name] ~= nil then
- minetest.chat_send_player(name, "Position 2: " .. minetest.pos_to_string(areas.pos2[name]))
+ minetest.chat_send_player(name, "Position 2: "
+ ..minetest.pos_to_string(areas.pos2[name]))
else
- minetest.chat_send_player(name, "Position 2 not set")
+ minetest.chat_send_player(name,
+ "Position 2 not set")
end
else
- minetest.chat_send_player(name, "Unknown subcommand: " .. param)
+ minetest.chat_send_player(name,
+ "Unknown subcommand: "..param)
end
end,
})
@@ -135,22 +160,29 @@ end
minetest.register_on_punchnode(function(pos, node, puncher)
local name = puncher:get_player_name()
- if name ~= "" and areas.set_pos[name] ~= nil then --currently setting position
- if areas.set_pos[name] == "pos1" then --setting position 1
+ -- Currently setting position
+ if name ~= "" and areas.set_pos[name] then
+ if areas.set_pos[name] == "pos1" then
areas.pos1[name] = pos
areas.markPos1(name)
- areas.set_pos[name] = "pos2" --set position 2 on the next invocation
- minetest.chat_send_player(name, "Position 1 set to " .. minetest.pos_to_string(pos))
- elseif areas.set_pos[name] == "pos1only" then --setting position 1 only
+ areas.set_pos[name] = "pos2"
+ minetest.chat_send_player(name,
+ "Position 1 set to "
+ ..minetest.pos_to_string(pos))
+ elseif areas.set_pos[name] == "pos1only" then
areas.pos1[name] = pos
areas.markPos1(name)
- areas.set_pos[name] = nil --finished setting positions
- minetest.chat_send_player(name, "Position 1 set to " .. minetest.pos_to_string(pos))
- elseif areas.set_pos[name] == "pos2" then --setting position 2
+ areas.set_pos[name] = nil
+ minetest.chat_send_player(name,
+ "Position 1 set to "
+ ..minetest.pos_to_string(pos))
+ elseif areas.set_pos[name] == "pos2" then
areas.pos2[name] = pos
areas.markPos2(name)
- areas.set_pos[name] = nil --finished setting positions
- minetest.chat_send_player(name, "Position 2 set to " .. minetest.pos_to_string(pos))
+ areas.set_pos[name] = nil
+ minetest.chat_send_player(name,
+ "Position 2 set to "
+ ..minetest.pos_to_string(pos))
end
end
end)
@@ -171,14 +203,6 @@ function areas:sortPos(pos1, pos2)
return pos1, pos2
end
--- Rounds a position to the nearest integer
-function areas:roundPos(pos)
- pos.x = math.floor(pos.x+0.5)
- pos.y = math.floor(pos.y+0.5)
- pos.z = math.floor(pos.z+0.5)
- return pos
-end
-
-- Marks area position 1
areas.markPos1 = function(name)
local pos = areas.pos1[name]
diff --git a/settings.lua b/settings.lua
index ba579ff..d126c83 100644
--- a/settings.lua
+++ b/settings.lua
@@ -11,13 +11,15 @@ end
areas.filename =
minetest.setting_get("areas.filename") or worldpath.."/areas.dat"
--- Allow players with a privilege create their own areas within the max_size and number
+-- Allow players with a privilege create their own areas
+-- within the max_size and number
areas.self_protection =
setting_getbool_default("areas.self_protection", false)
areas.self_protection_privilege =
minetest.setting_get("areas.self_protection_privilege") or "interact"
areas.self_protection_max_size =
- minetest.setting_get_pos("areas.self_protection_max_size") or {x=50, y=100, z=50}
+ minetest.setting_get_pos("areas.self_protection_max_size") or
+ {x=50, y=100, z=50}
areas.self_protection_max_areas =
tonumber(minetest.setting_get("areas.self_protection_max_areas")) or 3