diff --git a/mods/village/LICENSE.txt b/mods/village/LICENSE.txt index dc44a2b..6f6a256 100644 --- a/mods/village/LICENSE.txt +++ b/mods/village/LICENSE.txt @@ -9,3 +9,8 @@ the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. http://www.gnu.org/licenses/lgpl-2.1.html + +License for Media +----------------- + +CC-BY-SA 3.0 UNPORTED. Created by cd2 (cdqwertz) diff --git a/mods/village/init.lua b/mods/village/init.lua index 048a5a1..02628ee 100644 --- a/mods/village/init.lua +++ b/mods/village/init.lua @@ -1,4 +1,81 @@ village = {} +village.houses = {} + +function village.facedir_to_text_1(f) + local all = {[0]="0",[3]="90",[2]="180",[1]="270",[4]="360"} + local o = all[f] + return o +end + +function village.facedir_to_text_2(f) + local all = {[2]="0",[1]="90",[0]="180",[3]="270",[4]="360"} + local o = all[f] + return o +end + +--main func function village.gen(pos) + village.road(pos) + village.road(pos) + village.road(pos) + village.road(pos) end + +function village.road(pos) + local path_house_1 = minetest.get_modpath("village") .. "/schematics/house_1.mts" + local path_house_2 = minetest.get_modpath("village") .. "/schematics/house_2.mts" + local path_road = minetest.get_modpath("village") .. "/schematics/road.mts" + + local facedir = math.random(0,2) + local dir = minetest.facedir_to_dir(facedir) + + pos = vector.add(pos, vector.multiply(dir, 6)) + + for x=0,3,1 do + minetest.place_schematic({x = pos.x+(dir.x*6*x), y = pos.y - 1, z = pos.z+(dir.z*6*x)}, path_road, 0, nil, true) + if dir.x < 0 then + minetest.place_schematic({x = pos.x+(dir.x*6*x), y = pos.y - 1, z = pos.z+(dir.z*6*x)+6}, village.houses[ math.random( #village.houses ) ] , village.facedir_to_text_2(facedir), 0, nil, true) + minetest.place_schematic({x = pos.x+(dir.x*6*x), y = pos.y - 1, z = pos.z+(dir.z*6*x)-6}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_1(facedir), 0, nil, true) + elseif dir.x > 0 then + minetest.place_schematic({x = pos.x+(dir.x*6*x), y = pos.y - 1, z = pos.z+(dir.z*6*x)+6}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_1(facedir), 0, nil, true) + minetest.place_schematic({x = pos.x+(dir.x*6*x), y = pos.y - 1, z = pos.z+(dir.z*6*x)-6}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_2(facedir), 0, nil, true) + elseif dir.z > 0 then + minetest.place_schematic({x = pos.x+(dir.x*6*x)+6, y = pos.y - 1, z = pos.z+(dir.z*6*x)}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_1(facedir), 0, nil, true) + minetest.place_schematic({x = pos.x+(dir.x*6*x)-6, y = pos.y - 1, z = pos.z+(dir.z*6*x)}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_2(facedir), 0, nil, true) + else + minetest.place_schematic({x = pos.x+(dir.x*6*x)+6, y = pos.y - 1, z = pos.z+(dir.z*6*x)}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_2(facedir), 0, nil, true) + minetest.place_schematic({x = pos.x+(dir.x*6*x)-6, y = pos.y - 1, z = pos.z+(dir.z*6*x)}, village.houses[ math.random( #village.houses ) ], village.facedir_to_text_1(facedir), 0, nil, true) + end + end + minetest.place_schematic({x = pos.x+(dir.x*6*4), y = pos.y - 1, z = pos.z+(dir.z*6*4)}, path_road, 0, nil, true) + + if math.random(0,5) ~= 1 then + village.road(vector.add(pos, vector.multiply(dir, 6*4))) + end +end + +function village.register_house(f) + table.insert(village.houses, minetest.get_modpath("village") .. "/schematics/"..f) +end + +village.register_house("house_1.mts") +village.register_house("house_2.mts") +village.register_house("garden.mts") +village.register_house("farm.mts") + +minetest.register_node("village:spawn", { + description = "Village", + tiles = {"village_spawn.png"}, + groups = {crumbly = 3}, +}) + +minetest.register_abm({ + nodenames = {"village:spawn"}, + interval = 3.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + minetest.set_node(pos, {name = "air"}) + village.gen(pos) + end, +}) diff --git a/mods/village/schematics/farm.mts b/mods/village/schematics/farm.mts new file mode 100644 index 0000000..510ebc9 Binary files /dev/null and b/mods/village/schematics/farm.mts differ diff --git a/mods/village/schematics/garden.mts b/mods/village/schematics/garden.mts new file mode 100644 index 0000000..8500984 Binary files /dev/null and b/mods/village/schematics/garden.mts differ diff --git a/mods/village/schematics/house_1.mts b/mods/village/schematics/house_1.mts new file mode 100644 index 0000000..e747486 Binary files /dev/null and b/mods/village/schematics/house_1.mts differ diff --git a/mods/village/schematics/house_2.mts b/mods/village/schematics/house_2.mts new file mode 100644 index 0000000..f6294ba Binary files /dev/null and b/mods/village/schematics/house_2.mts differ diff --git a/mods/village/schematics/road.mts b/mods/village/schematics/road.mts new file mode 100644 index 0000000..5ef11e5 Binary files /dev/null and b/mods/village/schematics/road.mts differ diff --git a/mods/village/textures/village_spawn.png b/mods/village/textures/village_spawn.png new file mode 100644 index 0000000..71002b7 Binary files /dev/null and b/mods/village/textures/village_spawn.png differ