aboutsummaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'init.lua')
-rwxr-xr-xinit.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/init.lua b/init.lua
new file mode 100755
index 0000000..886f413
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,52 @@
+skycraft = {}
+
+do
+ local file = io.open(minetest.get_worldpath() .. "/skycraft", "r")
+ if file then
+ skycraft.savedata = minetest.deserialize(file:read())
+ file:close()
+ else
+ skycraft.savedata = {}
+ end
+end
+
+function skycraft.get_far_node(pos)
+ local node = minetest.get_node(pos)
+ if node.name ~= "ignore" then
+ return node
+ end
+ minetest.get_voxel_manip():read_from_map(pos, pos)
+ return minetest.get_node(pos)
+end
+
+function skycraft.find_free_position_near(pos)
+ local tries = {
+ {x = 1, y = 0, z = 0},
+ {x = -1, y = 0, z = 0},
+ {x = 0, y = 0, z = 1},
+ {x = 0, y = 0, z = -1},
+ }
+ for _, d in pairs(tries) do
+ local p = vector.add(pos, d)
+ if not minetest.registered_nodes[minetest.get_node(p).name].walkable then
+ return p, true
+ end
+ end
+ return pos, false
+end
+
+minetest.register_privilege("skycraft", "Use Skycraft commands")
+
+minetest.register_on_shutdown(function()
+ local file = io.open(minetest.get_worldpath() .. "/skycraft", "w")
+ file:write(minetest.serialize(skycraft.savedata))
+ file:close()
+end)
+
+do
+ local modpath = minetest.get_modpath("skycraft")
+ local modules = {"random", "commands", "ranks", "plots", "spawns", "map", "request", "tpa", "trade", "lobby", "money", "lucky_block", "nether_portal"}
+ for _, m in pairs(modules) do
+ dofile(modpath .. "/" .. m .. ".lua")
+ end
+end