forked from mtcontrib/minetest-mod-snow
		
	Merge remote-tracking branch 'upstream/master'
This commit is contained in:
		
							
								
								
									
										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?
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								src/abms.lua
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								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"
 | 
			
		||||
@@ -37,9 +39,9 @@ minetest.register_abm({
 | 
			
		||||
		if intensity == 1 then
 | 
			
		||||
			minetest.set_node(pos, {name="default:water_source"})
 | 
			
		||||
		elseif intensity == 2 then
 | 
			
		||||
	 		minetest.set_node(pos, {name="default:water_flowing", param2=7})
 | 
			
		||||
			minetest.set_node(pos, {name="default:water_flowing", param2=7})
 | 
			
		||||
		elseif intensity == 3 then
 | 
			
		||||
	 		minetest.set_node(pos, {name="default:water_flowing", param2=3})
 | 
			
		||||
			minetest.set_node(pos, {name="default:water_flowing", param2=3})
 | 
			
		||||
		--[[	LazyJ, you need to add param2, which defines the amount of the flowing water ~ HybridDog 2015_03_06
 | 
			
		||||
			This was causing "melts=2" nodes to just disappear so I changed it to replace the
 | 
			
		||||
			node with a water_source for a couple seconds and then replace the water_source with
 | 
			
		||||
@@ -61,11 +63,11 @@ minetest.register_abm({
 | 
			
		||||
											-- the water to flow and spread before the
 | 
			
		||||
											-- water_source is changed to air. ~ LazyJ
 | 
			
		||||
					if minetest.get_node(pos).name == "default:water_source" then
 | 
			
		||||
	 					minetest.add_node(pos,{name="air"})
 | 
			
		||||
	 				end
 | 
			
		||||
	 			end)
 | 
			
		||||
						 minetest.add_node(pos,{name="air"})
 | 
			
		||||
					 end
 | 
			
		||||
				 end)
 | 
			
		||||
		--]]
 | 
			
		||||
	 	else
 | 
			
		||||
		 else
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
@@ -79,7 +81,7 @@ minetest.register_abm({
 | 
			
		||||
--[[
 | 
			
		||||
minetest.register_abm({
 | 
			
		||||
	nodenames = {"default:water_source"},
 | 
			
		||||
	 -- Added "group:icemaker" and snowbrick. ~ LazyJ
 | 
			
		||||
	-- Added "group:icemaker" and snowbrick. ~ LazyJ
 | 
			
		||||
	neighbors = {"default:snow", "default:snowblock", "snow:snow_brick", "group:icemaker"},
 | 
			
		||||
	interval = 20,
 | 
			
		||||
	chance = 4,
 | 
			
		||||
@@ -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,16 +96,16 @@ 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:getpos()
 | 
			
		||||
			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})
 | 
			
		||||
@@ -128,7 +122,7 @@ if snow.enable_snowfall then
 | 
			
		||||
				local freeze = nval_temp < 35
 | 
			
		||||
				local precip = nval_prec < (nval_humid - 50) / 50 + PRECOFF and
 | 
			
		||||
					nval_humid - grad * nval_temp > yint
 | 
			
		||||
				
 | 
			
		||||
 | 
			
		||||
				if snow.debug then
 | 
			
		||||
					precip = true
 | 
			
		||||
				end
 | 
			
		||||
@@ -173,9 +167,9 @@ if snow.enable_snowfall then
 | 
			
		||||
					if freeze then
 | 
			
		||||
						-- Snowfall
 | 
			
		||||
						local extime = math.min((pposy + 12 - YLIMIT) / 2, 9)
 | 
			
		||||
						
 | 
			
		||||
 | 
			
		||||
						local x, y, z = pposx - 24 + math.random(0, 48), pposy + 12, pposz - 24 + math.random(0, 48)
 | 
			
		||||
						
 | 
			
		||||
 | 
			
		||||
						if not snow.lighter_snowfall then
 | 
			
		||||
							snow_fall({
 | 
			
		||||
										x = x,
 | 
			
		||||
@@ -183,11 +177,11 @@ if snow.enable_snowfall then
 | 
			
		||||
										z = z
 | 
			
		||||
									}, 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)
 | 
			
		||||
							
 | 
			
		||||
 | 
			
		||||
							minetest.add_particle({
 | 
			
		||||
								pos = {
 | 
			
		||||
									x = x,
 | 
			
		||||
@@ -207,7 +201,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
 | 
			
		||||
 
 | 
			
		||||
@@ -124,9 +124,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'}}
 | 
			
		||||
 | 
			
		||||
@@ -193,9 +195,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,
 | 
			
		||||
@@ -206,7 +212,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
 | 
			
		||||
@@ -438,7 +444,8 @@ minetest.override_item("default:snowblock", {
 | 
			
		||||
	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},
 | 
			
		||||
	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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
--]]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user