summaryrefslogtreecommitdiff
path: root/computer/init.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:00:20 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:10:04 -0400
commit888b0ebfec8c2eff9015163549a7e47443cb8665 (patch)
tree915080159bfaa6ba6e226087c7ce0e8d5464b518 /computer/init.lua
parentda66780a569712c23ae4f2996cfb4608a9f9d69d (diff)
downloaddreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.gz
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.bz2
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.xz
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.zip
"explode" all modpacks into their individual components
(you can't have a modpack buried inside a modpack)
Diffstat (limited to 'computer/init.lua')
-rw-r--r--computer/init.lua102
1 files changed, 102 insertions, 0 deletions
diff --git a/computer/init.lua b/computer/init.lua
new file mode 100644
index 0000000..975f04f
--- /dev/null
+++ b/computer/init.lua
@@ -0,0 +1,102 @@
+computer = {}
+screwdriver = screwdriver or {}
+
+computer.register = function (name, def)
+ local nodename = name
+ if (name:sub(1, 1) == ":") then name = name:sub(2) end
+ local modname, basename = name:match("^([^:]+):(.*)")
+ local TEXPFX = modname.."_"..basename.."_"
+ local ONSTATE = modname..":"..basename
+ local OFFSTATE = modname..":"..basename.."_off"
+ local def = def
+ minetest.register_node(ONSTATE, {
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ description = def.description,
+ inventory_image = def.inventory_image,
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
+ tiles = {
+ TEXPFX.."tp.png",
+ TEXPFX.."bt.png",
+ TEXPFX.."rt.png",
+ TEXPFX.."lt.png",
+ TEXPFX.."bk.png",
+ TEXPFX.."ft.png"
+ },
+ node_box = def.node_box,
+ selection_box = def.node_box,
+ on_rightclick = function (pos, node, clicker, itemstack)
+ if (def.on_turn_off) then
+ if (def.on_turn_off(pos, node, clicker, itemstack)) then return end
+ end
+ node.name = OFFSTATE
+ minetest.set_node(pos, node)
+ end
+ })
+ minetest.register_node(OFFSTATE, {
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
+ tiles = {
+ (TEXPFX.."tp"..(def.tiles_off.top and "_off" or "")..".png"),
+ (TEXPFX.."bt"..(def.tiles_off.bottom and "_off" or "")..".png"),
+ (TEXPFX.."rt"..(def.tiles_off.right and "_off" or "")..".png"),
+ (TEXPFX.."lt"..(def.tiles_off.left and "_off" or "")..".png"),
+ (TEXPFX.."bk"..(def.tiles_off.back and "_off" or "")..".png"),
+ (TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png")
+ },
+ node_box = def.node_box_off or def.node_box,
+ selection_box = def.node_box_off or def.node_box,
+ on_rightclick = function (pos, node, clicker, itemstack)
+ if (def.on_turn_on) then
+ if (def.on_turn_on(pos, node, clicker, itemstack)) then return end
+ end
+ node.name = ONSTATE
+ minetest.set_node(pos, node)
+ end,
+ drop = ONSTATE
+ })
+end
+
+computer.register_handheld = function (name, def)
+ local nodename = name
+ if (name:sub(1, 1) == ":") then name = name:sub(2) end
+ local modname, basename = name:match("^([^:]+):(.*)")
+ local TEXPFX = modname.."_"..basename.."_inv"
+ local ONSTATE = modname..":"..basename
+ local OFFSTATE = modname..":"..basename.."_off"
+ local on_use = def.on_use
+ minetest.register_craftitem(ONSTATE, {
+ description = def.description,
+ inventory_image = TEXPFX..".png",
+ wield_image = TEXPFX..".png"
+ })
+end
+
+computer.pixelnodebox = function (size, boxes)
+ local fixed = { }
+ local i, box
+ for i, box in ipairs(boxes) do
+ local x, y, z, w, h, l = unpack(box)
+ fixed[#fixed + 1] = {
+ (x / size) - 0.5,
+ (y / size) - 0.5,
+ (z / size) - 0.5,
+ ((x + w) / size) - 0.5,
+ ((y + h) / size) - 0.5,
+ ((z + l) / size) - 0.5
+ }
+ end
+ return {
+ type = "fixed",
+ fixed = fixed
+ }
+end
+
+local MODPATH = minetest.get_modpath("computer")
+dofile(MODPATH.."/computers.lua")
+dofile(MODPATH.."/miscitems.lua")
+dofile(MODPATH.."/recipes.lua")
+dofile(MODPATH.."/tetris.lua")