settlements/init.lua

73 lines
2.5 KiB
Lua
Raw Normal View History

2018-07-07 10:56:00 -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-18 11:20:03 -07:00
dofile(settlements.modpath.."/const.lua")
2018-06-14 12:29:21 -07:00
dofile(settlements.modpath.."/utils.lua")
2018-06-26 11:08:14 -07:00
dofile(settlements.modpath.."/foundation.lua")
2018-06-15 11:52:37 -07:00
dofile(settlements.modpath.."/buildings.lua")
2018-07-07 04:39:28 -07:00
--
-- load settlements on server
2018-07-07 04:39:28 -07:00
--
settlements_in_world = settlements.load()
2018-07-07 04:39:28 -07:00
--
-- register inhabitants
--
2018-07-05 11:15:40 -07:00
if minetest.get_modpath("mobs_npc") ~= nil then
--mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height, day_toggle)
mobs:register_spawn("mobs_npc:npc", {"default:junglewood"}, 20, 0, 1, 7, 31000, nil)
2018-07-07 04:39:28 -07:00
mobs:register_spawn("mobs_npc:trader", {"default:junglewood"}, 20, 0, 1, 7, 31000, nil)
2018-07-05 11:15:40 -07:00
end
2018-06-15 11:52:37 -07:00
--
-- on map generation, try to build a settlement
--
minetest.register_on_generated(function(minp, maxp)
if maxp.y < 0 then
2018-06-15 11:52:37 -07:00
return
2018-06-15 05:23:25 -07:00
end
if math.random(0,10)<9 then
-- check if too close to other settlements
local center_of_chunk = {x=maxp.x-40, y=maxp.y-40, z=maxp.z-40}
local dist_ok = settlements.check_distance_other_settlements(center_of_chunk)
if dist_ok == false then
return
end
settlements.place_settlement_circle(minp, maxp)
end
2018-06-15 05:23:25 -07:00
end)
2018-06-15 11:52:37 -07:00
--
2018-07-07 04:39:28 -07:00
-- manually place buildings, for debugging only
2018-06-15 11:52:37 -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",
2018-07-07 10:54:58 -07:00
--
-- build single house
--
2018-06-15 05:23:25 -07:00
on_use = function(itemstack, placer, pointed_thing)
2018-06-30 12:37:38 -07:00
local center_surface = pointed_thing.under
if center_surface then
2018-07-07 10:41:14 -07:00
local building_all_info = {name = "blacksmith", mts = schem_path.."blacksmith.mts", hsize = 13, max_num = 0.9, rplc = "n"}
2018-07-03 12:12:34 -07:00
settlements.build_schematic(center_surface, building_all_info["mts"],building_all_info["rplc"], building_all_info["name"])
2018-06-30 12:37:38 -07:00
-- settlements.convert_mts_to_lua()
2018-06-26 06:02:25 -07:00
-- settlements.mts_save()
2018-06-15 05:23:25 -07:00
end
2018-07-07 10:54:58 -07:00
end,
--
-- build ssettlement
--
on_place = function(itemstack, placer, pointed_thing)
local center_surface = pointed_thing.under
if center_surface then
local minp = {x=center_surface.x-40, y=center_surface.y-40, z=center_surface.z-40}
local maxp = {x=center_surface.x+40, y=center_surface.y+40, z=center_surface.z+40}
settlements.place_settlement_circle(minp, maxp)
end
2018-06-15 05:23:25 -07:00
end
})