added villages! (WIP!!!!!)

This commit is contained in:
cale 2016-03-01 19:17:16 +01:00
parent 118ce94a80
commit 7a5bda2986
4 changed files with 100 additions and 0 deletions

View File

@ -652,6 +652,12 @@ minetest.register_node("default:desert_stone", {
drop = "default:stone_item 5",
})
minetest.register_node("default:andesite", {
description = "Andesite",
tiles = {"default_andesite.png"},
groups = {cracky = 3},
})
minetest.register_node("default:cobble", {
description = "Cobble",
tiles = {"default_cobble.png"},

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

11
mods/village/LICENSE.txt Normal file
View File

@ -0,0 +1,11 @@
License for Code
----------------
Copyright (C) 2016 cd2 (cdqwertz) <cdqwertz@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
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

83
mods/village/init.lua Normal file
View File

@ -0,0 +1,83 @@
minetest.register_on_generated(function(minp, maxp, seed)
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
local data = vm:get_data()
local heightmap = minetest.get_mapgen_object("heightmap")
local c_air = minetest.get_content_id("air")
local c_stonebrick = minetest.get_content_id("default:stonebrick")
local c_wood = minetest.get_content_id("default:wood")
local c_wooden_planks = minetest.get_content_id("default:wooden_planks")
local c_wooden_planks_2 = minetest.get_content_id("default:wooden_planks_2")
local c_glass = minetest.get_content_id("default:glass")
local perlin1 = minetest.get_perlin(11,3, 0.5, 1)
local perlin2 = minetest.get_perlin(11,3, 0.5, 100)
local h_index = 0
local first_height = math.floor(heightmap[1]/4)*4
for z = minp.z, maxp.z do
for x = minp.x, maxp.x do
h_index = h_index+1
for y = minp.y, maxp.y do
local pos = area:index(x, y, z)
-- TODO : I think this is very slow...
local part = {x=math.floor(x/10)*10, y=math.floor(y/4)*4, z=math.floor(z/10)*10}
local h_part = math.floor(heightmap[h_index]/4)*4
local height = heightmap[h_index]
if perlin2:get2d({x=part.x, y=part.z}) > 0.9 then
if vector.equals({x=x, y=y, z=z}, part) then
first_height = math.floor(heightmap[h_index]/4)*4
end
if math.abs(perlin1:get2d({x=part.x, y=part.z})) > 0.7 then
if y < (math.abs(perlin1:get2d({x=part.x, y=part.z})) * 8 -2) + first_height and y > height then
if y > -1 and x > part.x and z > part.z and x < part.x+9 and z < part.z+9 then
-- walls
if part.x+1 == x then
data[pos] = c_wood
end
if part.z+1 == z then
data[pos] = c_wood
end
if part.x+8 == x then
data[pos] = c_wood
end
if part.z+8 == z then
data[pos] = c_wood
end
-- roof/floor
if part.y == y then
data[pos] = c_wood
end
if part.y+3 == y then
data[pos] = c_wood
end
elseif height == y then
data[pos] = c_stonebrick
else
data[pos] = c_air
end
end
else
if height == y then
data[pos] = c_stonebrick
end
end
end
end
end
end
vm:set_data(data)
--vm:set_lighting({day=0, night=0})
vm:calc_lighting()
vm:write_to_map(data)
vm:update_liquids()
end)