Add snow caps
parent
2ce5fb853a
commit
e2b048aa71
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
Loading…
Reference in New Issue