forked from minetest-mods/mesecons
		
	Speed update of pressureplates up by using node_timers
This commit is contained in:
		@@ -1,3 +1,4 @@
 | 
			
		||||
-- SETTINGS
 | 
			
		||||
BLINKY_PLANT_INTERVAL = 3
 | 
			
		||||
NEW_STYLE_WIRES  = true  -- true = new nodebox wires, false = old raillike wires
 | 
			
		||||
PRESSURE_PLATE_INTERVAL = 0.1
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,22 @@ minetest.register_node("mesecons_pressureplates:pressure_plate_wood_off", {
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3, mesecon = 2},
 | 
			
		||||
    	description="Wood Pressure Plate",
 | 
			
		||||
	
 | 
			
		||||
	on_timer = function(pos, elapsed)
 | 
			
		||||
		local objs = minetest.env:get_objects_inside_radius(pos, 1)
 | 
			
		||||
		for k, obj in pairs(objs) do
 | 
			
		||||
			local objpos=obj:getpos()
 | 
			
		||||
			if objpos.y>pos.y-1 and objpos.y<pos.y then
 | 
			
		||||
				minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_wood_on"})
 | 
			
		||||
				mesecon:receptor_on(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		return true
 | 
			
		||||
	end,
 | 
			
		||||
	
 | 
			
		||||
	on_construct = function(pos)
 | 
			
		||||
		minetest.env:get_node_timer(pos):start(PRESSURE_PLATE_INTERVAL)
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_pressureplates:pressure_plate_wood_on", {
 | 
			
		||||
@@ -36,6 +52,19 @@ minetest.register_node("mesecons_pressureplates:pressure_plate_wood_on", {
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1, mesecon = 2},
 | 
			
		||||
	drop='"mesecons_pressureplates:pressure_plate_wood_off" 1',
 | 
			
		||||
	
 | 
			
		||||
	on_timer = function(pos, elapsed)
 | 
			
		||||
		local objs = minetest.env:get_objects_inside_radius(pos, 1)
 | 
			
		||||
		if objs[1]==nil then
 | 
			
		||||
			minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_wood_off"})
 | 
			
		||||
			mesecon:receptor_off(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
		end
 | 
			
		||||
		return true
 | 
			
		||||
	end,
 | 
			
		||||
	
 | 
			
		||||
	on_construct = function(pos)
 | 
			
		||||
		minetest.env:get_node_timer(pos):start(PRESSURE_PLATE_INTERVAL)
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
@@ -45,35 +74,6 @@ minetest.register_craft({
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_abm(
 | 
			
		||||
	{nodenames = {"mesecons_pressureplates:pressure_plate_wood_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, 1)
 | 
			
		||||
		for k, obj in pairs(objs) do
 | 
			
		||||
			local objpos=obj:getpos()
 | 
			
		||||
			if objpos.y>pos.y-1 and objpos.y<pos.y then
 | 
			
		||||
				minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_wood_on"})
 | 
			
		||||
				mesecon:receptor_on(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
			end
 | 
			
		||||
		end	
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_abm(
 | 
			
		||||
	{nodenames = {"mesecons_pressureplates:pressure_plate_wood_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, 1)
 | 
			
		||||
		if objs[1]==nil then
 | 
			
		||||
			minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_wood_off"})
 | 
			
		||||
			mesecon:receptor_off(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- PRESSURE PLATE STONE
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_pressureplates:pressure_plate_stone_off", {
 | 
			
		||||
@@ -94,6 +94,22 @@ minetest.register_node("mesecons_pressureplates:pressure_plate_stone_off", {
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3, mesecon = 2},
 | 
			
		||||
    	description="Stone Pressure Plate",
 | 
			
		||||
	
 | 
			
		||||
	on_timer = function(pos, elapsed)
 | 
			
		||||
		local objs = minetest.env:get_objects_inside_radius(pos, 1)
 | 
			
		||||
		for k, obj in pairs(objs) do
 | 
			
		||||
			local objpos=obj:getpos()
 | 
			
		||||
			if objpos.y>pos.y-1 and objpos.y<pos.y then
 | 
			
		||||
				minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_stone_on"})
 | 
			
		||||
				mesecon:receptor_on(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		return true
 | 
			
		||||
	end,
 | 
			
		||||
	
 | 
			
		||||
	on_construct = function(pos)
 | 
			
		||||
		minetest.env:get_node_timer(pos):start(PRESSURE_PLATE_INTERVAL)
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_pressureplates:pressure_plate_stone_on", {
 | 
			
		||||
@@ -112,6 +128,19 @@ minetest.register_node("mesecons_pressureplates:pressure_plate_stone_on", {
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1, mesecon = 2},
 | 
			
		||||
	drop='"mesecons_pressureplates:pressure_plate_stone_off" 1',
 | 
			
		||||
	
 | 
			
		||||
	on_timer = function(pos, elapsed)
 | 
			
		||||
		local objs = minetest.env:get_objects_inside_radius(pos, 1)
 | 
			
		||||
		if objs[1]==nil then
 | 
			
		||||
			minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_stone_off"})
 | 
			
		||||
			mesecon:receptor_off(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
		end
 | 
			
		||||
		return true
 | 
			
		||||
	end,
 | 
			
		||||
	
 | 
			
		||||
	on_construct = function(pos)
 | 
			
		||||
		minetest.env:get_node_timer(pos):start(PRESSURE_PLATE_INTERVAL)
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
@@ -121,35 +150,6 @@ minetest.register_craft({
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_abm(
 | 
			
		||||
	{nodenames = {"mesecons_pressureplates:pressure_plate_stone_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, 1)
 | 
			
		||||
		for k, obj in pairs(objs) do
 | 
			
		||||
			local objpos=obj:getpos()
 | 
			
		||||
			if objpos.y>pos.y-1 and objpos.y<pos.y then
 | 
			
		||||
				minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_stone_on"})
 | 
			
		||||
				mesecon:receptor_on(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
			end
 | 
			
		||||
		end	
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_abm(
 | 
			
		||||
	{nodenames = {"mesecons_pressureplates:pressure_plate_stone_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, 1)
 | 
			
		||||
		if objs[1]==nil then
 | 
			
		||||
			minetest.env:add_node(pos, {name="mesecons_pressureplates:pressure_plate_stone_off"})
 | 
			
		||||
			mesecon:receptor_off(pos, mesecon:get_rules("pressureplate"))
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
mesecon:add_rules("pressureplate", 
 | 
			
		||||
{{x=0,  y=1,  z=-1},
 | 
			
		||||
{x=0,  y=0,  z=-1},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user