forked from minetest-mods/areas
Fix rename_area and buildable_to nodes on the edges of areas
This commit is contained in:
parent
7b0ff512f7
commit
b1a4f878ef
|
@ -144,14 +144,14 @@ minetest.register_chatcommand("rename_area", {
|
|||
privs = {},
|
||||
func = function(name, param)
|
||||
local found, _, id, newName = param:find("^(%d+)%s(.+)$")
|
||||
|
||||
if not found then
|
||||
minetest.chat_send_player(name,
|
||||
"Invalid usage, see /help rename_area")
|
||||
return
|
||||
end
|
||||
|
||||
index = areas:getIndexById(tonumber(id))
|
||||
id = tonumber(id)
|
||||
index = areas:getIndexById(id)
|
||||
|
||||
if not index then
|
||||
minetest.chat_send_player(name, "That area doesn't exist.")
|
||||
|
@ -165,6 +165,7 @@ minetest.register_chatcommand("rename_area", {
|
|||
|
||||
areas.areas[index].name = newName
|
||||
areas:save()
|
||||
minetest.chat_send_player(name, "Area renamed.")
|
||||
end})
|
||||
|
||||
|
||||
|
|
45
interact.lua
45
interact.lua
|
@ -10,30 +10,33 @@ if minetest.can_interact then
|
|||
old_can_interact = minetest.can_interact
|
||||
function minetest.can_interact(pos, name)
|
||||
if not areas:canInteract(pos, name) then
|
||||
printWarning(name, pos)
|
||||
return false
|
||||
end
|
||||
return old_can_interact(pos, name)
|
||||
end
|
||||
else
|
||||
local old_node_place = minetest.item_place_node
|
||||
function minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
-- XXX: buildable_to nodes can mess this up
|
||||
local pos = pointed_thing.above
|
||||
if not areas:canInteract(pos, placer:get_player_name()) then
|
||||
printWarning(placer:get_player_name(), pos)
|
||||
return itemstack -- Abort place.
|
||||
end
|
||||
return old_node_place(itemstack, placer, pointed_thing)
|
||||
end
|
||||
|
||||
local old_node_dig = minetest.node_dig
|
||||
function minetest.node_dig(pos, node, digger)
|
||||
if not areas:canInteract(pos, digger:get_player_name()) then
|
||||
printWarning(digger:get_player_name(), pos)
|
||||
return -- Abort dig.
|
||||
end
|
||||
return old_node_dig(pos, node, digger)
|
||||
end
|
||||
end
|
||||
|
||||
local old_node_place = minetest.item_place_node
|
||||
function minetest.item_place_node(itemstack, placer, pointed_thing)
|
||||
local pos = pointed_thing.above
|
||||
local ndef = minetest.registered_nodes[pointed_thing.under]
|
||||
if ndef and ndef.buildable_to then
|
||||
pos = pointed_thing.under
|
||||
end
|
||||
|
||||
if not areas:canInteract(pos, placer:get_player_name()) then
|
||||
printWarning(placer:get_player_name(), pos)
|
||||
return itemstack -- Abort place.
|
||||
end
|
||||
return old_node_place(itemstack, placer, pointed_thing)
|
||||
end
|
||||
|
||||
local old_node_dig = minetest.node_dig
|
||||
function minetest.node_dig(pos, node, digger)
|
||||
if not areas:canInteract(pos, digger:get_player_name()) then
|
||||
printWarning(digger:get_player_name(), pos)
|
||||
return -- Abort dig.
|
||||
end
|
||||
return old_node_dig(pos, node, digger)
|
||||
end
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ end
|
|||
|
||||
-- Checks if a player owns an area or a parent of it
|
||||
function areas:isAreaOwner(id, name)
|
||||
cur = self:getAreaById(id)
|
||||
local cur = self:getAreaById(id)
|
||||
if cur and minetest.check_player_privs(name, {areas=true}) then
|
||||
return true
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user