diff options
Diffstat (limited to 'init.lua')
-rwxr-xr-x | init.lua | 52 |
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 |