From c46cd1ff130734c899e1e649b7d27c0ff4e4e15e Mon Sep 17 00:00:00 2001 From: paly2 Date: Fri, 11 Sep 2015 18:20:19 +0200 Subject: [PATCH] Add the "mesecons jammer" node --- moremesecons_jammer/depends.txt | 1 + moremesecons_jammer/init.lua | 72 ++++++++++++++++++ .../textures/moremesecons_jammer_off.png | Bin 0 -> 211 bytes .../textures/moremesecons_jammer_on.png | Bin 0 -> 227 bytes 4 files changed, 73 insertions(+) create mode 100644 moremesecons_jammer/depends.txt create mode 100644 moremesecons_jammer/init.lua create mode 100644 moremesecons_jammer/textures/moremesecons_jammer_off.png create mode 100644 moremesecons_jammer/textures/moremesecons_jammer_on.png diff --git a/moremesecons_jammer/depends.txt b/moremesecons_jammer/depends.txt new file mode 100644 index 0000000..acaa924 --- /dev/null +++ b/moremesecons_jammer/depends.txt @@ -0,0 +1 @@ +mesecons diff --git a/moremesecons_jammer/init.lua b/moremesecons_jammer/init.lua new file mode 100644 index 0000000..a700e3e --- /dev/null +++ b/moremesecons_jammer/init.lua @@ -0,0 +1,72 @@ +local JAMMER_MAX_DISTANCE = 10 + +minetest.after(0, function() -- After load all mods +function mesecon.turnon(pos, link) -- Overwrite mesecons function. + local frontiers = {{pos = pos, link = link}} + + local depth = 1 + while frontiers[depth] do + local f = frontiers[depth] + local node = minetest.get_node_or_nil(f.pos) + + -- area not loaded, postpone action + if not node then + mesecon.queue:add_action(f.pos, "turnon", {link}, nil, true) + elseif minetest.find_node_near(f.pos, JAMMER_MAX_DISTANCE, {"moremesecons_jammer:jammer_on"}) then -- JAMMER + break + elseif mesecon.is_conductor_off(node, f.link) then + local rules = mesecon.conductor_get_rules(node) + + minetest.swap_node(f.pos, {name = mesecon.get_conductor_on(node, f.link), + param2 = node.param2}) + + -- call turnon on neighbors: normal rules + for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do + local np = mesecon.addPosRule(f.pos, r) + + -- area not loaded, postpone action + if not minetest.get_node_or_nil(np) then + mesecon.queue:add_action(np, "turnon", {rulename}, + nil, true) + else + local links = mesecon.rules_link_rule_all(f.pos, r) + for _, l in ipairs(links) do + table.insert(frontiers, {pos = np, link = l}) + end + end + end + elseif mesecon.is_effector(node.name) then + mesecon.changesignal(f.pos, node, f.link, mesecon.state.on, depth) + if mesecon.is_effector_off(node.name) then + mesecon.activate(f.pos, node, f.link, depth) + end + end + depth = depth + 1 + end +end +end) + +mesecon.register_node("moremesecons_jammer:jammer", { + description = "Mesecons Jammer", + paramtype = "light", +},{ + tiles = {"moremesecons_jammer_off.png"}, + groups = {dig_immediate=2}, + mesecons = {effector = { + action_on = function(pos) + minetest.swap_node(pos, {name="moremesecons_jammer:jammer_on"}) + end }} +},{ + tiles = {"moremesecons_jammer_on.png"}, + groups = {dig_immediate=2, not_in_creative_inventory=1}, + mesecons = {effector = { + action_off = function(pos) + minetest.swap_node(pos, {name="moremesecons_jammer:jammer_off"}) + end }} +}) + +minetest.register_craft({ + output = "moremesecons_jammer:jammer_off", + recipe = {{"group:mesecon_conductor_craftable", "default:mese", "group:mesecon_conductor_craftable"}, + {"", "moremesecons_wireless:jammer_off", ""}} +}) diff --git a/moremesecons_jammer/textures/moremesecons_jammer_off.png b/moremesecons_jammer/textures/moremesecons_jammer_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3f60d8b0b1d33b7614105b662f02f1b49dc592c0 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J|{Q7rRdxh=iPupk|nMYCC>S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYw zzMd|QAsXk;Uh?K*P~dSsc;xqeOFfqVVci^Mf7zlmR1X?6o~vZ$uwrm@T)tqndBPg* z728c-F|k}t3pLkHO}_G%_oT$vCmFl{JvUwFz*5{SDVyHmI~iy&gQu&X%Q~loCIDAd BKLh{( literal 0 HcmV?d00001 diff --git a/moremesecons_jammer/textures/moremesecons_jammer_on.png b/moremesecons_jammer/textures/moremesecons_jammer_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9ca689066a725f67eb1f51f4dc05d5b4c69b94 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J|{Q7nfMpGO-q47k|nMYCC>S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYw zv7RoDAsXkmPIBZr;K0Ew{PO?)IrDU;?a+%}@m$iQX-dmvZkaf)Cu}|nteHg~DW8Ng zpNibF+VOeW?n_qbP0l+XkK-U~|U literal 0 HcmV?d00001