forked from mtcontrib/minetest-mod-snow
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			nalc-1.2.0
			...
			73cf3790fa
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 73cf3790fa | |||
| 8dae0a0246 | |||
| db6bf1d1b2 | |||
|  | e8a15bf467 | ||
|  | 76981af958 | 
							
								
								
									
										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 | ||||
|   | ||||
| @@ -108,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") | ||||
| @@ -124,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'}} | ||||
|  | ||||
| @@ -193,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, | ||||
| @@ -206,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 | ||||
| @@ -349,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 | ||||
|  | ||||
| @@ -370,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 | ||||
| @@ -387,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) | ||||
|  | ||||
| @@ -409,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