summaryrefslogtreecommitdiff
path: root/nodes/node_axle.lua
diff options
context:
space:
mode:
authorFaceDeer <FaceDeer@users.noreply.github.com>2017-09-30 10:56:15 -0600
committerGitHub <noreply@github.com>2017-09-30 10:56:15 -0600
commit444411936cc85ba0ef9bfaad11f74544c24cb0b6 (patch)
treea58d3e8667a8e97e91c2b35e550d58fe3c211611 /nodes/node_axle.lua
parent3441a0d1da37087287fdaade7c8930480abe65e9 (diff)
parent860890b10061d76c5ea011fe0befca435be5f243 (diff)
Merge pull request #8 from minetest-mods/cleanup
Cleanup
Diffstat (limited to 'nodes/node_axle.lua')
-rw-r--r--nodes/node_axle.lua64
1 files changed, 64 insertions, 0 deletions
diff --git a/nodes/node_axle.lua b/nodes/node_axle.lua
new file mode 100644
index 0000000..99dda4b
--- /dev/null
+++ b/nodes/node_axle.lua
@@ -0,0 +1,64 @@
+-- internationalization boilerplate
+local MP = minetest.get_modpath(minetest.get_current_modname())
+local S, NS = dofile(MP.."/intllib.lua")
+
+minetest.register_node("digtron:axle", {
+ description = S("Digtron Rotation Axle"),
+ _doc_items_longdesc = digtron.doc.axle_longdesc,
+ _doc_items_usagehelp = digtron.doc.axle_usagehelp,
+ groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 1},
+ drop = "digtron:axle",
+ sounds = digtron.metal_sounds,
+ paramtype = "light",
+ paramtype2= "facedir",
+ is_ground_content = false,
+ -- Aims in the +Z direction by default
+ tiles = {
+ "digtron_plate.png^digtron_axel_top.png",
+ "digtron_plate.png^digtron_axel_top.png",
+ "digtron_plate.png^digtron_axel_side.png",
+ "digtron_plate.png^digtron_axel_side.png",
+ "digtron_plate.png^digtron_axel_side.png",
+ "digtron_plate.png^digtron_axel_side.png",
+ },
+
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, 0.3125, -0.3125, 0.5, 0.5, 0.3125}, -- Uppercap
+ {-0.5, -0.5, -0.3125, 0.5, -0.3125, 0.3125}, -- Lowercap
+ {-0.3125, 0.3125, -0.5, 0.3125, 0.5, -0.3125}, -- Uppercap_edge2
+ {-0.3125, 0.3125, 0.3125, 0.3125, 0.5, 0.5}, -- Uppercap_edge1
+ {-0.3125, -0.5, -0.5, 0.3125, -0.3125, -0.3125}, -- Lowercap_edge1
+ {-0.3125, -0.5, 0.3125, 0.3125, -0.3125, 0.5}, -- Lowercap_edge2
+ {-0.25, -0.3125, -0.25, 0.25, 0.3125, 0.25}, -- Axle
+ }
+ },
+
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local meta = minetest.get_meta(pos)
+ if meta:get_string("waiting") == "true" then
+ -- Been too soon since last time the digtron rotated.
+ return
+ end
+ local image = DigtronLayout.create(pos, clicker)
+ image:rotate_layout_image(node.param2)
+ if image:can_write_layout_image() then
+ image:write_layout_image(clicker)
+
+ minetest.sound_play("whirr", {gain=1.0, pos=pos})
+ meta = minetest.get_meta(pos)
+ meta:set_string("waiting", "true")
+ meta:set_string("infotext", nil)
+ minetest.get_node_timer(pos):start(digtron.config.cycle_time*2)
+ else
+ minetest.sound_play("buzzer", {gain=1.0, pos=pos})
+ meta:set_string("infotext", S("Digtron is obstructed."))
+ end
+ end,
+
+ on_timer = function(pos, elapsed)
+ minetest.get_meta(pos):set_string("waiting", nil)
+ end,
+}) \ No newline at end of file