forked from minetest-mods/areas
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			e0783cf8bf
			...
			require_pr
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f52454edec | ||
| 
						 | 
					4018c0d204 | ||
| 
						 | 
					c167b30ebf | ||
| 
						 | 
					a9c05f0e38 | 
@@ -10,7 +10,7 @@ read_globals = {
 | 
			
		||||
	"AreaStore",
 | 
			
		||||
	"default",
 | 
			
		||||
	"factions",
 | 
			
		||||
	table = { fields = { "copy", "getn" } }
 | 
			
		||||
	table = { fields = { "copy", "getn", "indexof" } }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
globals = {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							@@ -5,6 +5,11 @@ Dependencies
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Minetest 5.0.0+ is recommended, but 0.4.16+ should work as well.
 | 
			
		||||
Minetest 5.0.0+
 | 
			
		||||
 | 
			
		||||
Optional support for following mods:
 | 
			
		||||
 | 
			
		||||
  * [playerfactions](https://git.leagueh.xyz/katp32/playerfactions/) by [katp32](https://git.leagueh.xyz/katp32) & [Kalio_42](https://git.leagueh.xyz/Kalio_42)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Configuration
 | 
			
		||||
@@ -105,10 +110,18 @@ Commands
 | 
			
		||||
  * `/areas_cleanup` -- Removes all ownerless areas.
 | 
			
		||||
	Useful for cleaning after user deletion, for example using /remove_player.
 | 
			
		||||
 | 
			
		||||
  * `/area_open <ID>` -- Toggle open/closed the specified area for everyone.
 | 
			
		||||
 | 
			
		||||
  * `/area_faction_open <ID> <faction>` -- Toggle open/closed the specified
 | 
			
		||||
	area for members of the faction. Factions are created and managed by
 | 
			
		||||
	playerfactions mod.
 | 
			
		||||
 | 
			
		||||
License
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
Copyright (C) 2013 ShadowNinja
 | 
			
		||||
Copyright (C) 2013-2017 ShadowNinja
 | 
			
		||||
 | 
			
		||||
Copyright (C) 2015-2020 various contributors
 | 
			
		||||
 | 
			
		||||
Licensed under the GNU LGPL version 2.1 or later.
 | 
			
		||||
See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								api.lua
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								api.lua
									
									
									
									
									
								
							@@ -1,15 +1,5 @@
 | 
			
		||||
local hudHandlers = {}
 | 
			
		||||
 | 
			
		||||
---plants to place in openfarming
 | 
			
		||||
local plants = {
 | 
			
		||||
	["farming:blueberries"]="air", ["farming:carrot"]="air", ["farming:coffee_beans"]="air",
 | 
			
		||||
	["farming:corn"]="air", ["farming:cucumber"]="air", ["farming:melon_slice"]="air",
 | 
			
		||||
	["farming:potato"]="air", ["farming:pumpkin_slice"]="air", ["farming:raspberries"]="air",
 | 
			
		||||
	["farming:rhubarb"]="air",	["farming:tomato"]="air", ["farming:seed_cotton"]="air",
 | 
			
		||||
	["farming:seed_wheat"]="air",["default:papyrus"]="air", ["farming:trellis"]="air",
 | 
			
		||||
	["farming:grapes"]="farming:trellis", ["farming:beanpole"]="air", ["farming:beans"]="farming:beanpole",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
areas.registered_on_adds = {}
 | 
			
		||||
areas.registered_on_removes = {}
 | 
			
		||||
areas.registered_on_moves = {}
 | 
			
		||||
@@ -94,35 +84,34 @@ end
 | 
			
		||||
 | 
			
		||||
-- Checks if the area is unprotected or owned by you
 | 
			
		||||
function areas:canInteract(pos, name)
 | 
			
		||||
	if name == "" then
 | 
			
		||||
		return true -- Mods, namely minetest.item_place_node
 | 
			
		||||
	end
 | 
			
		||||
	if minetest.check_player_privs(name, self.adminPrivs) then
 | 
			
		||||
		return true
 | 
			
		||||
	end
 | 
			
		||||
	local owned = false
 | 
			
		||||
 | 
			
		||||
	-- Disallow interaction by default when the restrictive setting is enabled
 | 
			
		||||
	local owned = areas.config.require_protection
 | 
			
		||||
	for _, area in pairs(self:getAreasAtPos(pos)) do
 | 
			
		||||
		if area.owner == name or area.open then
 | 
			
		||||
			return true
 | 
			
		||||
		elseif area.openfarming then
 | 
			
		||||
			-- if area is openfarming
 | 
			
		||||
			local node = minetest.get_node(pos).name
 | 
			
		||||
			if not minetest.registered_nodes[node] then return false end
 | 
			
		||||
			local player = minetest.get_player_by_name(name)
 | 
			
		||||
			if not player then return false end
 | 
			
		||||
			local wstack = player:get_wielded_item():get_name()
 | 
			
		||||
			if wstack == "" then wstack = "hand" end
 | 
			
		||||
 | 
			
		||||
			--on_dig
 | 
			
		||||
			if minetest.get_item_group(node, "plant") == 1 and (wstack == "hand" or minetest.registered_tools[wstack]) then
 | 
			
		||||
				return true
 | 
			
		||||
			end
 | 
			
		||||
 | 
			
		||||
			--on_place
 | 
			
		||||
			if plants[wstack] ~= nil and plants[wstack] == node then
 | 
			
		||||
				return true
 | 
			
		||||
			end
 | 
			
		||||
		elseif areas.factions_available and area.faction_open then
 | 
			
		||||
			local faction_name = factions.get_player_faction(area.owner)
 | 
			
		||||
			if faction_name ~= nil and faction_name == factions.get_player_faction(name) then
 | 
			
		||||
				return true
 | 
			
		||||
			if (factions.version or 0) < 2 then
 | 
			
		||||
				local faction_name = factions.get_player_faction(name)
 | 
			
		||||
				if faction_name then
 | 
			
		||||
					for _, fname in ipairs(area.faction_open or {}) do
 | 
			
		||||
						if faction_name == fname then
 | 
			
		||||
							return true
 | 
			
		||||
						end
 | 
			
		||||
					end
 | 
			
		||||
				end
 | 
			
		||||
			else
 | 
			
		||||
				for _, fname in ipairs(area.faction_open or {}) do
 | 
			
		||||
					if factions.player_is_in_faction(fname, name) then
 | 
			
		||||
						return true
 | 
			
		||||
					end
 | 
			
		||||
				end
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		owned = true
 | 
			
		||||
 
 | 
			
		||||
@@ -284,35 +284,17 @@ minetest.register_chatcommand("area_open", {
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand(
 | 
			
		||||
	"area_openfarming", {
 | 
			
		||||
		params = "<ID>",
 | 
			
		||||
		description = "Toggle an area as open farming (anyone can harvest and plant) or closed",
 | 
			
		||||
		func = function(name, param)
 | 
			
		||||
			local id = tonumber(param)
 | 
			
		||||
			if not id then
 | 
			
		||||
				return false, "Invalid usage, see /help area_openfarming."
 | 
			
		||||
			end
 | 
			
		||||
			
 | 
			
		||||
			if not areas:isAreaOwner(id, name) then
 | 
			
		||||
				return false, "Area "..id.." does not exist"
 | 
			
		||||
					.." or is not owned by you."
 | 
			
		||||
			end
 | 
			
		||||
			local open = not areas.areas[id].openfarming
 | 
			
		||||
			-- Save false as nil to avoid inflating the DB.
 | 
			
		||||
			areas.areas[id].openfarming = open or nil
 | 
			
		||||
			areas:save()
 | 
			
		||||
			return true, ("Area %s to farming."):format(open and "opened" or "closed")
 | 
			
		||||
		end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
if areas.factions_available then
 | 
			
		||||
	minetest.register_chatcommand("area_faction_open", {
 | 
			
		||||
		params = S("<ID>"),
 | 
			
		||||
		params = S("<ID> [faction_name]"),
 | 
			
		||||
		description = S("Toggle an area open/closed for members in your faction."),
 | 
			
		||||
		func = function(name, param)
 | 
			
		||||
			local id = tonumber(param)
 | 
			
		||||
			if not id then
 | 
			
		||||
			local params = param:split(" ")
 | 
			
		||||
 | 
			
		||||
			local id = tonumber(params[1])
 | 
			
		||||
			local faction_name = params[2]
 | 
			
		||||
 | 
			
		||||
			if not id or not faction_name then
 | 
			
		||||
				return false, S("Invalid usage, see /help @1.", "area_faction_open")
 | 
			
		||||
			end
 | 
			
		||||
 | 
			
		||||
@@ -320,11 +302,25 @@ if areas.factions_available then
 | 
			
		||||
				return false, S("Area @1 does not exist"
 | 
			
		||||
						.." or is not owned by you.", id)
 | 
			
		||||
			end
 | 
			
		||||
			local open = not areas.areas[id].faction_open
 | 
			
		||||
			-- Save false as nil to avoid inflating the DB.
 | 
			
		||||
			areas.areas[id].faction_open = open or nil
 | 
			
		||||
 | 
			
		||||
			if not factions.get_owner(faction_name) then
 | 
			
		||||
				return false, S("Faction doesn't exists")
 | 
			
		||||
			end
 | 
			
		||||
			local fnames = areas.areas[id].faction_open or {}
 | 
			
		||||
			local pos = table.indexof(fnames, faction_name)
 | 
			
		||||
			if pos < 0 then
 | 
			
		||||
				-- Add new faction to the list
 | 
			
		||||
				table.insert(fnames, faction_name)
 | 
			
		||||
			else
 | 
			
		||||
				table.remove(fnames, pos)
 | 
			
		||||
			end
 | 
			
		||||
			if #fnames == 0 then
 | 
			
		||||
				-- Save {} as nil to avoid inflating the DB.
 | 
			
		||||
				fnames = nil
 | 
			
		||||
			end
 | 
			
		||||
			areas.areas[id].faction_open = fnames
 | 
			
		||||
			areas:save()
 | 
			
		||||
			return true, open and S("Area opened for faction members.")
 | 
			
		||||
			return true, fnames and S("Area is open for members of: @1", table.concat(fnames, ", "))
 | 
			
		||||
				or S("Area closed for faction members.")
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
@@ -397,9 +393,7 @@ minetest.register_chatcommand("area_info", {
 | 
			
		||||
		elseif has_high_limit then
 | 
			
		||||
			table.insert(lines,
 | 
			
		||||
				S("You have extended area protection"..
 | 
			
		||||
					  " limits (\"areas_high_limit\" privilege)."))
 | 
			
		||||
		elseif privs.megabuilder then
 | 
			
		||||
			table.insert(lines, "You are a megabuilder (\"megabuilder\" privilege).")
 | 
			
		||||
				" limits (\"areas_high_limit\" privilege)."))
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		-- Area count
 | 
			
		||||
@@ -412,7 +406,7 @@ minetest.register_chatcommand("area_info", {
 | 
			
		||||
		table.insert(lines, S("You have @1 areas.", area_num))
 | 
			
		||||
 | 
			
		||||
		-- Area limit
 | 
			
		||||
		local area_limit_line = (privs.areas or privs.megabuilder) and
 | 
			
		||||
		local area_limit_line = privs.areas and
 | 
			
		||||
			S("Limit: no area count limit") or
 | 
			
		||||
			S("Limit: @1 areas", max_count)
 | 
			
		||||
		table.insert(lines, area_limit_line)
 | 
			
		||||
@@ -433,9 +427,6 @@ minetest.register_chatcommand("area_info", {
 | 
			
		||||
					limit, size_limit)
 | 
			
		||||
				priv_limit_info("areas_high_limit",
 | 
			
		||||
					limit_high, size_limit_high)
 | 
			
		||||
				table.insert(lines, "Players with the \"megabuilder\" privilege can protect unlimited areas in size and number.")
 | 
			
		||||
			elseif privs.megabuilder then
 | 
			
		||||
				table.insert(lines, "You can protect areas unlimited in size and number.")
 | 
			
		||||
			elseif has_prot_priv then
 | 
			
		||||
				size_info(S("You can protect areas"), max_size)
 | 
			
		||||
			end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								hud.lua
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								hud.lua
									
									
									
									
									
								
							@@ -20,13 +20,32 @@ minetest.register_globalstep(function(dtime)
 | 
			
		||||
		local areaStrings = {}
 | 
			
		||||
 | 
			
		||||
		for id, area in pairs(areas:getAreasAtPos(pos)) do
 | 
			
		||||
			local faction_info = area.faction_open and areas.factions_available and
 | 
			
		||||
					factions.get_player_faction(area.owner)
 | 
			
		||||
			area.faction_open = faction_info
 | 
			
		||||
			local faction_info
 | 
			
		||||
			if area.faction_open and areas.factions_available then
 | 
			
		||||
				-- Gather and clean up disbanded factions
 | 
			
		||||
				local changed = false
 | 
			
		||||
				for i, fac_name in ipairs(area.faction_open) do
 | 
			
		||||
					if not factions.get_owner(fac_name) then
 | 
			
		||||
						table.remove(area.faction_open, i)
 | 
			
		||||
						changed = true
 | 
			
		||||
					end
 | 
			
		||||
				end
 | 
			
		||||
				if #area.faction_open == 0 then
 | 
			
		||||
					-- Prevent DB clutter, remove value
 | 
			
		||||
					area.faction_open = nil
 | 
			
		||||
				else
 | 
			
		||||
					faction_info = table.concat(area.faction_open, ", ")
 | 
			
		||||
				end
 | 
			
		||||
 | 
			
		||||
				if changed then
 | 
			
		||||
					areas:save()
 | 
			
		||||
				end
 | 
			
		||||
			end
 | 
			
		||||
 | 
			
		||||
			table.insert(areaStrings, ("%s [%u] (%s%s%s)")
 | 
			
		||||
					:format(area.name, id, area.owner,
 | 
			
		||||
					area.open and S(":open") or area.openfarming and ":openfarming" or "",
 | 
			
		||||
					faction_info and ":"..faction_info or ""))
 | 
			
		||||
					area.open and S(":open") or "",
 | 
			
		||||
					faction_info and ": "..faction_info or ""))
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		for i, area in pairs(areas:getExternalHudEntries(pos)) do
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								init.lua
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 | 
			
		||||
areas = {}
 | 
			
		||||
 | 
			
		||||
areas.factions_available = minetest.global_exists("factions")
 | 
			
		||||
areas.factions_available = minetest.get_modpath("playerfactions") and true
 | 
			
		||||
 | 
			
		||||
areas.adminPrivs = {areas=true}
 | 
			
		||||
areas.startTime = os.clock()
 | 
			
		||||
@@ -16,25 +16,27 @@ dofile(areas.modpath.."/internal.lua")
 | 
			
		||||
dofile(areas.modpath.."/chatcommands.lua")
 | 
			
		||||
dofile(areas.modpath.."/pos.lua")
 | 
			
		||||
dofile(areas.modpath.."/interact.lua")
 | 
			
		||||
dofile(areas.modpath.."/legacy.lua")
 | 
			
		||||
if areas.config.node_ownership_legacy then
 | 
			
		||||
	dofile(areas.modpath.."/legacy.lua")
 | 
			
		||||
end
 | 
			
		||||
dofile(areas.modpath.."/hud.lua")
 | 
			
		||||
 | 
			
		||||
areas:load()
 | 
			
		||||
 | 
			
		||||
local S = minetest.get_translator("areas")
 | 
			
		||||
 | 
			
		||||
minetest.register_privilege("areas", {
 | 
			
		||||
	description = "Can administer areas."
 | 
			
		||||
	description = S("Can administer areas."),
 | 
			
		||||
	give_to_singleplayer = false
 | 
			
		||||
})
 | 
			
		||||
minetest.register_privilege("areas_high_limit", {
 | 
			
		||||
	description = "Can protect more, bigger areas."
 | 
			
		||||
})
 | 
			
		||||
-- Mega_builder privilege -- MFF
 | 
			
		||||
minetest.register_privilege("megabuilder", {
 | 
			
		||||
	description = "Can protect an infinite amount of areas."
 | 
			
		||||
	description = S("Can protect more, bigger areas."),
 | 
			
		||||
	give_to_singleplayer = false
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
if not minetest.registered_privileges[areas.config.self_protection_privilege] then
 | 
			
		||||
	minetest.register_privilege(areas.config.self_protection_privilege, {
 | 
			
		||||
		description = "Can protect areas.",
 | 
			
		||||
		description = S("Can protect areas."),
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								interact.lua
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								interact.lua
									
									
									
									
									
								
							@@ -9,11 +9,20 @@ function minetest.is_protected(pos, name)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_on_protection_violation(function(pos, name)
 | 
			
		||||
	if not areas:canInteract(pos, name) then
 | 
			
		||||
		local owners = areas:getNodeOwners(pos)
 | 
			
		||||
		minetest.chat_send_player(name,
 | 
			
		||||
			S("@1 is protected by @2.",
 | 
			
		||||
				minetest.pos_to_string(pos),
 | 
			
		||||
				table.concat(owners, ", ")))
 | 
			
		||||
	if areas:canInteract(pos, name) then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local owners = areas:getNodeOwners(pos)
 | 
			
		||||
	if #owners == 0 then
 | 
			
		||||
		-- When require_protection=true
 | 
			
		||||
		minetest.chat_send_player(name,
 | 
			
		||||
			S("@1 may not be accessed.",
 | 
			
		||||
				minetest.pos_to_string(pos)))
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	minetest.chat_send_player(name,
 | 
			
		||||
		S("@1 is protected by @2.",
 | 
			
		||||
			minetest.pos_to_string(pos),
 | 
			
		||||
			table.concat(owners, ", ")))
 | 
			
		||||
end)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								internal.lua
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								internal.lua
									
									
									
									
									
								
							@@ -18,7 +18,7 @@ end
 | 
			
		||||
 | 
			
		||||
-- Save the areas table to a file
 | 
			
		||||
function areas:save()
 | 
			
		||||
	local datastr = minetest.serialize(self.areas)
 | 
			
		||||
	local datastr = minetest.write_json(self.areas)
 | 
			
		||||
	if not datastr then
 | 
			
		||||
		minetest.log("error", "[areas] Failed to serialize area data!")
 | 
			
		||||
		return
 | 
			
		||||
@@ -33,10 +33,19 @@ function areas:load()
 | 
			
		||||
		self.areas = self.areas or {}
 | 
			
		||||
		return err
 | 
			
		||||
	end
 | 
			
		||||
	self.areas = minetest.deserialize(file:read("*a"))
 | 
			
		||||
	local data = file:read("*a")
 | 
			
		||||
	if data:sub(1, 1) == "[" then
 | 
			
		||||
		self.areas, err = minetest.parse_json(data)
 | 
			
		||||
	else
 | 
			
		||||
		self.areas, err = minetest.deserialize(data)
 | 
			
		||||
	end
 | 
			
		||||
	if type(self.areas) ~= "table" then
 | 
			
		||||
		self.areas = {}
 | 
			
		||||
	end
 | 
			
		||||
	if err and #data > 10 then
 | 
			
		||||
		minetest.log("error", "[areas] Failed to load area data: " ..
 | 
			
		||||
			tostring(err))
 | 
			
		||||
	end
 | 
			
		||||
	file:close()
 | 
			
		||||
	self:populateStore()
 | 
			
		||||
end
 | 
			
		||||
@@ -216,27 +225,24 @@ function areas:canPlayerAddArea(pos1, pos2, name)
 | 
			
		||||
				.." the necessary privilege.")
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- MFF: megabuilders skip checks on size and number of areas
 | 
			
		||||
	if not privs.megabuilder then
 | 
			
		||||
		local max_size = privs.areas_high_limit and
 | 
			
		||||
	local max_size = privs.areas_high_limit and
 | 
			
		||||
			self.config.self_protection_max_size_high or
 | 
			
		||||
			self.config.self_protection_max_size
 | 
			
		||||
		if
 | 
			
		||||
	if
 | 
			
		||||
			(pos2.x - pos1.x) > max_size.x or
 | 
			
		||||
			(pos2.y - pos1.y) > max_size.y or
 | 
			
		||||
			(pos2.z - pos1.z) > max_size.z then
 | 
			
		||||
				return false, S("Area is too big.")
 | 
			
		||||
		end
 | 
			
		||||
		return false, S("Area is too big.")
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
		-- Check number of areas the user has and make sure it not above the max
 | 
			
		||||
		local count = 0
 | 
			
		||||
		for _, area in pairs(self.areas) do
 | 
			
		||||
			if area.owner == name then
 | 
			
		||||
				count = count + 1
 | 
			
		||||
			end
 | 
			
		||||
	-- Check number of areas the user has and make sure it not above the max
 | 
			
		||||
	local count = 0
 | 
			
		||||
	for _, area in pairs(self.areas) do
 | 
			
		||||
		if area.owner == name then
 | 
			
		||||
			count = count + 1
 | 
			
		||||
		end
 | 
			
		||||
		local max_areas = privs.areas_high_limit and
 | 
			
		||||
	end
 | 
			
		||||
	local max_areas = privs.areas_high_limit and
 | 
			
		||||
			self.config.self_protection_max_areas_high or
 | 
			
		||||
			self.config.self_protection_max_areas
 | 
			
		||||
	if count >= max_areas then
 | 
			
		||||
@@ -251,6 +257,7 @@ function areas:canPlayerAddArea(pos1, pos2, name)
 | 
			
		||||
		return false, S("The area intersects with @1 [@2] (@3).",
 | 
			
		||||
				area.name, id, area.owner)
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	return true
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,11 @@
 | 
			
		||||
# textdomain: areas
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### chatcommands.lua ###
 | 
			
		||||
 | 
			
		||||
<AreaName>=<NomZone>
 | 
			
		||||
<ID> [faction_name]=<ID> [nom_de_faction]
 | 
			
		||||
<NewOwner>=<NouveauPropriétaire>
 | 
			
		||||
<ParentID>=<IDZonePrincipale>
 | 
			
		||||
<PlayerName>=<NomJoueur>
 | 
			
		||||
@@ -15,12 +17,13 @@ Area @1 does not exist or is not owned by you.=La zone @1 n’existe pas ou ne v
 | 
			
		||||
Area closed for faction members.=Zone fermée aux membres de la faction.
 | 
			
		||||
Area closed.=Zone fermée.
 | 
			
		||||
Area does not exist.=La zone n’existe pas.
 | 
			
		||||
Area opened for faction members.=Zone ouverte aux membres de la faction.
 | 
			
		||||
Area is open for members of: @1=Zone ouverte aux membres de ces factions : @1
 | 
			
		||||
Area opened.=Zone ouverte.
 | 
			
		||||
Area protected. ID: @1=Zone protégée. ID : @1
 | 
			
		||||
Area renamed.=Zone renommée.
 | 
			
		||||
Area successfully moved.=Zone déplacée avec succès.
 | 
			
		||||
Change the owner of an area using its ID=Change le propriétaire d’une zone en utilisant son ID.
 | 
			
		||||
Faction doesn't exists=La faction n'existe pas
 | 
			
		||||
Find areas using a Lua regular expression=Trouve les zones en utilisant une expression régulière Lua.
 | 
			
		||||
Get information about area configuration and usage.=Obtient des informations sur la configuration des zones et l’utilisation des zones.
 | 
			
		||||
 | 
			
		||||
@@ -43,6 +46,7 @@ Recursively remove areas using an ID=Supprime les zones récursivement en utilis
 | 
			
		||||
Remove an area using an ID=Supprime une zone en utilisant son ID.
 | 
			
		||||
Removed area @1=Zone @1 supprimée.
 | 
			
		||||
Removed area @1 and it's sub areas.=Zone @1 et ses sous-zones supprimées.
 | 
			
		||||
Removes all ownerless areas=Supprime toutes les zones sans propriétaire
 | 
			
		||||
Rename an area that you own=Renomme une zone qui vous appartient.
 | 
			
		||||
Self protection is disabled.=L’autoprotection est désactivée.
 | 
			
		||||
Self protection is enabled.=L’autoprotection est activée.
 | 
			
		||||
@@ -76,6 +80,12 @@ Invalid usage, see /help @1.=Utilisation incorrecte, voir /help @1.
 | 
			
		||||
:open= : ouverte
 | 
			
		||||
Areas:=Zones :
 | 
			
		||||
 | 
			
		||||
### init.lua ###
 | 
			
		||||
 | 
			
		||||
Can administer areas.=Permet d’administrer des zones.
 | 
			
		||||
Can protect areas.=Permet de protéger des zones.
 | 
			
		||||
Can protect more, bigger areas.=Permet de protéger plus, et de plus grandes zones.
 | 
			
		||||
 | 
			
		||||
### interact.lua ###
 | 
			
		||||
 | 
			
		||||
@1 is protected by @2.=@1 est protégée par @2.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,11 @@
 | 
			
		||||
# textdomain: areas
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### chatcommands.lua ###
 | 
			
		||||
 | 
			
		||||
<AreaName>=<NomeArea>
 | 
			
		||||
<ID> [faction_name]= <ID> [nome_fazione]
 | 
			
		||||
<NewOwner>=<NuovoProprietario>
 | 
			
		||||
<ParentID>=<IDparent>
 | 
			
		||||
<PlayerName>=<NomeGiocatore>
 | 
			
		||||
@@ -15,12 +17,13 @@ Area @1 does not exist or is not owned by you.=L'area @1 non esiste o non è di
 | 
			
		||||
Area closed for faction members.=Area chiusa per i membri della fazione.
 | 
			
		||||
Area closed.=Area chiusa.
 | 
			
		||||
Area does not exist.=L'area non esiste.
 | 
			
		||||
Area opened for faction members.=Area aperta per i membri della fazione.
 | 
			
		||||
Area is open for members of: @1=L'area è aperta ai membri di: @1
 | 
			
		||||
Area opened.=Area aperta.
 | 
			
		||||
Area protected. ID: @1=Area protetta. ID: @1
 | 
			
		||||
Area renamed.=Area rinominata.
 | 
			
		||||
Area successfully moved.=Area spostata con successo.
 | 
			
		||||
Change the owner of an area using its ID=Cambia il proprietario di un'area usando il suo ID
 | 
			
		||||
Faction doesn't exists=La fazione non esiste
 | 
			
		||||
Find areas using a Lua regular expression=Trova aree usando una espressione regolare Lua
 | 
			
		||||
Get information about area configuration and usage.=Ottieni informazioni sulla configurazione e l'uso delle aree.
 | 
			
		||||
 | 
			
		||||
@@ -43,6 +46,7 @@ Recursively remove areas using an ID=Elimina ricorsivamente delle aree usando un
 | 
			
		||||
Remove an area using an ID=Elimina un'area usando un ID
 | 
			
		||||
Removed area @1=Eliminata l'area @1
 | 
			
		||||
Removed area @1 and it's sub areas.=Eliminata l'area @1 e le sue sotto-aree.
 | 
			
		||||
Removes all ownerless areas=
 | 
			
		||||
Rename an area that you own=Rinomina un'area che ti appartiene
 | 
			
		||||
Self protection is disabled.=L'auto-protezione è disattivata.
 | 
			
		||||
Self protection is enabled.=L'auto-protezione è attivata.
 | 
			
		||||
@@ -76,6 +80,12 @@ Invalid usage, see /help @1.=Utilizzo non valido, si veda /help @1.
 | 
			
		||||
:open=:aperta
 | 
			
		||||
Areas:=Aree:
 | 
			
		||||
 | 
			
		||||
### init.lua ###
 | 
			
		||||
 | 
			
		||||
Can administer areas.=
 | 
			
		||||
Can protect areas.=
 | 
			
		||||
Can protect more, bigger areas.=
 | 
			
		||||
 | 
			
		||||
### interact.lua ###
 | 
			
		||||
 | 
			
		||||
@1 is protected by @2.=@1 è protetta da @2.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,11 @@
 | 
			
		||||
# textdomain: areas
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### chatcommands.lua ###
 | 
			
		||||
 | 
			
		||||
<AreaName>=
 | 
			
		||||
<ID> [faction_name]=
 | 
			
		||||
<NewOwner>=
 | 
			
		||||
<ParentID>=
 | 
			
		||||
<PlayerName>=
 | 
			
		||||
@@ -15,12 +17,13 @@ Area @1 does not exist or is not owned by you.=
 | 
			
		||||
Area closed for faction members.=
 | 
			
		||||
Area closed.=
 | 
			
		||||
Area does not exist.=
 | 
			
		||||
Area opened for faction members.=
 | 
			
		||||
Area is open for members of: @1=
 | 
			
		||||
Area opened.=
 | 
			
		||||
Area protected. ID: @1=
 | 
			
		||||
Area renamed.=
 | 
			
		||||
Area successfully moved.=
 | 
			
		||||
Change the owner of an area using its ID=
 | 
			
		||||
Faction doesn't exists=
 | 
			
		||||
Find areas using a Lua regular expression=
 | 
			
		||||
Get information about area configuration and usage.=
 | 
			
		||||
 | 
			
		||||
@@ -43,6 +46,7 @@ Recursively remove areas using an ID=
 | 
			
		||||
Remove an area using an ID=
 | 
			
		||||
Removed area @1=
 | 
			
		||||
Removed area @1 and it's sub areas.=
 | 
			
		||||
Removes all ownerless areas=
 | 
			
		||||
Rename an area that you own=
 | 
			
		||||
Self protection is disabled.=
 | 
			
		||||
Self protection is enabled.=
 | 
			
		||||
@@ -65,8 +69,6 @@ You have extended area protection limits ("areas_high_limit" privilege).=
 | 
			
		||||
You have the necessary privilege ("@1").=
 | 
			
		||||
You need to select an area first.=
 | 
			
		||||
 | 
			
		||||
Removes all ownerless areas.=
 | 
			
		||||
 | 
			
		||||
### chatcommands.lua ###
 | 
			
		||||
### pos.lua ###
 | 
			
		||||
 | 
			
		||||
@@ -78,6 +80,12 @@ Invalid usage, see /help @1.=
 | 
			
		||||
:open=
 | 
			
		||||
Areas:=
 | 
			
		||||
 | 
			
		||||
### init.lua ###
 | 
			
		||||
 | 
			
		||||
Can administer areas.=
 | 
			
		||||
Can protect areas.=
 | 
			
		||||
Can protect more, bigger areas.=
 | 
			
		||||
 | 
			
		||||
### interact.lua ###
 | 
			
		||||
 | 
			
		||||
@1 is protected by @2.=
 | 
			
		||||
 
 | 
			
		||||
@@ -8,30 +8,34 @@
 | 
			
		||||
areas.self_protection (Self protection) bool false
 | 
			
		||||
 | 
			
		||||
# Self protection: Privilege required to protect an area
 | 
			
		||||
areas.self_protection_privilege (Self protection: Required privs) string interact
 | 
			
		||||
areas.self_protection_privilege (Self protection: Required priv) string interact
 | 
			
		||||
 | 
			
		||||
# Refresh delay for the name displays in the HUD in seconds
 | 
			
		||||
# Limits interactions of players to the areas they have access to.
 | 
			
		||||
# This setting is very restrictive and is not recommended for open-world games.
 | 
			
		||||
areas.require_protection (Require protection) bool false
 | 
			
		||||
 | 
			
		||||
# Area name HUD refresh delay in seconds
 | 
			
		||||
areas.tick (HUD update delay) float 0.5 0 100
 | 
			
		||||
 | 
			
		||||
# Enable the legacy owner_defs metatable mode. Untested and possibly unstable
 | 
			
		||||
areas.legacy_table (Legacy owner_defs metatable) bool false
 | 
			
		||||
areas.node_ownership_legacy (node_ownership compatibility) bool false
 | 
			
		||||
 | 
			
		||||
[Self protection (normal)]
 | 
			
		||||
 | 
			
		||||
# Self protection (normal): Maximal size of the protectable area
 | 
			
		||||
# Maximal size of the protectable area
 | 
			
		||||
# Only enter positive whole numbers for the coordinate values or you'll mess up stuff.
 | 
			
		||||
areas.self_protection_max_size (Maximal area size) v3f (64, 128, 64)
 | 
			
		||||
 | 
			
		||||
# Self protection (normal): Maximal amount of protected areas per player
 | 
			
		||||
# Maximal amount of protected areas per player
 | 
			
		||||
areas.self_protection_max_areas (Maximal area count) int 4
 | 
			
		||||
 | 
			
		||||
[Self protection (high)]
 | 
			
		||||
 | 
			
		||||
# Self protection (normal): Maximal size of the protectable area
 | 
			
		||||
# This setting applies for plyaers with the privilege 'areas_high_limit'
 | 
			
		||||
# For players with the 'areas_high_limit' privilege.
 | 
			
		||||
# Maximal size of the protectable area
 | 
			
		||||
# This setting applies for players with the privilege 'areas_high_limit'
 | 
			
		||||
areas.self_protection_max_size_high (Maximal area size) v3f (512, 512, 512)
 | 
			
		||||
 | 
			
		||||
# Self protection (normal): Maximal amount of protected areas per player
 | 
			
		||||
# Only enter positive whole numbers for the coordinate values or you'll mess up stuff.
 | 
			
		||||
# This setting applies for plyaers with the privilege 'areas_high_limit'
 | 
			
		||||
# For players with the 'areas_high_limit' privilege.
 | 
			
		||||
# Maximal amount of protected areas per player
 | 
			
		||||
areas.self_protection_max_areas_high (Maximal area count) float 32
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user