forked from mtcontrib/minetest-mod-snow
parent
990ace49d8
commit
850e5d9d33
16
readme.txt
16
readme.txt
@ -1,19 +1,19 @@
|
|||||||
_____ __ __ _
|
_____ __ __ _
|
||||||
/ ____| | \/ | | |
|
/ ____| | \/ | | |
|
||||||
| (___ _ __ _____ __ | \ / | ___ __| |
|
| (___ _ __ _____ __ | \ / | ___ __| |
|
||||||
\___ \| '_ \ / _ \ \ /\ / / | |\/| |/ _ \ / _` |
|
\___ \| '_ \ / _ \ \ /\ / / | |\/| |/ _ \ / _` |
|
||||||
____) | | | | (_) \ V V / | | | | (_) | (_| |
|
____) | | | | (_) \ V V / | | | | (_) | (_| |
|
||||||
|_____/|_| |_|\___/ \_/\_/ |_| |_|\___/ \__,_|
|
|_____/|_| |_|\___/ \_/\_/ |_| |_|\___/ \__,_|
|
||||||
|
|
||||||
Version 3.2
|
Version 3.2
|
||||||
|
|
||||||
By Splizard and LazyJ.
|
By Splizard and LazyJ.
|
||||||
|
|
||||||
Minetest version: 0.4.9
|
Minetest version: 0.4.9
|
||||||
Depends: default
|
Depends: default
|
||||||
License: GPL v2
|
License: GPL v2
|
||||||
|
|
||||||
Complimentary Mods:
|
Complimentary Mods:
|
||||||
---------------------
|
---------------------
|
||||||
* "Snowdrift" by paramat
|
* "Snowdrift" by paramat
|
||||||
* "More Blocks" by Calinou (2014_05_11 or newer)
|
* "More Blocks" by Calinou (2014_05_11 or newer)
|
||||||
@ -62,7 +62,7 @@ There are nine biome types:
|
|||||||
* Alpine
|
* Alpine
|
||||||
* Snowy
|
* Snowy
|
||||||
* Plain
|
* Plain
|
||||||
|
|
||||||
Snow can be picked up and thrown as snowballs or stacked into snow blocks.
|
Snow can be picked up and thrown as snowballs or stacked into snow blocks.
|
||||||
Snow and ice melts when near warm blocks such as torches or igniters such as lava.
|
Snow and ice melts when near warm blocks such as torches or igniters such as lava.
|
||||||
Snow blocks freeze water source blocks around them.
|
Snow blocks freeze water source blocks around them.
|
||||||
@ -101,3 +101,9 @@ As admin you can use the /snow command in-game to make various changes.
|
|||||||
UNINSTALL:
|
UNINSTALL:
|
||||||
------------
|
------------
|
||||||
Simply delete the folder snow from the mods folder.
|
Simply delete the folder snow from the mods folder.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
— use the settingtypes.txt
|
||||||
|
— test if the fixed ground_y search works correctly at chunkcorners at ground level
|
||||||
|
@ -41,9 +41,9 @@ local function do_ws_func(a, x)
|
|||||||
local n = math.pi * x / 16000
|
local n = math.pi * x / 16000
|
||||||
local y = 0
|
local y = 0
|
||||||
for k = 1,1000 do
|
for k = 1,1000 do
|
||||||
y = y + 1000*math.sin(k^a * n)/(k^a)
|
y = y + math.sin(k^a * n)/(k^a)
|
||||||
end
|
end
|
||||||
return y/math.pi
|
return 1000*y/math.pi
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -184,19 +184,19 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
define_contents()
|
define_contents()
|
||||||
end
|
end
|
||||||
|
|
||||||
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
local vm, emin, emax = minetest.get_mapgen_object"voxelmanip"
|
||||||
local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
|
||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
local param2s = vm:get_param2_data()
|
local param2s = vm:get_param2_data()
|
||||||
|
|
||||||
local heightmap = minetest.get_mapgen_object("heightmap")
|
local heightmap = minetest.get_mapgen_object"heightmap"
|
||||||
|
|
||||||
local snow_tab,num = {},1
|
local snow_tab,num = {},1
|
||||||
local pines_tab,pnum = {},1
|
local pines_tab,pnum = {},1
|
||||||
|
|
||||||
local sidelen = x1 - x0 + 1
|
local sidelen = x1 - x0 + 1
|
||||||
local chulens = {x=sidelen, y=sidelen, z=sidelen}
|
local chulens = {x=sidelen, y=sidelen, z=sidelen}
|
||||||
local nvals_default = minetest.get_perlin_map(np_default, chulens):get2dMap_flat({x=x0+150, y=z0+50})
|
local nvals_default = minetest.get_perlin_map(np_default, chulens):get2dMap_flat{x=x0+150, y=z0+50}
|
||||||
local nvals_cold, nvals_ice
|
local nvals_cold, nvals_ice
|
||||||
|
|
||||||
-- Choose biomes
|
-- Choose biomes
|
||||||
@ -224,7 +224,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local test
|
local test
|
||||||
if nvals_default[ni] < 0.35 then
|
if nvals_default[ni] < 0.35 then
|
||||||
if not nvals_cold then
|
if not nvals_cold then
|
||||||
nvals_cold = minetest.get_perlin_map(np_cold, chulens):get2dMap_flat({x=x0, y=z0})
|
nvals_cold = minetest.get_perlin_map(np_cold, chulens):get2dMap_flat{x=x0, y=z0}
|
||||||
end
|
end
|
||||||
test = math.min(nvals_cold[ni], 1)
|
test = math.min(nvals_cold[ni], 1)
|
||||||
if smooth then
|
if smooth then
|
||||||
@ -246,10 +246,12 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
and test > smooth_rarity_min then
|
and test > smooth_rarity_min then
|
||||||
-- remove trees near alpine
|
-- remove trees near alpine
|
||||||
local ground_y
|
local ground_y
|
||||||
for y = math.min(heightmap[ni]+20, maxp.y), math.max(minp.y, heightmap[ni]-5), -1 do
|
if data[area:index(x, maxp.y, z)] == c.air then
|
||||||
if data[area:index(x, y, z)] ~= c.air then
|
for y = math.min(heightmap[ni]+20, maxp.y), math.max(minp.y, heightmap[ni]-5), -1 do
|
||||||
ground_y = y
|
if data[area:index(x, y, z)] ~= c.air then
|
||||||
break
|
ground_y = y
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -279,7 +281,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
nodes_added = true
|
nodes_added = true
|
||||||
write_to_map = true
|
write_to_map = true
|
||||||
if not nvals_ice then
|
if not nvals_ice then
|
||||||
nvals_ice = minetest.get_perlin_map(np_ice, chulens):get2dMap_flat({x=x0, y=z0})
|
nvals_ice = minetest.get_perlin_map(np_ice, chulens):get2dMap_flat{x=x0, y=z0}
|
||||||
end
|
end
|
||||||
local icetype = nvals_ice[ni]
|
local icetype = nvals_ice[ni]
|
||||||
local cool = icetype > 0 -- only spawns ice on edge of water
|
local cool = icetype > 0 -- only spawns ice on edge of water
|
||||||
@ -290,11 +292,14 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
|
|
||||||
|
|
||||||
local ground_y
|
local ground_y
|
||||||
for y = math.min(heightmap[ni]+20, maxp.y), math.max(minp.y, heightmap[ni]-5), -1 do
|
-- avoid generating underground
|
||||||
local nodid = data[area:index(x, y, z)]
|
if data[area:index(x, maxp.y, z)] == c.air then
|
||||||
if nodid ~= c.air then
|
-- search for non air node from 20 m above ground down to 5 m below ground (confined by minp and maxp)
|
||||||
ground_y = y
|
for y = math.min(heightmap[ni]+20, maxp.y), math.max(minp.y, heightmap[ni]-5), -1 do
|
||||||
break
|
if data[area:index(x, y, z)] ~= c.air then
|
||||||
|
ground_y = y
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user