From 9ebecda0890df4518f2fc8666503ff4961b2ca65 Mon Sep 17 00:00:00 2001 From: oilboi <47129783+oilboi@users.noreply.github.com> Date: Wed, 1 Jul 2020 16:25:11 -0400 Subject: [PATCH] Remove undefined behavior of capacitors and repeaters --- mods/redstone/capacitors.lua | 19 ++++++++----------- mods/redstone/repeater.lua | 12 ++++++++---- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/mods/redstone/capacitors.lua b/mods/redstone/capacitors.lua index 5dbfa4c..10a30b1 100644 --- a/mods/redstone/capacitors.lua +++ b/mods/redstone/capacitors.lua @@ -10,12 +10,11 @@ minetest.override_item("main:ironblock",{ redstone.update(pos,true) end) end, - after_destruct = function(pos, oldnode) + on_destruct = function(pos) redstone.inject(pos,nil) + + redstone.update(pos,true) --redstone.update(pos) - minetest.after(0,function() - redstone.update(pos,true) - end) end }) @@ -29,8 +28,8 @@ redstone.register_activator({ source = true, activator = true, }) - redstone.update(pos) redstone.update(pos,true) + redstone.update(pos) end, }) @@ -82,12 +81,11 @@ minetest.register_node(":main:ironblock_on", { redstone.update(pos,true) end) end, - after_destruct = function(pos, oldnode) + on_destruct = function(pos) redstone.inject(pos,nil) - --redstone.update(pos) - minetest.after(0,function() - redstone.update(pos,true) - end) + + redstone.update(pos,true) + redstone.update(pos) end, }) @@ -102,7 +100,6 @@ redstone.register_activator({ capacitor = 0, activator = true, }) - redstone.update(pos) redstone.update(pos,true) end, }) diff --git a/mods/redstone/repeater.lua b/mods/redstone/repeater.lua index fa9a841..81cb377 100644 --- a/mods/redstone/repeater.lua +++ b/mods/redstone/repeater.lua @@ -68,8 +68,10 @@ minetest.register_node("redstone:repeater_on_"..level, { output = vector.add(pos,dir), dir = dir }) - redstone.update(pos) - redstone.update(vector.add(pos,dir)) + minetest.after(0,function() + redstone.update(pos) + redstone.update(vector.add(pos,dir)) + end) end, after_destruct = function(pos, oldnode) @@ -176,8 +178,10 @@ minetest.register_node("redstone:repeater_off_"..level, { output = vector.add(pos,dir), dir = dir }) - redstone.update(pos) - redstone.update(vector.add(pos,dir)) + minetest.after(0,function() + redstone.update(pos) + redstone.update(vector.add(pos,dir)) + end) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) -- 2.44.0