From 36ae0cc1a54538742f1d1f3709bb2c1840a33539 Mon Sep 17 00:00:00 2001 From: Jeija Date: Mon, 5 Mar 2012 19:21:26 +0100 Subject: Upload after major code reorganization - Version 0.6 DEV - Split mesecons mod into several modules - [BUGGY?] --- mesecons_detector/depends.txt | 2 + mesecons_detector/init.lua | 85 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 mesecons_detector/depends.txt create mode 100644 mesecons_detector/init.lua (limited to 'mesecons_detector') diff --git a/mesecons_detector/depends.txt b/mesecons_detector/depends.txt new file mode 100644 index 0000000..bc7b062 --- /dev/null +++ b/mesecons_detector/depends.txt @@ -0,0 +1,2 @@ +mesecons +mesecons_materials diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua new file mode 100644 index 0000000..55962fb --- /dev/null +++ b/mesecons_detector/init.lua @@ -0,0 +1,85 @@ +--SHORT RANGE DETECTORS +minetest.register_node("mesecons_detector:object_detector_off", { + tile_images = {"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, + material = minetest.digprop_stonelike(4), + description="Player Detector", +}) + +minetest.register_node("mesecons_detector:object_detector_on", { + tile_images = {"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, + material = minetest.digprop_stonelike(4), + drop = '"mesecons_detector:object_detector_off" 1', + description="Player Detector", +}) + +minetest.register_craft({ + output = '"mesecons_detector:object_detector_off" 1', + recipe = { + {"default:steelblock", '', "default:steelblock"}, + {"default:steelblock", "mesecons_materials:ic", "default:steelblock"}, + {"default:steelblock", "mesecons:mesecon_off", "default:steelblock"}, + } +}) + +minetest.register_abm( + {nodenames = {"mesecons_detector:object_detector_off"}, + 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) + 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 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_text() then + return + end + end + local objpos=obj:getpos() + minetest.env:add_node(pos, {name="mesecons_detector:object_detector_on"}) + mesecon:receptor_on(pos, "pressureplate") + end + end + end, +}) + +minetest.register_abm( + {nodenames = {"mesecons_detector:object_detector_on"}, + 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 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 + 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 minetest.env:get_meta({x=pos.x, y=pos.y-1, z=pos.z}):get_text() == obj:get_player_name() then + objectfound=objectfound+1 + end + else +-- Detected object is not piston pusher - will be changed if every entity has a type (like entity_type=mob) + objectfound=objectfound + 1 + end + end + end + if objectfound==0 then + minetest.env:add_node(pos, {name="mesecons_detector:object_detector_off"}) + mesecon:receptor_off(pos, "pressureplate") + end + end, +}) + +minetest.register_on_dignode( + function(pos, oldnode, digger) + if oldnode.name == "mesecons_detector:object_detector_on" then + mesecon:receptor_off(pos, "pressureplate") + end + end +) + +mesecon:add_receptor_node("mesecons_detector:object_detector_on") +mesecon:add_receptor_node_off("mesecons_detector:object_detector_off") -- cgit v1.2.3