forked from mtcontrib/minetest-mod-snow
		
	Compare commits
	
		
			7 Commits
		
	
	
		
			nalc-1.0
			...
			73cf3790fa
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 73cf3790fa | |||
| 8dae0a0246 | |||
| db6bf1d1b2 | |||
| 
						 | 
					e8a15bf467 | ||
| 
						 | 
					76981af958 | ||
| afe80c0dc3 | |||
| f51bcd00df | 
							
								
								
									
										16
									
								
								.luacheckrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.luacheckrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
read_globals = {
 | 
			
		||||
	"dump", "vector", "minetest",
 | 
			
		||||
	"table", "math", "PseudoRandom", "VoxelArea",
 | 
			
		||||
	"stairs", "stairsplus", "skins", "treecapitator",
 | 
			
		||||
	default = {
 | 
			
		||||
		fields = {
 | 
			
		||||
			player_attached = {
 | 
			
		||||
				read_only = false,
 | 
			
		||||
				other_fields = true
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		other_fields = true
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
globals = {"snow"}
 | 
			
		||||
-- ignore = {"421", "423"}
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
default
 | 
			
		||||
christmas_craft?
 | 
			
		||||
flowers?
 | 
			
		||||
stairs?
 | 
			
		||||
moreblocks?
 | 
			
		||||
skins?
 | 
			
		||||
treecapitator?
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								src/abms.lua
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/abms.lua
									
									
									
									
									
								
							@@ -1,10 +1,12 @@
 | 
			
		||||
-- Added to change dirt_with_snow to dirt if covered with blocks that don't let light through (sunlight_propagates) or have a light paramtype and liquidtype combination. ~ LazyJ, 2014_03_08
 | 
			
		||||
-- Added to change dirt_with_snow to dirt if covered with blocks that don't let
 | 
			
		||||
-- light through (sunlight_propagates) or have a light paramtype and
 | 
			
		||||
-- liquidtype combination. ~ LazyJ, 2014_03_08
 | 
			
		||||
 | 
			
		||||
--[[minetest.register_abm({
 | 
			
		||||
	nodenames = {"default:dirt_with_snow"},
 | 
			
		||||
	interval = 2,
 | 
			
		||||
	chance = 20,
 | 
			
		||||
	action = function(pos, node)
 | 
			
		||||
	action = function(pos)
 | 
			
		||||
		local name = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
 | 
			
		||||
		local nodedef = minetest.registered_nodes[name]
 | 
			
		||||
		if name ~= "ignore"
 | 
			
		||||
@@ -107,7 +109,10 @@ minetest.register_abm({
 | 
			
		||||
					if math.random(2) == 2 then
 | 
			
		||||
						p.y = pos.y
 | 
			
		||||
						if minetest.get_node(p).name == "default:water_source" then
 | 
			
		||||
							minetest.add_node(p,{name="default:ice", param2 = math.random(0,node.param2-1)})
 | 
			
		||||
							minetest.add_node(p, {
 | 
			
		||||
								name = "default:ice",
 | 
			
		||||
								param2 = math.random(0,node.param2-1)
 | 
			
		||||
							})
 | 
			
		||||
						end
 | 
			
		||||
					end
 | 
			
		||||
				end
 | 
			
		||||
@@ -145,7 +150,7 @@ minetest.register_abm({
 | 
			
		||||
	nodenames = {"snow:sapling_pine"},
 | 
			
		||||
	interval = 10,
 | 
			
		||||
	chance = 50,
 | 
			
		||||
	action = function(pos, node)
 | 
			
		||||
	action = function(pos)
 | 
			
		||||
 | 
			
		||||
-- Check if there is enough vertical-space for the sapling to grow without
 | 
			
		||||
-- hitting anything else.  ~ LazyJ, 2014_04_10
 | 
			
		||||
@@ -177,7 +182,7 @@ minetest.register_abm({
 | 
			
		||||
	nodenames = {"snow:xmas_tree"},
 | 
			
		||||
	interval = 10,
 | 
			
		||||
	chance = 50,
 | 
			
		||||
	action = function(pos, node)
 | 
			
		||||
	action = function(pos)
 | 
			
		||||
 | 
			
		||||
		-- 'If' there is air in each of the 8 nodes dirctly above the sapling,... ~LazyJ
 | 
			
		||||
		for i = 1,8 do
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
-- Parameters
 | 
			
		||||
 | 
			
		||||
function snow_fall(pos, player, animate)
 | 
			
		||||
local function snow_fall(pos)
 | 
			
		||||
	local ground_y = nil
 | 
			
		||||
	for y=pos.y+10,pos.y+20,1 do
 | 
			
		||||
		local n = minetest.get_node({x=pos.x,y=y,z=pos.z}).name
 | 
			
		||||
@@ -32,8 +32,8 @@ local PRECSPR = 6 -- Time scale for precipitation variation in minutes
 | 
			
		||||
local PRECOFF = -0.4 -- Precipitation offset, higher = rains more often
 | 
			
		||||
local GSCYCLE = 0.5 -- Globalstep cycle (seconds)
 | 
			
		||||
local FLAKES = 32 -- Snowflakes per cycle
 | 
			
		||||
local DROPS = 128 -- Raindrops per cycle
 | 
			
		||||
local RAINGAIN = 0.2 -- Rain sound volume
 | 
			
		||||
--~ local DROPS = 128 -- Raindrops per cycle
 | 
			
		||||
--~ local RAINGAIN = 0.2 -- Rain sound volume
 | 
			
		||||
local COLLIDE = false -- Whether particles collide with nodes
 | 
			
		||||
local NISVAL = 39 -- Clouds RGB value at night
 | 
			
		||||
local DASVAL = 175 -- Clouds RGB value in daytime
 | 
			
		||||
@@ -81,12 +81,6 @@ local grad = 14 / 95
 | 
			
		||||
local yint = 1496 / 95
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Initialise noise objects to nil
 | 
			
		||||
 | 
			
		||||
local nobj_temp = nil
 | 
			
		||||
local nobj_humid = nil
 | 
			
		||||
local nobj_prec = nil
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Globalstep function
 | 
			
		||||
local timer = 0
 | 
			
		||||
@@ -102,20 +96,20 @@ if snow.enable_snowfall then
 | 
			
		||||
 | 
			
		||||
		for _, player in ipairs(minetest.get_connected_players()) do
 | 
			
		||||
			local player_name = player:get_player_name()
 | 
			
		||||
			local ppos = player:getpos()
 | 
			
		||||
			local pposy = math.floor(ppos.y) + 2 -- Precipitation when swimming
 | 
			
		||||
			local pos_player = player:get_pos()
 | 
			
		||||
			local pposy = math.floor(pos_player.y) + 2 -- Precipitation when swimming
 | 
			
		||||
			if pposy >= YLIMIT - 2 then
 | 
			
		||||
				local pposx = math.floor(ppos.x)
 | 
			
		||||
				local pposz = math.floor(ppos.z)
 | 
			
		||||
				local pposx = math.floor(pos_player.x)
 | 
			
		||||
				local pposz = math.floor(pos_player.z)
 | 
			
		||||
				local ppos = {x = pposx, y = pposy, z = pposz}
 | 
			
		||||
 | 
			
		||||
				local nobj_temp = nobj_temp or minetest.get_perlin(np_temp)
 | 
			
		||||
				local nobj_humid = nobj_humid or minetest.get_perlin(np_humid)
 | 
			
		||||
				local nobj_prec = nobj_prec or minetest.get_perlin(np_prec)
 | 
			
		||||
				local nobj_temp = minetest.get_perlin(np_temp)
 | 
			
		||||
				local nobj_humid = minetest.get_perlin(np_humid)
 | 
			
		||||
				local nobj_prec = minetest.get_perlin(np_prec)
 | 
			
		||||
 | 
			
		||||
				local nval_temp = nobj_temp:get2d({x = pposx, y = pposz})
 | 
			
		||||
				local nval_humid = nobj_humid:get2d({x = pposx, y = pposz})
 | 
			
		||||
				local nval_prec = nobj_prec:get2d({x = os.clock() / 60, y = 0})
 | 
			
		||||
				local nval_temp = nobj_temp:get_2d({x = pposx, y = pposz})
 | 
			
		||||
				local nval_humid = nobj_humid:get_2d({x = pposx, y = pposz})
 | 
			
		||||
				local nval_prec = nobj_prec:get_2d({x = os.clock() / 60, y = 0})
 | 
			
		||||
 | 
			
		||||
				-- Biome system: Frozen biomes below heat 35,
 | 
			
		||||
				-- deserts below line 14 * t - 95 * h = -1496
 | 
			
		||||
@@ -157,14 +151,13 @@ if snow.enable_snowfall then
 | 
			
		||||
								((time - 0.1875) / 0.0521) * difsval)
 | 
			
		||||
						end
 | 
			
		||||
						-- Set sky to overcast bluish-grey
 | 
			
		||||
						player:set_sky(
 | 
			
		||||
							{r = sval, g = sval, b = sval + 16, a = 255},
 | 
			
		||||
							"plain",
 | 
			
		||||
							{}
 | 
			
		||||
						)
 | 
			
		||||
						player:set_sky({
 | 
			
		||||
							base_color = {r = sval, g = sval, b = sval + 16, a = 255},
 | 
			
		||||
							type = "plain",
 | 
			
		||||
						})
 | 
			
		||||
					else
 | 
			
		||||
						-- Reset sky to normal
 | 
			
		||||
						player:set_sky({}, "regular", {})
 | 
			
		||||
						player:set_sky({type = "regular"})
 | 
			
		||||
					end
 | 
			
		||||
				end
 | 
			
		||||
 | 
			
		||||
@@ -184,7 +177,7 @@ if snow.enable_snowfall then
 | 
			
		||||
									}, true)
 | 
			
		||||
						end
 | 
			
		||||
 | 
			
		||||
						for flake = 1, FLAKES do
 | 
			
		||||
						for _ = 1, FLAKES do
 | 
			
		||||
 | 
			
		||||
							x, y, z = pposx - 24 + math.random(0, 48), pposy + 12, pposz - 24 + math.random(0, 48)
 | 
			
		||||
 | 
			
		||||
@@ -207,7 +200,7 @@ if snow.enable_snowfall then
 | 
			
		||||
								vertical = false,
 | 
			
		||||
								texture = "snowdrift_snowflake" ..
 | 
			
		||||
									math.random(1, 12) .. ".png",
 | 
			
		||||
								playername = player:get_player_name()
 | 
			
		||||
								playername = player_name
 | 
			
		||||
							})
 | 
			
		||||
						end
 | 
			
		||||
					end
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,6 @@ if not snow.disable_mapgen then
 | 
			
		||||
		nosmooth_rarity = 1-rarity/50
 | 
			
		||||
		perlin_scale = size*100/rarity
 | 
			
		||||
		mg.perlin_scale = perlin_scale
 | 
			
		||||
		local smooth_rarity_max, smooth_rarity_min, smooth_rarity_dif
 | 
			
		||||
		if smooth then
 | 
			
		||||
			local smooth_trans_size = 4 --snow.smooth_trans_size
 | 
			
		||||
			mg.smooth_rarity_max = upper_rarity(nosmooth_rarity+smooth_trans_size*2/perlin_scale)
 | 
			
		||||
@@ -110,11 +109,11 @@ local xmas_tree = {
 | 
			
		||||
--Makes pine tree
 | 
			
		||||
function snow.make_pine(pos,snow,xmas)
 | 
			
		||||
	local minetest = minetest
 | 
			
		||||
	local try_node = function(pos, node)
 | 
			
		||||
		local n = minetest.get_node(pos).name
 | 
			
		||||
	local function try_node(p, node)
 | 
			
		||||
		local n = minetest.get_node(p).name
 | 
			
		||||
		if n == "air"
 | 
			
		||||
		or n == "ignore" then
 | 
			
		||||
			minetest.add_node(pos, node)
 | 
			
		||||
			minetest.add_node(p, node)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	if xmas then
 | 
			
		||||
@@ -149,14 +148,13 @@ end
 | 
			
		||||
function snow.voxelmanip_pine(pos,a,data)
 | 
			
		||||
	local c_snow = minetest.get_content_id("default:snow")
 | 
			
		||||
	local c_pine_needles = minetest.get_content_id("snow:needles")
 | 
			
		||||
	local c_pinetree = minetest.get_content_id("default:pine_tree")
 | 
			
		||||
	local c_air = minetest.get_content_id("air")
 | 
			
		||||
	local c_pinetree = minetest.get_content_id("default:pinetree")
 | 
			
		||||
 | 
			
		||||
	local perlin1 = minetest.get_perlin(112,3, 0.5, perlin_scale)
 | 
			
		||||
	for z = -1,1 do
 | 
			
		||||
		local z = pos.z + z
 | 
			
		||||
		for x = -1,1 do
 | 
			
		||||
			local x = pos.x + x
 | 
			
		||||
	for off_z = -1,1 do
 | 
			
		||||
		local z = pos.z + off_z
 | 
			
		||||
		for off_x = -1,1 do
 | 
			
		||||
			local x = pos.x + off_x
 | 
			
		||||
 | 
			
		||||
			--Make tree.
 | 
			
		||||
			for i = 1,2 do
 | 
			
		||||
 
 | 
			
		||||
@@ -14,11 +14,11 @@ local np_default = {
 | 
			
		||||
-- 2D noise for coldness
 | 
			
		||||
 | 
			
		||||
local mg = snow.mapgen
 | 
			
		||||
local scale = mg.perlin_scale
 | 
			
		||||
local scale_coldness = mg.perlin_scale
 | 
			
		||||
local np_cold = {
 | 
			
		||||
	offset = 0,
 | 
			
		||||
	scale = 1,
 | 
			
		||||
	spread = {x=scale, y=scale, z=scale},
 | 
			
		||||
	spread = {x=scale_coldness, y=scale_coldness, z=scale_coldness},
 | 
			
		||||
	seed = 112,
 | 
			
		||||
	octaves = 3,
 | 
			
		||||
	persist = 0.5
 | 
			
		||||
@@ -186,7 +186,9 @@ local function get_perlins(sidelen)
 | 
			
		||||
	}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local nbuf_default, nbuf_cold, nbuf_ice
 | 
			
		||||
local nbuf_default = {}
 | 
			
		||||
local nbuf_cold = {}
 | 
			
		||||
local nbuf_ice = {}
 | 
			
		||||
minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
	local t1 = os.clock()
 | 
			
		||||
 | 
			
		||||
@@ -229,7 +231,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
	local nodes_added
 | 
			
		||||
 | 
			
		||||
	-- Loop through columns in chunk
 | 
			
		||||
	local smooth = smooth and not snowy
 | 
			
		||||
	local is_smooth = smooth and not snowy
 | 
			
		||||
	local write_to_map = false
 | 
			
		||||
	local ni = 1
 | 
			
		||||
	for z = z0, z1 do
 | 
			
		||||
@@ -239,7 +241,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
		if nvals_default[ni] < 0.35 then
 | 
			
		||||
			nvals_cold = nvals_cold or perlin_objs.cold:get2dMap_flat({x=x0, y=z0}, nbuf_cold)
 | 
			
		||||
			test = math.min(nvals_cold[ni], 1)
 | 
			
		||||
			if smooth then
 | 
			
		||||
			if is_smooth then
 | 
			
		||||
				if test >= smooth_rarity_max
 | 
			
		||||
				or (
 | 
			
		||||
					test > smooth_rarity_min
 | 
			
		||||
@@ -255,7 +257,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
		if not in_biome then
 | 
			
		||||
			if alpine
 | 
			
		||||
			and test
 | 
			
		||||
			and test > (smooth and smooth_rarity_min or nosmooth_rarity) then
 | 
			
		||||
			and test > (is_smooth and smooth_rarity_min or nosmooth_rarity) then
 | 
			
		||||
				-- remove trees near alpine
 | 
			
		||||
				local ground_y
 | 
			
		||||
				if data[area:index(x, maxp.y, z)] == c.air then
 | 
			
		||||
@@ -345,7 +347,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
						data[area:index(x, ground_y+1, z)] = c.dry_shrub
 | 
			
		||||
					else
 | 
			
		||||
						if snowy
 | 
			
		||||
						or test > (smooth and smooth_rarity_max or
 | 
			
		||||
						or test > (is_smooth and smooth_rarity_max or
 | 
			
		||||
								nosmooth_rarity) then
 | 
			
		||||
							-- more, deeper snow
 | 
			
		||||
							data[node] = c.snow_block
 | 
			
		||||
@@ -388,13 +390,13 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
							and (cool or icebergs)
 | 
			
		||||
							and pr:next(1,4) == 1 then
 | 
			
		||||
 | 
			
		||||
								local vi = node + 1
 | 
			
		||||
								local vi_ice = node + 1
 | 
			
		||||
								for i = 1,6 do
 | 
			
		||||
									if data[vi] == c.ice then
 | 
			
		||||
									if data[vi_ice] == c.ice then
 | 
			
		||||
										ice = true
 | 
			
		||||
										break
 | 
			
		||||
									end
 | 
			
		||||
									vi = vi + ndia[i]
 | 
			
		||||
									vi_ice = vi_ice + ndia[i]
 | 
			
		||||
								end
 | 
			
		||||
							end
 | 
			
		||||
						end
 | 
			
		||||
@@ -505,8 +507,8 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
			-- set snow
 | 
			
		||||
			data[area:index(i[3], i[1]+1, i[2])] = c.snow
 | 
			
		||||
		end
 | 
			
		||||
		for i = 1, num-1 do
 | 
			
		||||
			i = snow_tab[i]
 | 
			
		||||
		for k = 1, num-1 do
 | 
			
		||||
			local i = snow_tab[k]
 | 
			
		||||
			local y,z,x,test = unpack(i)
 | 
			
		||||
			test = (test-nosmooth_rarity)/(1-nosmooth_rarity) -- /(1-0.53)
 | 
			
		||||
			if test > 0 then
 | 
			
		||||
@@ -516,8 +518,8 @@ minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
					if h ~= 1 then
 | 
			
		||||
						-- search for nearby snow
 | 
			
		||||
						y = y+1
 | 
			
		||||
						for i = -1,1,2 do
 | 
			
		||||
							for _,cord in pairs({{x+i,z}, {x,z+i}}) do
 | 
			
		||||
						for off = -1,1,2 do
 | 
			
		||||
							for _,cord in pairs({{x+off,z}, {x,z+off}}) do
 | 
			
		||||
								local nd = data[area:index(cord[1], y, cord[2])]
 | 
			
		||||
								if nd == c.air
 | 
			
		||||
								or is_plantlike(nd) then
 | 
			
		||||
@@ -577,7 +579,7 @@ local biome_strings = {
 | 
			
		||||
	{"snowy", "plain", "alpine", "normal", "normal"},
 | 
			
		||||
	{"cool", "icebergs", "icesheet", "icecave", "icehole"}
 | 
			
		||||
}
 | 
			
		||||
function biome_to_string(num,num2)
 | 
			
		||||
function biome_to_string(num)
 | 
			
		||||
	local biome = biome_strings[1][num] or "unknown "..num
 | 
			
		||||
	return biome
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -59,11 +59,12 @@ minetest.register_biome({
 | 
			
		||||
 | 
			
		||||
minetest.register_biome({
 | 
			
		||||
	name           = "snow_biome_alpine",
 | 
			
		||||
 | 
			
		||||
	node_dust = "default:snow",
 | 
			
		||||
	node_top       = "default:dirt_with_snow",
 | 
			
		||||
	depth_top      = 1,
 | 
			
		||||
	node_filler    = "default:stone",
 | 
			
		||||
 | 
			
		||||
	node_riverbed = "default:gravel",
 | 
			
		||||
	depth_riverbed = 2,
 | 
			
		||||
	y_min     = 60,
 | 
			
		||||
	y_max     = 31000,
 | 
			
		||||
	heat_point     = 10.0,
 | 
			
		||||
@@ -88,7 +89,7 @@ minetest.register_biome({
 | 
			
		||||
--Pine tree.
 | 
			
		||||
minetest.register_decoration({
 | 
			
		||||
	deco_type = "schematic",
 | 
			
		||||
	place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
 | 
			
		||||
	place_on = {"default:dirt_with_snow", "default:dirt_with_grass", "default:dirt_with_coniferous_litter"},
 | 
			
		||||
	sidelen = 16,
 | 
			
		||||
	noise_params = {
 | 
			
		||||
		offset = -0.004,
 | 
			
		||||
@@ -118,6 +119,7 @@ minetest.register_decoration({
 | 
			
		||||
		octaves = 3,
 | 
			
		||||
		persist = 0.66
 | 
			
		||||
	},
 | 
			
		||||
--	fill_ratio = 0.0005,
 | 
			
		||||
	y_max = 31000,
 | 
			
		||||
	y_min = 4,
 | 
			
		||||
	biomes = {"snow_biome_forest", "pine_forest"},
 | 
			
		||||
@@ -212,24 +214,24 @@ register_flower(1133,    "viola")
 | 
			
		||||
register_flower(73133,   "dandelion_white")
 | 
			
		||||
 | 
			
		||||
--Snow.
 | 
			
		||||
minetest.register_decoration({
 | 
			
		||||
	deco_type = "simple",
 | 
			
		||||
	place_on = "default:dirt_with_snow",
 | 
			
		||||
	sidelen = 16,
 | 
			
		||||
	fill_ratio = 10,
 | 
			
		||||
	y_max = 31000,
 | 
			
		||||
	y_min = 1,
 | 
			
		||||
	biomes = {"snow_biome_forest", "snow_biome_lush"},
 | 
			
		||||
	decoration = "default:snow",
 | 
			
		||||
})
 | 
			
		||||
--minetest.register_decoration({
 | 
			
		||||
--	deco_type = "simple",
 | 
			
		||||
--	place_on = "default:dirt_with_snow",
 | 
			
		||||
--	sidelen = 16,
 | 
			
		||||
--	fill_ratio = 10,
 | 
			
		||||
--	y_max = 31000,
 | 
			
		||||
--	y_min = 1,
 | 
			
		||||
--	biomes = {"snow_biome_forest", "snow_biome_lush"},
 | 
			
		||||
--	decoration = "default:snow",
 | 
			
		||||
--})
 | 
			
		||||
 | 
			
		||||
minetest.register_decoration({
 | 
			
		||||
	deco_type = "simple",
 | 
			
		||||
	place_on = "default:stone",
 | 
			
		||||
	sidelen = 16,
 | 
			
		||||
	fill_ratio = 10,
 | 
			
		||||
	y_max = 31000,
 | 
			
		||||
	y_min = 1,
 | 
			
		||||
	biomes = {"snow_biome_alpine"},
 | 
			
		||||
	decoration = "default:snow",
 | 
			
		||||
})
 | 
			
		||||
--minetest.register_decoration({
 | 
			
		||||
--	deco_type = "simple",
 | 
			
		||||
--	place_on = "default:stone",
 | 
			
		||||
--	sidelen = 16,
 | 
			
		||||
--	fill_ratio = 10,
 | 
			
		||||
--	y_max = 31000,
 | 
			
		||||
--	y_min = 1,
 | 
			
		||||
--	biomes = {"snow_biome_alpine"},
 | 
			
		||||
--	decoration = "default:snow",
 | 
			
		||||
--})
 | 
			
		||||
 
 | 
			
		||||
@@ -62,8 +62,6 @@ minetest.register_lbm({
 | 
			
		||||
-- Pine Needles
 | 
			
		||||
local nodedef = table.copy(minetest.registered_nodes["default:pine_needles"])
 | 
			
		||||
nodedef.description = "Snow Pine Needles"
 | 
			
		||||
nodedef.tiles = {"snow_needles.png"}
 | 
			
		||||
nodedef.visual_scale = 1.3
 | 
			
		||||
nodedef.drop = {
 | 
			
		||||
	max_items = 1,
 | 
			
		||||
	items = {
 | 
			
		||||
@@ -110,6 +108,8 @@ snow.register_on_configuring(function(name, v)
 | 
			
		||||
	end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Christmas egg
 | 
			
		||||
if minetest.global_exists("skins") then
 | 
			
		||||
	skins.add("character_snow_man")
 | 
			
		||||
@@ -126,9 +126,11 @@ if snow.disable_deco_needle_ani then
 | 
			
		||||
else
 | 
			
		||||
	-- Animated, "blinking lights" version. ~ LazyJ
 | 
			
		||||
	nodedef.inventory_image = minetest.inventorycube("snow_needles_decorated.png")
 | 
			
		||||
	nodedef.tiles = {
 | 
			
		||||
		{name="snow_needles_decorated_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=20.0}}
 | 
			
		||||
	}
 | 
			
		||||
	nodedef.tiles = {{
 | 
			
		||||
		name="snow_needles_decorated_animated.png",
 | 
			
		||||
		animation={type="vertical_frames", aspect_w=16, aspect_h=16,
 | 
			
		||||
			length=20.0}
 | 
			
		||||
	}}
 | 
			
		||||
end
 | 
			
		||||
nodedef.drop.items[#nodedef.drop.items] = {items = {'snow:needles_decorated'}}
 | 
			
		||||
 | 
			
		||||
@@ -195,9 +197,13 @@ nodedef = {
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	-- Don't want the ornament breaking too easily because you have to punch it to turn it on and off. ~ LazyJ
 | 
			
		||||
	groups = {cracky=1, crumbly=1, choppy=1, oddly_breakable_by_hand=1},
 | 
			
		||||
	-- Breaking "glass" sound makes it sound like a real, broken, Xmas tree ornament (Sorry, Mom!).  ;)-  ~ LazyJ
 | 
			
		||||
	sounds = default.node_sound_glass_defaults({dig = {name="default_glass_footstep", gain=0.2}}),
 | 
			
		||||
	on_punch = function(pos, node) -- Added a "lit" star that can be punched on or off depending on your preference. ~ LazyJ
 | 
			
		||||
	-- Breaking "glass" sound makes it sound like a real, broken, Xmas tree
 | 
			
		||||
	-- ornament (Sorry, Mom!).  ;)-  ~ LazyJ
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(
 | 
			
		||||
		{dig = {name="default_glass_footstep", gain=0.2}}),
 | 
			
		||||
	-- Added a "lit" star that can be punched on or off depending on your
 | 
			
		||||
	-- preference. ~ LazyJ
 | 
			
		||||
	on_punch = function(pos, node)
 | 
			
		||||
		node.name = "snow:star_lit"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
	end,
 | 
			
		||||
@@ -208,7 +214,7 @@ minetest.register_node("snow:star", table.copy(nodedef))
 | 
			
		||||
 | 
			
		||||
-- Star (Lit Version) on Xmas Trees
 | 
			
		||||
nodedef.description = nodedef.description.." Lighted"
 | 
			
		||||
nodedef.light_source = LIGHT_MAX
 | 
			
		||||
nodedef.light_source = minetest.LIGHT_MAX
 | 
			
		||||
nodedef.tiles = {"snow_star_lit.png"}
 | 
			
		||||
nodedef.drop = "snow:star"
 | 
			
		||||
nodedef.groups.not_in_creative_inventory = 1
 | 
			
		||||
@@ -351,8 +357,7 @@ local function snow_onto_dirt(pos)
 | 
			
		||||
	local node = minetest.get_node(pos)
 | 
			
		||||
	if node.name == "default:dirt_with_grass"
 | 
			
		||||
	or node.name == "default:dirt" then
 | 
			
		||||
		node.name = "default:dirt_with_snow"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		minetest.set_node(pos, {name = "default:dirt_with_snow"})
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -372,14 +377,9 @@ nodedef = {
 | 
			
		||||
	-- by player position. ~ LazyJ
 | 
			
		||||
	 -- I made this a little harder to dig than snow blocks because
 | 
			
		||||
	 -- I imagine snow brick as being much more dense and solid than fluffy snow. ~ LazyJ
 | 
			
		||||
	groups = {cracky=2, crumbly=2, choppy=2, oddly_breakable_by_hand=2, melts=1, icemaker=1, cooks_into_ice=1},
 | 
			
		||||
	groups = {cracky=2, crumbly=2, choppy=2, oddly_breakable_by_hand=2, melts=1, icemaker=1, cooks_into_ice=1, cools_lava = 1, snowy = 1},
 | 
			
		||||
	 --Let's use the new snow sounds instead of the old grass sounds. ~ LazyJ
 | 
			
		||||
	sounds = default.node_sound_dirt_defaults({
 | 
			
		||||
		footstep = {name="default_snow_footstep", gain=0.25},
 | 
			
		||||
		dig = {name="default_dig_crumbly", gain=0.4},
 | 
			
		||||
		dug = {name="default_snow_footstep", gain=0.75},
 | 
			
		||||
		place = {name="default_place_node", gain=1.0}
 | 
			
		||||
	}),
 | 
			
		||||
	sounds = default.node_sound_snow_defaults(),
 | 
			
		||||
	-- The "on_construct" part below, thinking in terms of layers,
 | 
			
		||||
	-- dirt_with_snow could also double as dirt_with_frost which adds subtlety
 | 
			
		||||
	-- to the winterscape. ~ LazyJ
 | 
			
		||||
@@ -389,17 +389,14 @@ nodedef = {
 | 
			
		||||
-- Snow Brick
 | 
			
		||||
minetest.register_node("snow:snow_brick", table.copy(nodedef))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- hard Ice Brick, original texture from LazyJ
 | 
			
		||||
local ibdef = table.copy(nodedef)
 | 
			
		||||
ibdef.description = "Ice Brick"
 | 
			
		||||
ibdef.tiles = {"snow_ice_brick.png"}
 | 
			
		||||
ibdef.use_texture_alpha = true
 | 
			
		||||
ibdef.use_texture_alpha = "blend"
 | 
			
		||||
ibdef.drawtype = "glasslike"
 | 
			
		||||
ibdef.groups = {cracky=1, crumbly=1, choppy=1, melts=1}
 | 
			
		||||
ibdef.sounds = default.node_sound_glass_defaults({
 | 
			
		||||
	dug = {name="default_hard_footstep", gain=1}
 | 
			
		||||
})
 | 
			
		||||
ibdef.groups = {cracky=1, crumbly=1, choppy=1, melts=1, cools_lava = 1, slippery = 3}
 | 
			
		||||
ibdef.sounds = default.node_sound_ice_defaults()
 | 
			
		||||
 | 
			
		||||
minetest.register_node("snow:ice_brick", ibdef)
 | 
			
		||||
 | 
			
		||||
@@ -411,43 +408,38 @@ nodedef.tiles = {"snow_snow_cobble.png"}
 | 
			
		||||
 | 
			
		||||
minetest.register_node("snow:snow_cobble", nodedef)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Override Default Nodes to Add Extra Functions
 | 
			
		||||
 | 
			
		||||
local groups = minetest.registered_nodes["default:ice"].groups
 | 
			
		||||
groups["melt"] = 1
 | 
			
		||||
minetest.override_item("default:ice", {
 | 
			
		||||
	use_texture_alpha = true,
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	use_texture_alpha = "blend",
 | 
			
		||||
	param2 = 0,  --param2 is reserved for how much ice will freezeover.
 | 
			
		||||
	sunlight_propagates = true,  -- necessary for dirt_with_grass/snow/just dirt ABMs
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"default_ice.png^[brighten"},
 | 
			
		||||
	tiles = {"snow_ice.png^[brighten"},
 | 
			
		||||
	liquidtype = "none",
 | 
			
		||||
	 -- I made this a lot harder to dig than snow blocks because ice is much more dense
 | 
			
		||||
	 -- and solid than fluffy snow. ~ LazyJ
 | 
			
		||||
	groups = {cracky=2, crumbly=1, choppy=1, --[[oddly_breakable_by_hand=1,]] melts=1},
 | 
			
		||||
	groups = groups,
 | 
			
		||||
	on_construct = snow_onto_dirt,
 | 
			
		||||
	liquids_pointable = true,
 | 
			
		||||
	--Make ice freeze over when placed by a maximum of 10 blocks.
 | 
			
		||||
	after_place_node = function(pos)
 | 
			
		||||
		minetest.set_node(pos, {name="default:ice", param2=math.random(0,10)})
 | 
			
		||||
	end
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
groups = minetest.registered_nodes["default:snowblock"].groups
 | 
			
		||||
for g,v in pairs({melts=1, icemaker=1, cooks_into_ice=1, falling_node=1}) do
 | 
			
		||||
	groups[g] = v
 | 
			
		||||
end
 | 
			
		||||
minetest.override_item("default:snowblock", {
 | 
			
		||||
	-- LazyJ to make dirt below change to dirt_with_snow (see default, nodes.lua, dirt ABM)
 | 
			
		||||
	liquidtype = "none",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	 -- Snow blocks should be easy to dig because they are just fluffy snow. ~ LazyJ
 | 
			
		||||
	groups = {cracky=3, crumbly=3, choppy=3, oddly_breakable_by_hand=3, melts=1, icemaker=1, cooks_into_ice=1, falling_node=1},
 | 
			
		||||
	--drop = "snow:snow_cobble",
 | 
			
		||||
	on_construct = snow_onto_dirt
 | 
			
		||||
		-- Thinking in terms of layers, dirt_with_snow could also double as
 | 
			
		||||
		-- dirt_with_frost which adds subtlety to the winterscape. ~ LazyJ, 2014_04_04
 | 
			
		||||
	on_construct = snow_onto_dirt,
 | 
			
		||||
	groups = groups,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.override_item("default:snow", {
 | 
			
		||||
	drop = {
 | 
			
		||||
		max_items = 2,
 | 
			
		||||
 
 | 
			
		||||
@@ -53,8 +53,6 @@ than I originally planned. :p  ~ LazyJ
 | 
			
		||||
-- Helper functions
 | 
			
		||||
--
 | 
			
		||||
 | 
			
		||||
vector.zero = vector.zero or {x=0, y=0, z=0}
 | 
			
		||||
 | 
			
		||||
local function table_find(t, v)
 | 
			
		||||
	for i = 1,#t do
 | 
			
		||||
		if t[i] == v then
 | 
			
		||||
@@ -156,7 +154,7 @@ function sled:on_rightclick(player)
 | 
			
		||||
	on_sled_click(self, player)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function sled:on_activate(staticdata, dtime_s)
 | 
			
		||||
function sled:on_activate(staticdata)
 | 
			
		||||
	self.object:set_armor_groups({immortal=1})
 | 
			
		||||
	self.object:setacceleration({x=0, y=-10, z=0})
 | 
			
		||||
	if staticdata then
 | 
			
		||||
 
 | 
			
		||||
@@ -114,14 +114,14 @@ function snow_snowball_ENTITY.on_activate(self)
 | 
			
		||||
		and vel.y ~= 0 then
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		minetest.after(0, function(obj)
 | 
			
		||||
			if not obj then
 | 
			
		||||
		minetest.after(0, function(object)
 | 
			
		||||
			if not object then
 | 
			
		||||
				return
 | 
			
		||||
			end
 | 
			
		||||
			local vel = obj:getvelocity()
 | 
			
		||||
			if not vel
 | 
			
		||||
			or vel.y == 0 then
 | 
			
		||||
				obj:remove()
 | 
			
		||||
			local vel_obj = object:getvelocity()
 | 
			
		||||
			if not vel_obj
 | 
			
		||||
			or vel_obj.y == 0 then
 | 
			
		||||
				object:remove()
 | 
			
		||||
			end
 | 
			
		||||
		end, obj)
 | 
			
		||||
	end, self.object)
 | 
			
		||||
@@ -214,7 +214,7 @@ function snow_snowball_ENTITY.on_step(self, dtime)
 | 
			
		||||
				minetest.sound_play("default_snow_footstep", {pos=pos, gain=gain})
 | 
			
		||||
 | 
			
		||||
				-- spawn_falling_node
 | 
			
		||||
				local obj = core.add_entity(pos, "__builtin:falling_node")
 | 
			
		||||
				local obj = minetest.add_entity(pos, "__builtin:falling_node")
 | 
			
		||||
				if obj then
 | 
			
		||||
					obj:get_luaentity():set_node{name = "default:snow"}
 | 
			
		||||
				else
 | 
			
		||||
@@ -265,11 +265,16 @@ minetest.register_node(":default:snow", {
 | 
			
		||||
		dug = {name="default_snow_footstep", gain=0.75},
 | 
			
		||||
	}),
 | 
			
		||||
	on_construct = function(pos)
 | 
			
		||||
		if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "default:dirt_with_grass" or minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "default:dirt" then
 | 
			
		||||
		if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
 | 
			
		||||
		== "default:dirt_with_grass"
 | 
			
		||||
		or minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "default:dirt" then
 | 
			
		||||
			minetest.set_node({x=pos.x, y=pos.y-1, z=pos.z}, {name="default:dirt_with_snow"})
 | 
			
		||||
		end
 | 
			
		||||
		-- Now, let's turn the snow pile into a snowblock. ~ LazyJ
 | 
			
		||||
		if minetest.get_node({x=pos.x, y=pos.y-2, z=pos.z}).name == "default:snow" and -- Minus 2 because at the end of this, the layer that triggers the change to a snowblock is the second layer more than a full block, starting into a second block (-2) ~ LazyJ, 2014_04_11
 | 
			
		||||
		if minetest.get_node({x=pos.x, y=pos.y-2, z=pos.z}).name == "default:snow"
 | 
			
		||||
		and -- Minus 2 because at the end of this, the layer that triggers
 | 
			
		||||
		--the change to a snowblock is the second layer more than a full block,
 | 
			
		||||
		--starting into a second block (-2) ~ LazyJ, 2014_04_11
 | 
			
		||||
			minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "default:snow" then
 | 
			
		||||
			minetest.set_node({x=pos.x, y=pos.y-2, z=pos.z}, {name="default:snowblock"})
 | 
			
		||||
		end
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,11 @@ if minetest.get_modpath("moreblocks") and
 | 
			
		||||
			ndef.groups.icemaker = nil
 | 
			
		||||
			ndef.groups.cooks_into_ice = nil
 | 
			
		||||
			ndef.after_place_node = nil
 | 
			
		||||
 | 
			
		||||
			if string.find(name, "ice") then
 | 
			
		||||
				ndef.use_texture_alpha = "blend"
 | 
			
		||||
			else
 | 
			
		||||
				ndef.use_texture_alpha = "opaque"
 | 
			
		||||
			end
 | 
			
		||||
			stairsplus:register_all(mod, name, nodename, ndef)
 | 
			
		||||
 | 
			
		||||
			if was_in_stairs[name] then
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,8 @@ snow = {
 | 
			
		||||
 | 
			
		||||
-- functions for dynamically changing settings
 | 
			
		||||
 | 
			
		||||
snow.register_on_configuring = function() end
 | 
			
		||||
--[[
 | 
			
		||||
local on_configurings,n = {},1
 | 
			
		||||
function snow.register_on_configuring(func)
 | 
			
		||||
	on_configurings[n] = func
 | 
			
		||||
@@ -50,3 +52,4 @@ local function value_from_string(v)
 | 
			
		||||
	end
 | 
			
		||||
	return v
 | 
			
		||||
end
 | 
			
		||||
--]]
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 643 B After Width: | Height: | Size: 643 B  | 
| 
		 Before Width: | Height: | Size: 606 B After Width: | Height: | Size: 606 B  | 
		Reference in New Issue
	
	Block a user