summaryrefslogtreecommitdiff
path: root/mesecons_detector
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-12-08 22:28:46 +0100
committerJeija <norrepli@gmail.com>2012-12-08 22:28:46 +0100
commitcf6080f7237af1c55a6d80bea4725dcb5c8cb1eb (patch)
tree6e858459204230ad5cc0ea2c39c10a161a738d5e /mesecons_detector
parent00e071b695574928fce2ca56e3e8eca6ad3d35ef (diff)
downloadmesecons-cf6080f7237af1c55a6d80bea4725dcb5c8cb1eb.tar
mesecons-cf6080f7237af1c55a6d80bea4725dcb5c8cb1eb.tar.gz
mesecons-cf6080f7237af1c55a6d80bea4725dcb5c8cb1eb.tar.bz2
mesecons-cf6080f7237af1c55a6d80bea4725dcb5c8cb1eb.tar.xz
mesecons-cf6080f7237af1c55a6d80bea4725dcb5c8cb1eb.zip
Port more blocks to nodedef system: object detector, extrawires, water turbine, insulated wire
Diffstat (limited to 'mesecons_detector')
-rw-r--r--mesecons_detector/init.lua27
1 files changed, 17 insertions, 10 deletions
diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua
index cbee787..1d5b214 100644
--- a/mesecons_detector/init.lua
+++ b/mesecons_detector/init.lua
@@ -1,19 +1,29 @@
---SHORT RANGE DETECTORS
+-- Object detector
+-- Detects all entities in a certain radius
+-- The radius can be specified in mesecons/settings.lua
+
minetest.register_node("mesecons_detector:object_detector_off", {
tiles = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"},
paramtype = "light",
walkable = true,
- groups = {cracky=3, mesecon = 2},
+ groups = {cracky=3},
description="Player Detector",
+ mesecons = {receptor = {
+ state = mesecon.state.off,
+ rules = mesecon.rules.pressurplatelike
+ }}
})
minetest.register_node("mesecons_detector:object_detector_on", {
tiles = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png"},
paramtype = "light",
walkable = true,
- groups = {cracky=3,not_in_creative_inventory=1, mesecon = 2},
+ groups = {cracky=3,not_in_creative_inventory=1},
drop = 'mesecons_detector:object_detector_off',
- description="Player Detector",
+ mesecons = {receptor = {
+ state = mesecon.state.on,
+ rules = mesecon.rules.pressurplatelike
+ }}
})
minetest.register_craft({
@@ -30,9 +40,9 @@ minetest.register_abm(
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
- local objs = minetest.env:get_objects_inside_radius(pos, 6)
+ local objs = minetest.env:get_objects_inside_radius(pos, OBJECT_DETECTOR_RADIUS)
for k, obj in pairs(objs) do
- if obj:get_entity_name()~="mesecons_pistons:piston_pusher_sticky" and obj:get_entity_name()~="mesecons_pistons:piston_pusher_normal" and obj:get_player_name()~=nil then -- Detected object is not piston pusher - will be changed if every entity has a type (like entity_type=mob)
+ if obj:get_entity_name()~="mesecons_pistons:piston_pusher_sticky" and obj:get_entity_name()~="mesecons_pistons:piston_pusher_normal" and obj:get_player_name()~=nil then
if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name=="default:sign_wall" then
if obj:get_player_name()~=minetest.env:get_meta({x=pos.x, y=pos.y-1, z=pos.z}):get_string("text") then
return
@@ -51,7 +61,7 @@ minetest.register_abm(
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
- local objs = minetest.env:get_objects_inside_radius(pos, 6)
+ local objs = minetest.env:get_objects_inside_radius(pos, OBJECT_DETECTOR_RADIUS)
local objectfound=0
for k, obj in pairs(objs) do
if obj:get_entity_name()~="mesecons_pistons:piston_pusher_sticky" and obj:get_entity_name()~="mesecons_pistons:piston_pusher_normal" and obj~=nil
@@ -72,6 +82,3 @@ minetest.register_abm(
end
end,
})
-
-mesecon:add_receptor_node("mesecons_detector:object_detector_on", mesecon:get_rules("pressureplate"))
-mesecon:add_receptor_node_off("mesecons_detector:object_detector_off", mesecon:get_rules("pressureplate"))