aboutsummaryrefslogtreecommitdiff
path: root/clientmods/mapbot/api.lua
blob: 8d7398b562014f04f1cf9fd37287b73f3b5a5a1f (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
mapbot.bots = {}

mapbot.paramtypes = {
	["pos"] = {
		"<X>,<Y>,<Z>",
		function (param)
			local _, pos = minetest.parse_relative_pos(param)
			return pos
		end
	},
	["nodes"] = {
		"<node1> [<node2>] ...",
		function (param)
			return param:split(" ")
		end
	},
}

function mapbot.register_bot(name, description, paramtype, func)
	local pt = mapbot.paramtypes[paramtype]
	if not pt then return end
	minetest.register_chatcommand(name, {
		param = pt[1],
		description = description .. " Empty parameter to stop.",
		func = function(param)
			mapbot.storage:set_string(name, param)
			return true, "Changed " .. name .. " config."
		end
	})
	table.insert(mapbot.bots, {name, pt, func})
end
 
function mapbot.loop()
	for _, bot in pairs(mapbot.bots) do
		local param = mapbot.storage:get_string(bot[1])
		param = (param == "") and nil or bot[2][2](param)
		if param and bot[3](param) end
	end
end

minetest.register_on_connect(mapbot.loop)