Minetest mod: Toggle privs in areas
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.5 KiB

minetest.register_privilege("arena", {
description = "Player is involved in an arena battle.",
give_to_singleplayer= false,
})
local drop = function(pos, itemstack)
local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
if obj then
obj:set_velocity({
x = math.random(-10, 10) / 9,
y = 5,
z = math.random(-10, 10) / 9,
})
end
end
function creative_regions.drop_everything(player, drop_bones)
local player_inventory_lists = { "main", "craft" }
local player_inv = player:get_inventory()
local pos = player:get_pos()
--minetest.find_node_near(pos, radius, nodenames)
for _, list_name in ipairs(player_inventory_lists) do
for i = 1, player_inv:get_size(list_name) do
drop(pos, player_inv:get_stack(list_name, i))
end
player_inv:set_list(list_name, {})
end
if drop_bones then
drop(pos, ItemStack("bones:bones"))
-- minetest.item_drop(itemstack, player, pos)
end
end
minetest.register_on_dieplayer(function(player)
-- minetest.chat_send_all(player:get_player_name().." lost.")
local player_name = player:get_player_name()
if minetest.check_player_privs(player_name, {arena=true}) then
creative_regions.drop_everything(player, true)
local privs = minetest.get_player_privs(player_name)
privs["arena"] = nil
minetest.set_player_privs(player_name, privs)
end
end)
minetest.register_on_leaveplayer(function(player)
-- minetest.chat_send_all(player:get_player_name().." has left this awesome game.")
local player_name = player:get_player_name()
if minetest.check_player_privs(player_name, {arena=true}) then
creative_regions.drop_everything(player, true)
local privs = minetest.get_player_privs(player_name)
privs["arena"] = nil
minetest.set_player_privs(player_name, privs)
end
end)
if minetest.get_modpath("areas") then
minetest.register_node("creative_regions:protector_arena", {
description = "Arena protector",
tiles = {"creative_regions_protector_arena.png"},
tiles = {"default_cobble.png^default_tool_diamondsword.png"},
is_ground_content = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1},
light_source = 1,
after_place_node = function(pos, placer, itemstack, pointed_thing)
return creative_regions.protector_set_area_privs(pos, placer, itemstack, pointed_thing, "-creative, -fast, -fly, -teleport, +arena", "Arena Protector")
end,
can_dig = creative_regions.protector_can_dig,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
return creative_regions.protector_remove_area_privs(pos, oldnode, oldmetadata, digger, "Arena protector")
end
})
end