]> git.lizzy.rs Git - Crafter.git/commitdiff
Add in redstone breaker
authoroilboi <47129783+oilboi@users.noreply.github.com>
Wed, 1 Jul 2020 17:42:26 +0000 (13:42 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Wed, 1 Jul 2020 17:42:26 +0000 (13:42 -0400)
mods/redstone/breaker.lua [new file with mode: 0644]
mods/redstone/init.lua

diff --git a/mods/redstone/breaker.lua b/mods/redstone/breaker.lua
new file mode 100644 (file)
index 0000000..bd7c4ea
--- /dev/null
@@ -0,0 +1,142 @@
+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,
+})
index f9875bf8f8ec7efc9e01065440565b4b49f53418..a243e3567e355ebbfdb8780363389f07395e5c6e 100644 (file)
@@ -79,6 +79,7 @@ dofile(path.."/player_detector.lua")
 dofile(path.."/space_maker.lua")
 --dofile(path.."/pressure_plate.lua")
 dofile(path.."/capacitors.lua")
+dofile(path.."/breaker.lua")
 
 
 --this is written out manually so that