]> git.lizzy.rs Git - skycraft.git/blob - init.lua
886f41311767abc248de78cb962c82320a4cee2a
[skycraft.git] / init.lua
1 skycraft = {}
2
3 do
4         local file = io.open(minetest.get_worldpath() .. "/skycraft", "r")
5         if file then
6                 skycraft.savedata = minetest.deserialize(file:read())
7                 file:close()
8         else
9                 skycraft.savedata = {}
10         end
11 end
12
13 function skycraft.get_far_node(pos)
14         local node = minetest.get_node(pos)
15         if node.name ~= "ignore" then
16                 return node
17         end
18         minetest.get_voxel_manip():read_from_map(pos, pos)
19         return minetest.get_node(pos)
20 end
21
22 function skycraft.find_free_position_near(pos)
23         local tries = {
24                 {x =  1, y =  0, z =  0},
25                 {x = -1, y =  0, z =  0},
26                 {x =  0, y =  0, z =  1},
27                 {x =  0, y =  0, z = -1},
28         }
29         for _, d in pairs(tries) do
30                 local p = vector.add(pos, d)
31                 if not minetest.registered_nodes[minetest.get_node(p).name].walkable then
32                         return p, true
33                 end
34         end
35         return pos, false
36 end
37
38 minetest.register_privilege("skycraft", "Use Skycraft commands")
39
40 minetest.register_on_shutdown(function()
41         local file = io.open(minetest.get_worldpath() .. "/skycraft", "w")
42         file:write(minetest.serialize(skycraft.savedata))
43         file:close()
44 end)
45
46 do
47         local modpath = minetest.get_modpath("skycraft")
48         local modules = {"random", "commands", "ranks", "plots", "spawns", "map", "request", "tpa", "trade", "lobby", "money", "lucky_block", "nether_portal"}
49         for _, m in pairs(modules) do
50                 dofile(modpath .. "/" .. m .. ".lua")
51         end
52 end