--- /dev/null
+minetest.register_node("redstone:breaker_off", {
+ description = "Breaker",
+ tiles = {"redstone_piston.png^[invert:rgb",
+ "redstone_piston.png^[transformR180^[invert:rgb",
+ "redstone_piston.png^[transformR270^[invert:rgb",
+ "redstone_piston.png^[transformR90^[invert:rgb",
+ "wood.png^[invert:rgb",
+ "stone.png^[invert:rgb"},
+ paramtype2 = "facedir",
+ groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
+ sounds = main.stoneSound(),
+ drop = "redstone:breaker_off",
+ paramtype = "light",
+ sunlight_propagates = true,
+ --reverse the direction to face the player
+ on_construct = function(pos)
+ redstone.inject(pos,{
+ name = "redstone:breaker_off",
+ activator = true,
+ })
+ redstone.update(pos)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local look = clicker:get_look_dir()
+ look = vector.multiply(look,-1)
+ local dir = minetest.dir_to_facedir(look, true)
+ minetest.swap_node(pos,{name="redstone:breaker_off",param2=dir})
+ redstone.update(pos)
+ end,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ local look = placer:get_look_dir()
+ look = vector.multiply(look,-1)
+ local dir = minetest.dir_to_facedir(look, true)
+ minetest.swap_node(pos,{name="redstone:breaker_off",param2=dir})
+ end,
+ on_destruct = function(pos, oldnode)
+ redstone.inject(pos,nil)
+ end,
+})
+
+redstone.register_activator({
+ name = "redstone:breaker_off",
+ activate = function(pos)
+
+ local node = minetest.get_node(pos)
+
+ minetest.swap_node(pos,{name="redstone:breaker_on",param2=node.param2})
+
+ local dir = minetest.facedir_to_dir(node.param2)
+
+ redstone.inject(pos,{
+ name = "redstone:breaker_on",
+ activator = true,
+ })
+
+ pos = vector.add(pos,dir)
+
+ node = minetest.get_node(pos)
+
+ node = minetest.get_node_drops(node, "main:rubypick")
+
+ if type(node) == "table" then
+ for _,nodey in pairs(node) do
+ minetest.throw_item(pos,nodey)
+ end
+ else
+ minetest.throw_item(pos,node)
+ end
+ minetest.remove_node(pos)
+
+ redstone.update(pos)
+ end
+})
+
+minetest.register_lbm({
+ name = "redstone:breaker_off",
+ nodenames = {"redstone:breaker_off"},
+ run_at_every_load = true,
+ action = function(pos)
+ redstone.inject(pos,{
+ name = "redstone:breaker_off",
+ activator = true,
+ })
+ redstone.update(pos)
+ end,
+})
+
+
+minetest.register_node("redstone:breaker_on", {
+ description = "Breaker",
+ tiles = {"redstone_piston.png^[invert:rgb^[colorize:red:100",
+ "redstone_piston.png^[transformR180^[invert:rgb^[colorize:red:100",
+ "redstone_piston.png^[transformR270^[invert:rgb^[colorize:red:100",
+ "redstone_piston.png^[transformR90^[invert:rgb^[colorize:red:100",
+ "wood.png^[invert:rgb^[colorize:red:100",
+ "stone.png^[invert:rgb^[colorize:red:100"},
+ paramtype2 = "facedir",
+ groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
+ sounds = main.stoneSound(),
+ drop = "redstone:breaker_off",
+ paramtype = "light",
+ sunlight_propagates = true,
+ --reverse the direction to face the player
+ on_construct = function(pos)
+ redstone.inject(pos,{
+ name = "redstone:breaker_on",
+ activator = true,
+ })
+ redstone.update(pos)
+ end,
+ on_destruct = function(pos)
+ redstone.inject(pos,nil)
+ end,
+})
+
+
+redstone.register_activator({
+ name = "redstone:breaker_on",
+ deactivate = function(pos)
+ local node = minetest.get_node(pos)
+
+ minetest.swap_node(pos,{name="redstone:breaker_off",param2=node.param2})
+ redstone.inject(pos,{
+ name = "redstone:breaker_off",
+ activator = true,
+ })
+ redstone.update(pos)
+ end,
+})
+
+minetest.register_lbm({
+ name = "redstone:breaker_on",
+ nodenames = {"redstone:breaker_on"},
+ run_at_every_load = true,
+ action = function(pos)
+ redstone.inject(pos,{
+ name = "redstone:breaker_on",
+ activator = true,
+ })
+ redstone.update(pos)
+ end,
+})