aboutsummaryrefslogtreecommitdiff
path: root/init.lua
blob: 886f41311767abc248de78cb962c82320a4cee2a (plain)
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