6 --detects players and outputs accordingly
9 minetest.register_node("redstone:player_detector_"..i, {
10 description = "Redstone Player Detector",
12 tiles = {"player_detector.png"},
15 drop = "redstone:player_detector_0",
16 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4, torch=1,redstone=1,redstone_torch=1,redstone_power=i, redstone_player_detection = 1},
17 legacy_wallmounted = true,
19 on_construct = function(pos)
21 name = "redstone:player_detector_"..i,
24 redstone.player_detector_add(pos)
27 on_destruct = function(pos, oldnode)
28 redstone.player_detector_remove(pos)
29 redstone.inject(pos,nil)
32 sounds = main.stoneSound(),
35 minetest.register_lbm({
36 name = "redstone:player_detector_"..i,
37 nodenames = {"redstone:player_detector_"..i},
38 run_at_every_load = true,
39 action = function(pos)
41 name = "redstone:player_detector_"..i,
44 redstone.player_detector_add(pos)
52 minetest.register_abm{
53 label = "Redstone Player Detection",
54 nodenames = {"group:redstone_player_detection"},
55 --neighbors = {"group:water"},
58 action = function(pos)
59 local found_player = false
60 for _,object in ipairs(minetest.get_objects_inside_radius(pos, 9)) do
61 if object:is_player() and object:get_hp() > 0 then
62 local level = minetest.get_item_group(minetest.get_node(pos).name, "redstone_power")
64 local pos2 = object:get_pos()
65 pos2 = vector.floor(vector.add(pos2,0.5))
66 local distance = math.floor(vector.distance(pos2,pos))
67 distance = math.abs(distance - 9)
69 if level ~= distance then
70 minetest.set_node(pos,{name="redstone:player_detector_"..distance})
71 redstone.collect_info(pos)
76 if found_player == false then
77 minetest.swap_node(pos,{name="redstone:player_detector_0"})
78 redstone.collect_info(pos)