]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/redstone/lever.lua
Remove debug comment
[Crafter.git] / mods / redstone / lever.lua
index 807003c9787b9a8bb2ceff29777d6f98526f3ac7..8498c8037511c4015ae67f65a467a5216639d6cb 100644 (file)
@@ -3,7 +3,15 @@ local
 minetest,vector,math,pairs
 =
 minetest,vector,math,pairs
-
+local excluded_nodes = {
+       ["main:ironblock"]=true,
+       ["main:ironblock_on"]=true,
+}
+local excluded_mods = {redstone=true,door=true}
+local registered_nodes
+minetest.register_on_mods_loaded(function()
+       registered_nodes  = minetest.registered_nodes
+end)
 
 minetest.register_node("redstone:lever_on", {
     description = "Lever On",
@@ -54,7 +62,8 @@ minetest.register_lbm({
        nodenames = {"redstone:lever_on"},
        run_at_every_load = true,
        action = function(pos)
-               local dir = minetest.wallmounted_to_dir(node.param2)
+               local param2 = minetest.get_node(pos).param2
+               local dir = minetest.wallmounted_to_dir(param2)
                redstone.inject(pos,{torch=9})
                local pos2 = vector.add(dir,pos)
                redstone.inject(pos2,{torch=9})
@@ -78,6 +87,7 @@ minetest.register_node("redstone:lever_off", {
        walkable = false,
        drawtype= "nodebox",
        drop="redstone:lever_off",
+       node_placement_prediction = "",
        node_box = {
                type = "fixed",
                fixed = {
@@ -86,6 +96,19 @@ minetest.register_node("redstone:lever_off", {
                                {-0.1, -0.5,  -0.3, 0.1,  0, -0.1},
                        },
                },
+
+       on_construct = function(pos)
+               local param2 = minetest.get_node(pos).param2
+               local dir = minetest.wallmounted_to_dir(param2)
+               local node = minetest.get_node(vector.add(pos,dir))
+               local def = registered_nodes[node.name]
+               local remove = (excluded_mods[def.mod_origin] == true or excluded_nodes[node.name] == true)
+               if remove then
+                       minetest.swap_node(pos,{name="air"})
+                       redstone.inject(pos,nil)
+                       minetest.throw_item(pos, "redstone:lever_off")
+               end
+       end,
     on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
                minetest.swap_node(pos, {name="redstone:lever_on",param2=node.param2})
                minetest.sound_play("lever", {pos=pos})