1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
|