]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/player_detector.lua
Add in advanced player detectors
[Crafter.git] / mods / redstone / player_detector.lua
1 local
2 minetest,ipairs,math
3 =
4 minetest,ipairs,math
5
6 --detects players and outputs accordingly
7 for i = 0,9  do
8
9 minetest.register_node("redstone:player_detector_"..i, {
10         description = "Redstone Player Detector",
11         drawtype = "normal",
12         tiles = {"player_detector.png"},
13         paramtype = "light",
14         paramtype2 = "none",
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,
18         
19         on_construct = function(pos)
20                 redstone.inject(pos,{
21             name = "redstone:player_detector_"..i,
22             torch = i,
23                 })
24                 redstone.player_detector_add(pos)
25                 redstone.update(pos)
26         end,
27         on_destruct = function(pos, oldnode)
28                 redstone.player_detector_remove(pos)
29                 redstone.inject(pos,nil)
30                 redstone.update(pos)
31         end,
32         sounds = main.stoneSound(),
33 })
34
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)
40         redstone.inject(pos,{
41             name = "redstone:player_detector_"..i,
42             torch = i,
43                 })
44                 redstone.player_detector_add(pos)
45     end,
46 })
47
48 end
49
50 --[[
51
52 minetest.register_abm{
53     label = "Redstone Player Detection",
54         nodenames = {"group:redstone_player_detection"},
55         --neighbors = {"group:water"},
56         interval = 0.2,
57         chance = 1,
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")
63                                 found_player = true
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)
68                                 --print(distance)
69                                 if level ~= distance then
70                                         minetest.set_node(pos,{name="redstone:player_detector_"..distance})
71                                         redstone.collect_info(pos)
72                                         --print(distance)
73                                 end
74                         end
75                 end
76                 if found_player == false then
77                         minetest.swap_node(pos,{name="redstone:player_detector_0"})
78                         redstone.collect_info(pos)
79                 end
80         end,
81 }
82 ]]--