Add snow caps

master
BlockMen 2014-01-06 19:06:38 +01:00
parent 2ce5fb853a
commit e2b048aa71
7 changed files with 68 additions and 7 deletions

View File

@ -169,6 +169,8 @@ Glass breaking sounds (CC BY 3.0):
2: http://www.freesound.org/people/Tomlija/sounds/97669/
3: http://www.freesound.org/people/lsprice/sounds/88808/
Mito551 (sounds) (CC BY-SA):
default_snow_footstep.{1,2,3}.ogg
other sounds: (freesound.org)
- player_damage by thecheeseman, CC-BY 3.0

View File

@ -342,7 +342,54 @@ end
function default.make_nyancat(pos, facedir, length)
end
local dirt_snow = minetest.get_content_id("default:dirt_with_snow")
local dirt_grass = minetest.get_content_id("default:dirt_with_grass")
local leaves = minetest.get_content_id("default:leaves")
local snow = minetest.get_content_id("default:snow")
local air = minetest.get_content_id("air")
local j1= minetest.get_content_id("default:jungletree")
local j2 = minetest.get_content_id("default:jungleleaves")
local SNOW_START = 24
local function make_snow(min,max,data,va,rnd)
local cnt = max.x-min.x
for yi=0, cnt do
if max.y-yi>=SNOW_START+rnd then
for xi=0, cnt do
for zi=0, cnt do
local p = {x=min.x+xi,y=max.y-yi,z=min.z+zi}
local pi = va:indexp(p)
if data[pi] == dirt_grass then
data[pi] = dirt_snow
end
if data[pi] == leaves and p.y > SNOW_START+3+rnd then
p.y = p.y+1
local opi = va:indexp(p)
if data[opi] == air then
data[pi] = snow
end
end
end
end
end
end
return data
end
minetest.register_on_generated(function(minp, maxp, seed)
local pr = PseudoRandom(seed+1)
local snow_height_rnd = pr:next(0,3)
if maxp.y >= SNOW_START+snow_height_rnd then
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
local data = vm:get_data()
local va = VoxelArea:new{ MinEdge = emin, MaxEdge = emax }
data = make_snow(minp,maxp,data, va,snow_height_rnd)
vm:set_data(data)
vm:calc_lighting(emin,emax)
vm:write_to_map(data)
end
if maxp.y >= 2 and minp.y <= 0 then
-- Generate clay
-- Assume X and Z lengths are equal

View File

@ -116,10 +116,14 @@ minetest.register_node("default:dirt_with_snow", {
tiles = {"default_snow.png", "default_dirt.png", "default_dirt.png^default_snow_side.png"},
is_ground_content = true,
groups = {crumbly=3},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
--drop = 'default:dirt',
drop = {
items = {
{items = {'default:snow'},rarity = 1.2},
{items = {'default:dirt'}}
}
},
sounds = default.node_sound_snow_defaults(),
})
minetest.register_alias("dirt_with_snow", "default:dirt_with_snow")
@ -1155,9 +1159,7 @@ minetest.register_node("default:snow", {
},
},
groups = {crumbly=3,falling_node=1},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
sounds = default.node_sound_snow_defaults(),
on_construct = function(pos)
pos.y = pos.y - 1
if minetest.get_node(pos).name == "default:dirt_with_grass" then

View File

@ -73,6 +73,16 @@ function default.node_sound_glass_defaults(table)
return table
end
function default.node_sound_snow_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name="default_snow_footstep", gain=0.3}
table.dug = table.dug or
{name="default_snow_footstep", gain=0.55}
default.node_sound_defaults(table)
return table
end
--
-- Lava particles and Lava sound
--

Binary file not shown.

Binary file not shown.

Binary file not shown.