]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/redstone/lever.lua
Remove debug comment
[Crafter.git] / mods / redstone / lever.lua
index 273f6c0cf423c96c9270f3758ecfce2e81ef6e18..8498c8037511c4015ae67f65a467a5216639d6cb 100644 (file)
@@ -3,10 +3,18 @@ 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_off", {
-    description = "Lever",
+minetest.register_node("redstone:lever_on", {
+    description = "Lever On",
     tiles = {"stone.png"},
     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
     sounds = main.stoneSound(),
@@ -21,36 +29,55 @@ minetest.register_node("redstone:lever_off", {
                fixed = {
                                --left front bottom right back top
                                {-0.3, -0.5,  -0.4, 0.3,  -0.4, 0.4},
-                               {-0.1, -0.5,  -0.3, 0.1,  0, -0.1},
+                               {-0.1, -0.5,  0.3, 0.1,  0, 0.1},
                        },
                },
     on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-               minetest.swap_node(pos, {name="redstone:lever_on",param2=node.param2})
+               minetest.swap_node(pos, {name="redstone:lever_off",param2=node.param2})
+
                minetest.sound_play("lever", {pos=pos})
 
                local dir = minetest.wallmounted_to_dir(node.param2)
-               pos = vector.add(dir,pos)
-       
-               local meta = minetest.get_meta(pos)
-
-               meta:set_int("redstone_power", 9)
-               
-               
-               redstone.collect_info(pos)
+
+               redstone.inject(pos,nil)
+               local pos2 = vector.add(dir,pos)
+               redstone.inject(pos2,nil)
+
+               redstone.update(pos)
+               redstone.update(pos2)
        end,
        after_destruct = function(pos, oldnode)
+               redstone.inject(pos,nil)
                local dir = minetest.wallmounted_to_dir(oldnode.param2)
-               pos = vector.add(dir,pos)
-       
-               local meta = minetest.get_meta(pos)
+               local pos2 = vector.add(dir,pos)
+               redstone.inject(pos2,nil)
 
-               meta:set_int("redstone_power", 0)
-               
-               redstone.collect_info(pos)
+               redstone.update(pos)
+               redstone.update(pos2)
        end,
 })
-minetest.register_node("redstone:lever_on", {
-    description = "Lever On",
+
+minetest.register_lbm({
+       name = "redstone:lever_on",
+       nodenames = {"redstone:lever_on"},
+       run_at_every_load = true,
+       action = function(pos)
+               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})
+               minetest.after(0,function()
+                       redstone.update(pos)
+                       redstone.update(pos2)
+               end)
+       end,
+})
+
+
+
+minetest.register_node("redstone:lever_off", {
+    description = "Lever",
     tiles = {"stone.png"},
     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
     sounds = main.stoneSound(),
@@ -60,36 +87,48 @@ minetest.register_node("redstone:lever_on", {
        walkable = false,
        drawtype= "nodebox",
        drop="redstone:lever_off",
+       node_placement_prediction = "",
        node_box = {
                type = "fixed",
                fixed = {
                                --left front bottom right back top
                                {-0.3, -0.5,  -0.4, 0.3,  -0.4, 0.4},
-                               {-0.1, -0.5,  0.3, 0.1,  0, 0.1},
+                               {-0.1, -0.5,  -0.3, 0.1,  0, -0.1},
                        },
                },
-    on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-               minetest.swap_node(pos, {name="redstone:lever_off",param2=node.param2})
 
+       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})
 
                local dir = minetest.wallmounted_to_dir(node.param2)
-               pos = vector.add(dir,pos)
-       
-               local meta = minetest.get_meta(pos)
 
-               meta:set_int("redstone_power", 0)
-               
-               redstone.collect_info(pos)
+               redstone.inject(pos,{torch=9})
+               local pos2 = vector.add(dir,pos)
+               redstone.inject(pos2,{torch=9})
+
+               redstone.update(pos)
+               redstone.update(pos2)
        end,
        after_destruct = function(pos, oldnode)
+               redstone.inject(pos,nil)
                local dir = minetest.wallmounted_to_dir(oldnode.param2)
-               pos = vector.add(dir,pos)
-       
-               local meta = minetest.get_meta(pos)
+               local pos2 = vector.add(dir,pos)
+               redstone.inject(pos2,nil)
 
-               meta:set_int("redstone_power", 0)
-               
-               redstone.collect_info(pos)
+               redstone.update(pos)
+               redstone.update(pos2)
        end,
-})
+})
\ No newline at end of file