doorbell/doorbell_marker.lua

68 lines
2.1 KiB
Lua

--doorbell mod
local doorbell_way = {}
minetest.register_node("doorbell:doorbell_marker", {
tiles = {"doorbell_marker.png"},
description = "doorbell marker",
groups = {cracky = 1},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("owner", "")
end,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
end,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local player_name = player:get_player_name()
local meta = minetest.get_meta(pos)
local owner_name = meta:get_string("owner")
local owner_player = minetest.get_player_by_name(owner_name)
if not doorbell_way[player_name] then
doorbell_way[player_name] = player:hud_add({
hud_elem_type = "waypoint",
world_pos = pos,
name = "Doorbell",
text = pos,
number = 0xEDF010,
})
doorbell_play(player:get_pos(), "deurbel1")
end
if owner_player and owner_name ~= player_name and not doorbell_way[owner_name] then
doorbell_way[owner_name] = owner_player:hud_add({
hud_elem_type = "waypoint",
world_pos = pos,
name = "Doorbell",
text = pos,
number = 0xEDF010,
})
doorbell_play(owner_player:get_pos(), "deurbel1")
end
end,
on_punch = function(pos, node, player, pointed_thing)
local player_name = player:get_player_name()
local meta = minetest.get_meta(pos)
local owner_name = meta:get_string("owner")
local owner_player = minetest.get_player_by_name(owner_name)
if doorbell_way[player_name] then
player:hud_remove(doorbell_way[player_name])
doorbell_way[player_name] = nil
end
if owner_player and owner_name ~= player_name and doorbell_way[owner_name] then
owner_player:hud_remove(doorbell_way[owner_name])
doorbell_way[owner_name] = nil
end
end,
})
minetest.register_craft({
output = '"doorbell:doorbell_marker" 1',
recipe = {
{'wool:black', 'wool:black', 'wool:black'},
{'wool:black', 'wool:blue', 'wool:black'},
{'wool:black', 'wool:black', 'wool:black'},
}
})