pvp_block/nodes.lua

114 lines
3.2 KiB
Lua

minetest.register_node("pvp_block:pvpblock", {
description = "PvP Block",
tiles = {"pvpblock.png"},
groups = {cracky = 2, stone = 1},
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
if placer and placer:is_player() then
table.insert(pvp_block.blocks, {
pos = vector.round(pos),
owner = placer:get_player_name()
}
)
pvp_block:save()
meta:set_string("infotext", "owner: "..placer:get_player_name())
end
end,
on_punch = function(pos, node, puncher, pointed_thing)
local pname = puncher:get_player_name()
if not pname or pname == "" then
return
end
local privs = minetest.get_player_privs(pname)
if not privs.privs then
return
end
minetest.chat_send_player(pname, "--- Select positions by punching two nodes.")
pvp_block.pos0[pname] = vector.round(pos)
pvp_block.set_pos[pname] = "pos1"
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local pos0 = vector.round(pos)
local pname = clicker:get_player_name()
for i, block in ipairs(pvp_block.blocks) do
if vector.equals(pos0, block.pos) then
pvp_block.pos1[pname] = block.pos1
pvp_block.pos2[pname] = block.pos2
pvp_block.mark_pos1(pname)
pvp_block.mark_pos2(pname)
minetest.chat_send_player(pname, "--- Position 1 set to "..minetest.pos_to_string(block.pos1))
minetest.chat_send_player(pname, "--- Position 2 set to "..minetest.pos_to_string(block.pos2))
break
end
end
end,
on_destruct = function(pos)
for i, block in ipairs(pvp_block.blocks) do
if vector.equals(block.pos, pos) then
table.remove(pvp_block.blocks, i)
pvp_block:save()
end
end
end,
})
minetest.register_entity("pvp_block:pos1", {
initial_properties = {
visual = "cube",
visual_size = {x=1.1, y=1.1},
textures = {"pvpblock_pos1.png", "pvpblock_pos1.png",
"pvpblock_pos1.png", "pvpblock_pos1.png",
"pvpblock_pos1.png", "pvpblock_pos1.png"},
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
physical = false,
},
on_step = function(self, dtime)
if pvp_block.marker1[self.player_name] == nil then
self.object:remove()
end
end,
on_punch = function(self, hitter)
self.object:remove()
pvp_block.marker1[self.player_name] = nil
end,
})
minetest.register_entity("pvp_block:pos2", {
initial_properties = {
visual = "cube",
visual_size = {x=1.1, y=1.1},
textures = {"pvpblock_pos2.png", "pvpblock_pos2.png",
"pvpblock_pos2.png", "pvpblock_pos2.png",
"pvpblock_pos2.png", "pvpblock_pos2.png"},
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
physical = false,
},
on_step = function(self, dtime)
if pvp_block.marker2[self.player_name] == nil then
self.object:remove()
end
end,
on_punch = function(self, hitter)
self.object:remove()
pvp_block.marker2[self.player_name] = nil
end,
})
-- minetest.register_craft({
-- output = 'pvp_block:pvpblock',
-- recipe = {
-- {'default:pick_mese', 'farming:hoe_mese', 'default:sword_mese'},
-- {'default:sandstone', 'default:goldblock', 'default:sandstone'},
-- {'default:stonebrick', 'default:mese', 'default:stonebrick'},
-- }
-- })