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",
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})
walkable = false,
drawtype= "nodebox",
drop="redstone:lever_off",
+ node_placement_prediction = "",
node_box = {
type = "fixed",
fixed = {
{-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})