64 lines
1.6 KiB
Lua
64 lines
1.6 KiB
Lua
local mod_storage = minetest.get_mod_storage();
|
|
|
|
-- The API object
|
|
cartographer = {
|
|
scan_queue = {},
|
|
};
|
|
_cartographer = {
|
|
CHUNK_SIZE = 16,
|
|
|
|
biome_lookup = {},
|
|
marker_lookup = {},
|
|
maps = minetest.deserialize(mod_storage:get_string("maps")) or {},
|
|
next_map_id = mod_storage:get_int("next_map_id"),
|
|
|
|
materials_by_name = {},
|
|
materials_by_group = {},
|
|
};
|
|
|
|
if _cartographer.next_map_id == 0 then
|
|
_cartographer.next_map_id = 1;
|
|
end
|
|
|
|
data = {
|
|
generated = minetest.deserialize(mod_storage:get_string("map")) or {},
|
|
}
|
|
|
|
local function save()
|
|
mod_storage:set_string("maps", minetest.serialize(_cartographer.maps));
|
|
mod_storage:set_int("next_map_id", _cartographer.next_map_id);
|
|
mod_storage:set_string("map", minetest.serialize(data.generated));
|
|
end
|
|
minetest.register_on_shutdown(save);
|
|
minetest.register_on_leaveplayer(save);
|
|
|
|
local function periodic_save()
|
|
save();
|
|
minetest.after(60, periodic_save);
|
|
end
|
|
minetest.after(60, periodic_save);
|
|
|
|
function tochunk(coord)
|
|
return math.floor(coord / _cartographer.CHUNK_SIZE);
|
|
end
|
|
|
|
function fromchunk(coord)
|
|
return math.floor(coord * _cartographer.CHUNK_SIZE);
|
|
end
|
|
|
|
-- The path to this mod, for including files
|
|
local modpath = minetest.get_modpath("cartographer");
|
|
|
|
-- Includes
|
|
dofile(modpath .. "/commands.lua");
|
|
dofile(modpath .. "/scanner.lua");
|
|
dofile(modpath .. "/map_api.lua");
|
|
dofile(modpath .. "/map_formspec.lua");
|
|
dofile(modpath .. "/items.lua");
|
|
dofile(modpath .. "/table.lua");
|
|
|
|
-- Setup mod/game support
|
|
if minetest.get_modpath("default") then
|
|
dofile(modpath .. "/repixture.lua");
|
|
end
|