Initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
protector
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
local function is_mapblock_grid_pos(pos)
|
||||||
|
return (pos.x % 16 == 0) and (pos.y % 16 == 0) and (pos.z % 16 == 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_placenode(function(pos, newnode, placer)
|
||||||
|
if newnode.name ~= "protector:protect" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if is_mapblock_grid_pos(pos) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.remove_node(pos)
|
||||||
|
|
||||||
|
if placer and placer:is_player() then
|
||||||
|
local player_name = placer:get_player_name()
|
||||||
|
|
||||||
|
if not minetest.is_creative_enabled(player_name) then
|
||||||
|
local refund = ItemStack("protector:protect")
|
||||||
|
local inv = placer:get_inventory()
|
||||||
|
|
||||||
|
if inv and inv:room_for_item("main", refund) then
|
||||||
|
inv:add_item("main", refund)
|
||||||
|
else
|
||||||
|
minetest.add_item(vector.offset(pos, 0, 1, 0), refund)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.chat_send_player(
|
||||||
|
player_name,
|
||||||
|
"Protector placement failed: place only at coordinates divisible by 16."
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end)
|
||||||
Reference in New Issue
Block a user