diff options
author | cheapie <no-email-for-you@example.com> | 2025-05-02 10:05:35 -0500 |
---|---|---|
committer | cheapie <no-email-for-you@example.com> | 2025-05-02 10:05:35 -0500 |
commit | b7a3e32183d6e58742965dabf50cfb8805b96f49 (patch) | |
tree | a4c184800e20be28bcffd6ae3b4387cee6c97c7d | |
parent | 87ef4357b5e2f8d4f0213481cd09b3f2d5c068fe (diff) | |
download | firealarm-master.tar firealarm-master.tar.gz firealarm-master.tar.bz2 firealarm-master.tar.xz firealarm-master.zip |
-rw-r--r-- | firealarm_smokedetector/init.lua | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/firealarm_smokedetector/init.lua b/firealarm_smokedetector/init.lua index dc67a1b..9297f2c 100644 --- a/firealarm_smokedetector/init.lua +++ b/firealarm_smokedetector/init.lua @@ -42,6 +42,11 @@ minetest.register_node(":firealarm:smokedetector_off",{ on_punch = function(pos,_,player) local name = player:get_player_name() minetest.chat_send_player(name,string.format("Position: %d,%d,%d",pos.x,pos.y,pos.z)) + local item = player:get_wielded_item() + if item and string.find(item:get_name(),"magnet") then + --Simulate the effect of the old beehive smoker + minetest.get_meta(pos):set_int("agressive",0) + end end, after_place_node = function(pos) firealarm.setDevInfo("signaling",pos,{active = false,manualReset = false}) @@ -91,17 +96,20 @@ minetest.register_abm({ action = function(pos,node) local devInfo = firealarm.getDevInfo("signaling",pos) if not devInfo then return end - local minp = vector.add(pos,vector.new(-4,-10,-4)) - local maxp = vector.add(pos,vector.new(4,0,4)) - local fire = false - local fire_nodes = {["fire:permanent_flame"] = true,["fire:basic_flame"] = true} - for x=minp.x,maxp.x,1 do - for y=minp.y,maxp.y,1 do - for z=minp.z,maxp.z,1 do - if fire_nodes[minetest.get_node({x=x,y=y,z=z}).name] then fire = true end - end + local minheight + for i=-1,-10,-1 do + local checkpos = vector.add(pos,vector.new(0,i,0)) + local ndef = minetest.registered_nodes[minetest.get_node(checkpos).name] + if ndef and ndef.drawtype == "normal" then + minheight = i + break end end + minheight = minheight or -10 + local minp = vector.add(pos,vector.new(-4,minheight,-4)) + local maxp = vector.add(pos,vector.new(4,0,4)) + local fire_nodes = {"fire:permanent_flame","fire:basic_flame"} + local fire = #minetest.find_nodes_in_area(minp,maxp,fire_nodes) > 0 if fire or minetest.get_meta(pos):get_int("agressive") == 0 then devInfo.active = true firealarm.setDevInfo("signaling",pos,devInfo) |