114 lines
3.2 KiB
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'},
|
|
-- }
|
|
-- })
|