2018-06-14 04:27:08 -07:00
|
|
|
package.cpath = package.cpath .. ";/usr/share/lua/5.2/?.so"
|
|
|
|
package.path = package.path .. ";/usr/share/zbstudio/lualibs/mobdebug/?.lua"
|
|
|
|
require('mobdebug').start()
|
|
|
|
|
2018-06-14 12:29:21 -07:00
|
|
|
settlements = {}
|
|
|
|
settlements.modpath = minetest.get_modpath("settlements");
|
2018-06-14 04:27:08 -07:00
|
|
|
|
2018-06-14 12:29:21 -07:00
|
|
|
dofile(settlements.modpath.."/roofs.lua")
|
|
|
|
dofile(settlements.modpath.."/utils.lua")
|
2018-06-16 10:46:36 -07:00
|
|
|
dofile(settlements.modpath.."/foundation.lua")
|
2018-06-14 12:29:21 -07:00
|
|
|
dofile(settlements.modpath.."/doors.lua")
|
2018-06-15 05:23:25 -07:00
|
|
|
dofile(settlements.modpath.."/walls.lua")
|
2018-06-15 11:52:37 -07:00
|
|
|
dofile(settlements.modpath.."/buildings.lua")
|
2018-06-14 04:27:08 -07:00
|
|
|
|
2018-06-14 12:29:21 -07:00
|
|
|
local last_time = os.time()
|
|
|
|
|
2018-06-15 11:52:37 -07:00
|
|
|
local function place_settlement(minp, maxp)
|
|
|
|
-- wait xx seconds until building a new settlement
|
|
|
|
last_time = os.time() + 30
|
|
|
|
-- find locations for buildings
|
|
|
|
local location_list = settlements.find_locations(minp, maxp)
|
|
|
|
if location_list then
|
|
|
|
-- for each location, build something
|
|
|
|
for i, mpos in ipairs(location_list) do
|
|
|
|
minetest.after(0.5, function()
|
|
|
|
settlements.build_house(mpos)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|
2018-06-14 04:27:08 -07:00
|
|
|
end
|
2018-06-15 11:52:37 -07:00
|
|
|
--
|
|
|
|
-- on map generation, try to build a settlement
|
|
|
|
--
|
2018-06-14 04:27:08 -07:00
|
|
|
minetest.register_on_generated(function(minp, maxp, seed)
|
2018-06-15 11:52:37 -07:00
|
|
|
if maxp.y < 0 then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
if math.random(0,10)<9 or os.time() < last_time then
|
|
|
|
return
|
2018-06-15 05:23:25 -07:00
|
|
|
end
|
2018-06-15 11:52:37 -07:00
|
|
|
place_settlement(minp, maxp)
|
2018-06-15 05:23:25 -07:00
|
|
|
end)
|
2018-06-14 04:27:08 -07:00
|
|
|
|
2018-06-15 11:52:37 -07:00
|
|
|
--
|
|
|
|
-- manually place buildings, for debugging
|
|
|
|
--
|
2018-06-14 04:27:08 -07:00
|
|
|
minetest.register_craftitem("settlements:tool", {
|
2018-06-15 05:23:25 -07:00
|
|
|
description = "settlements build tool",
|
|
|
|
inventory_image = "default_tool_woodshovel.png",
|
|
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
|
|
local p = pointed_thing.under
|
|
|
|
if p then
|
2018-06-17 11:40:55 -07:00
|
|
|
-- settlements.build_house(p)
|
2018-06-17 11:55:36 -07:00
|
|
|
settlements.build_blueprint(p)
|
2018-06-15 05:23:25 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
})
|
2018-06-14 04:27:08 -07:00
|
|
|
|