mirror of
				https://github.com/Splizard/minetest-mod-snow.git
				synced 2025-10-31 22:05:27 +01:00 
			
		
		
		
	Compare commits
	
		
			18 Commits
		
	
	
		
			master
			...
			d1d6a701fb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d1d6a701fb | |||
| e3164a1963 | |||
| 253c7b25a9 | |||
| f236cd705d | |||
| 73cf3790fa | |||
| 8dae0a0246 | |||
| db6bf1d1b2 | |||
| afe80c0dc3 | |||
| f51bcd00df | |||
|  | d3ba0dd21c | ||
|  | 3b44907492 | ||
|  | d215ac3fff | ||
|  | 854e10f087 | ||
|  | 794fb251ba | ||
|  | 6120890c5d | ||
|  | d06bec7c52 | ||
|  | df38728f4b | ||
|  | 8f34ce940b | 
| @@ -1,6 +0,0 @@ | ||||
| default | ||||
| flowers? | ||||
| stairs? | ||||
| moreblocks? | ||||
| skins? | ||||
| treecapitator? | ||||
							
								
								
									
										4
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								init.lua
									
									
									
									
									
								
							| @@ -51,7 +51,7 @@ local load_time_start = minetest.get_us_time() | ||||
|  | ||||
|  | ||||
| -- Original init.lua File Broken into Smaller Files | ||||
| local srcpath = minetest.get_modpath"snow".."/src/" | ||||
| local srcpath = minetest.get_modpath("snow").."/src/" | ||||
| dofile(srcpath.."abms.lua") | ||||
| dofile(srcpath.."aliases.lua") | ||||
| dofile(srcpath.."crafting.lua") | ||||
| @@ -203,5 +203,5 @@ local msg = "[snow] loaded after ca. " .. time .. " seconds." | ||||
| if time > 0.01 then | ||||
| 	print(msg) | ||||
| else | ||||
| 	minetest.log("info", msg) | ||||
| 	minetest.log("action", msg) | ||||
| end | ||||
|   | ||||
							
								
								
									
										4
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								mod.conf
									
									
									
									
									
								
							| @@ -1 +1,5 @@ | ||||
| name = snow | ||||
| title = Snow | ||||
| description = Adds snow biomes and related nodes. | ||||
| depends = default | ||||
| optional_depends = christmas_craft,flowers,stairs,moreblocks,skins,treecapitator | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								schematics/snow_pine.mts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								schematics/snow_pine.mts
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								schematics/snow_pine_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								schematics/snow_pine_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								schematics/snow_xmas_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								schematics/snow_xmas_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								schematics/snowy_snow_pine_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								schematics/snowy_snow_pine_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								schematics/snowy_snow_xmas_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								schematics/snowy_snow_xmas_from_sapling.mts
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								src/abms.lua
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/abms.lua
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
| -- light through (sunlight_propagates) or have a light paramtype and | ||||
| -- liquidtype combination. ~ LazyJ, 2014_03_08 | ||||
|  | ||||
| minetest.register_abm({ | ||||
| --[[minetest.register_abm({ | ||||
| 	nodenames = {"default:dirt_with_snow"}, | ||||
| 	interval = 2, | ||||
| 	chance = 20, | ||||
| @@ -19,7 +19,7 @@ minetest.register_abm({ | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| ]]-- | ||||
|  | ||||
|  | ||||
| --Melting | ||||
| @@ -31,7 +31,7 @@ minetest.register_abm({ | ||||
|  | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"group:melts"}, | ||||
| 	neighbors = {"group:igniter", "default:torch", "default:furnace_active", "group:hot"}, | ||||
| 	neighbors = {"group:igniter", "default:torch", "default:torch_wall", "default:furnace_active", "group:hot"}, | ||||
| 	interval = 10, | ||||
| 	chance = 2, | ||||
| 	action = function(pos, node) | ||||
| @@ -78,6 +78,7 @@ minetest.register_abm({ | ||||
|  | ||||
| --Freezing | ||||
| --Water freezes when in contact with snow. | ||||
| --[[ | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"default:water_source"}, | ||||
| 	-- Added "group:icemaker" and snowbrick. ~ LazyJ | ||||
| @@ -125,7 +126,7 @@ minetest.register_abm({ | ||||
| 		end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| ]]-- | ||||
|  | ||||
|  | ||||
| --Spread moss to cobble. | ||||
| @@ -143,7 +144,7 @@ minetest.register_abm({ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| --[[ | ||||
| --Grow Pine Saplings | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"snow:sapling_pine"}, | ||||
| @@ -166,7 +167,7 @@ minetest.register_abm({ | ||||
| 		-- This finds the sapling under the grown tree. ~ LazyJ | ||||
| 		if minetest.get_node(pos).name == "snow:sapling_pine" then | ||||
| 			   -- This switches the sapling to a tree trunk. ~ LazyJ | ||||
| 			minetest.set_node(pos, {name="default:pinetree"}) | ||||
| 			minetest.set_node(pos, {name="default:pine_tree"}) | ||||
| 			   -- This is more for testing but it may be useful info to some admins when | ||||
| 			   -- grepping the server logs too. ~ LazyJ | ||||
| 			minetest.log("action", "A pine sapling grows into a tree at "..minetest.pos_to_string(pos)) | ||||
| @@ -176,7 +177,6 @@ minetest.register_abm({ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| --Grow Christmas Tree Saplings | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"snow:xmas_tree"}, | ||||
| @@ -201,10 +201,11 @@ minetest.register_abm({ | ||||
| 	end | ||||
| }) | ||||
|  | ||||
|  | ||||
| ]]-- | ||||
|  | ||||
|  | ||||
| --Backwards Compatability. | ||||
| --[[ | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"snow:snow1","snow:snow2","snow:snow3","gsnow4","snow:snow5","snow:snow6","snow:snow7","snow:snow8"}, | ||||
| 	interval = 1, | ||||
| @@ -214,3 +215,4 @@ minetest.register_abm({ | ||||
| 		minetest.set_node_level(pos, 7*(tonumber(node.name:sub(-1)))) | ||||
| 	end, | ||||
| }) | ||||
| ]]-- | ||||
|   | ||||
| @@ -29,6 +29,7 @@ minetest.register_alias("cobblesnow", "snow:snow_cobble") | ||||
|  | ||||
| -- To clean up my first stairsplus attempt. | ||||
| -- Stair | ||||
| --[[ | ||||
| minetest.register_alias(":default:stair_snowblock", "moreblocks:stair_snowblock") | ||||
| minetest.register_alias(":default:stair_snowblock_half", "moreblocks:stair_snowblock_half") | ||||
| minetest.register_alias(":default:stair_snowblock_right_half", "moreblocks:stair_snowblock_right_half") | ||||
| @@ -102,3 +103,8 @@ minetest.register_alias(":default:micro_ice_4", "moreblocks:micro_ice_4") | ||||
| minetest.register_alias(":default:micro_ice_12", "moreblocks:micro_ice_12") | ||||
| minetest.register_alias(":default:micro_ice_14", "moreblocks:micro_ice_14") | ||||
| minetest.register_alias(":default:micro_ice_15", "moreblocks:micro_ice_15") | ||||
| ]]-- | ||||
| -- If christmas_craft then override his star with this mod one. | ||||
| if minetest.get_modpath("christmas_craft") then | ||||
| 	minetest.register_alias_force("christmas_craft:christmas_star", "snow:star") | ||||
| end | ||||
|   | ||||
| @@ -57,7 +57,7 @@ of snowblocks (and then use them to water-grief by melting the snow blocks). | ||||
|  | ||||
| ~ LazyJ | ||||
|  | ||||
| --]] | ||||
| ]]-- | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| @@ -77,7 +77,7 @@ minetest.register_craft({ | ||||
| 		"default:snowblock", | ||||
| 		"default:snowblock" | ||||
| 	} | ||||
| })]] | ||||
| })]]-- | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -12,7 +12,7 @@ saplings grow into trees. --]] | ||||
|  | ||||
| -- Part 1: To disable the mapgen, add the *starting* comment under this line. | ||||
|  | ||||
| local perlin_scale, nosmooth_rarity | ||||
| --[[local perlin_scale, nosmooth_rarity | ||||
| if not snow.disable_mapgen then | ||||
| 	print("[snow] Mapgen enabled!") | ||||
|  | ||||
| @@ -59,18 +59,18 @@ if not snow.disable_mapgen then | ||||
|  | ||||
|  | ||||
| 	--Identify the mapgen. | ||||
| 	local mgname = minetest.get_mapgen_setting"mg_name" | ||||
| 	local mgname = minetest.get_mapgen_setting("mg_name") | ||||
| 	if not mgname then | ||||
| 		minetest.log("error", "[MOD] Snow Biomes: WARNING! mapgen could not be identifyed!") | ||||
| 	end | ||||
| 	local path = minetest.get_modpath"snow" | ||||
| 	if mgname == "v7" then | ||||
| 		--Load mapgen_v7 compatibility. | ||||
| 		dofile(path.."/src/mapgen_v7.lua") | ||||
| 	else | ||||
| 	local path = minetest.get_modpath("snow") | ||||
| 	if mgname == "v6" then | ||||
| 		--Load mapgen_v6 compatibility. | ||||
| 		dofile(path.."/src/mapgen_v6.lua") | ||||
| 	end | ||||
| 	else]]-- | ||||
| 		--Load mapgen_v7 compatibility. | ||||
| dofile(minetest.get_modpath("snow").."/src/mapgen_v7.lua") | ||||
| --[[	end | ||||
| end | ||||
|  | ||||
| -- To complete the commenting-out add the *closing* comment under this line. | ||||
| @@ -80,7 +80,7 @@ local pine_tree = { | ||||
| 	axiom="TABff", | ||||
| 	rules_a="[&T+f+ff+ff+ff+f]GA", | ||||
| 	rules_b="[&T+f+Gf+Gf+Gf]GB", | ||||
| 	trunk="default:pinetree", | ||||
| 	trunk="default:pine_tree", | ||||
| 	leaves="snow:needles", | ||||
| 	angle=90, | ||||
| 	iterations=1, | ||||
| @@ -95,7 +95,7 @@ local xmas_tree = { | ||||
| 	axiom="TABff", | ||||
| 	rules_a="[&T+f+ff+ff+ff+f]GA", | ||||
| 	rules_b="[&T+f+Gf+Gf+Gf]GB", | ||||
| 	trunk="default:pinetree", | ||||
| 	trunk="default:pine_tree", | ||||
| 	leaves="snow:needles_decorated", | ||||
| 	angle=90, | ||||
| 	iterations=1, | ||||
| @@ -198,9 +198,9 @@ function snow.voxelmanip_pine(pos,a,data) | ||||
| 		data[a:index(pos.x,pos.y+7,pos.z)] = c_snow | ||||
| 	end | ||||
| end | ||||
|  | ||||
| ]]-- | ||||
| -- treecapitator support | ||||
| if minetest.global_exists"treecapitator" then | ||||
| if minetest.global_exists("treecapitator") then | ||||
| 	treecapitator.register_tree{ | ||||
| 		trees = {"default:pine_tree"}, | ||||
| 		leaves = {"snow:needles"}, | ||||
|   | ||||
| @@ -142,10 +142,10 @@ local function define_contents() | ||||
| end | ||||
|  | ||||
| local smooth = snow.smooth_biomes | ||||
| local smooth_rarity_max = mg.smooth_rarity_max | ||||
| local smooth_rarity_min = mg.smooth_rarity_min | ||||
| local smooth_rarity_dif = mg.smooth_rarity_dif | ||||
| local nosmooth_rarity = mg.nosmooth_rarity | ||||
| local smooth_rarity_max = mg.smooth_rarity_max or 0 | ||||
| local smooth_rarity_min = mg.smooth_rarity_min or 0 | ||||
| local smooth_rarity_dif = mg.smooth_rarity_dif or 0 | ||||
| local nosmooth_rarity = mg.nosmooth_rarity or 0 | ||||
|  | ||||
| snow.register_on_configuring(function(name, v) | ||||
| 	if name == "debug" then | ||||
| @@ -201,12 +201,12 @@ minetest.register_on_generated(function(minp, maxp, seed) | ||||
| 		define_contents() | ||||
| 	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 data = vm:get_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 pines_tab,pnum = {},1 | ||||
|   | ||||
| @@ -1,59 +1,77 @@ | ||||
| minetest.register_biome({ | ||||
| --[[minetest.register_biome({ | ||||
| 	name           = "snow_biome_default", | ||||
|  | ||||
| 	node_dust = "default:snow", | ||||
| 	node_top       = "default:dirt_with_snow", | ||||
| 	depth_top      = 1, | ||||
| 	node_filler    = "default:dirt", | ||||
| 	depth_filler   = 2, | ||||
|  | ||||
| 	height_min     = snow.min_height, | ||||
| 	height_max     = snow.min_height+60, | ||||
| 	depth_filler   = 1, | ||||
| 	node_riverbed = "default:sand", | ||||
| 	depth_riverbed = 2, | ||||
| 	y_min     = 5, | ||||
| 	y_max     = 31000, | ||||
| 	heat_point     = 10.0, | ||||
| 	humidity_point = 40.0, | ||||
| }) | ||||
|  | ||||
| ]]-- | ||||
| minetest.register_biome({ | ||||
| 	name           = "snow_biome_forest", | ||||
|  | ||||
| 	node_dust = "default:snow", | ||||
| 	node_top       = "default:dirt_with_snow", | ||||
| 	depth_top      = 1, | ||||
| 	node_filler    = "default:dirt", | ||||
| 	depth_filler   = 2, | ||||
| 	node_riverbed = "default:sand", | ||||
| 	depth_riverbed = 2, | ||||
| 	y_min     = 2, | ||||
| 	y_max     = 31000, | ||||
| 	heat_point     = 20.0, | ||||
| 	humidity_point = 70.0, | ||||
| }) | ||||
|  | ||||
| 	height_min     = snow.min_height, | ||||
| 	height_max     = snow.min_height+60, | ||||
| 	heat_point     = 10.0, | ||||
| 	humidity_point = 55.0, | ||||
| minetest.register_biome({ | ||||
| 	name = "pine_forest", | ||||
| 	node_top = "default:dirt_with_grass", | ||||
| 	depth_top = 1, | ||||
| 	node_filler = "default:dirt", | ||||
| 	depth_filler = 3, | ||||
| 	node_riverbed = "default:sand", | ||||
| 	depth_riverbed = 2, | ||||
| 	y_min = 60, | ||||
| 	y_max = 31000, | ||||
| 	heat_point = 40, | ||||
| 	humidity_point = 68, | ||||
| }) | ||||
|  | ||||
| minetest.register_biome({ | ||||
| 	name           = "snow_biome_lush", | ||||
|  | ||||
| 	node_dust = "default:snow", | ||||
| 	node_top       = "default:dirt_with_snow", | ||||
| 	depth_top      = 1, | ||||
| 	node_filler    = "default:dirt", | ||||
| 	depth_filler   = 2, | ||||
|  | ||||
| 	height_min     = snow.min_height, | ||||
| 	height_max     = snow.min_height+60, | ||||
| 	node_riverbed = "default:sand", | ||||
| 	depth_riverbed = 2, | ||||
| 	y_min     = 2, | ||||
| 	y_max     = 31000, | ||||
| 	heat_point     = 10.0, | ||||
| 	humidity_point = 70.0, | ||||
| }) | ||||
|  | ||||
| minetest.register_biome({ | ||||
| 	name           = "snow_biome_alpine", | ||||
|  | ||||
| 	node_top       = "default:stone", | ||||
| 	node_dust = "default:snow", | ||||
| 	node_top       = "default:dirt_with_snow", | ||||
| 	depth_top      = 1, | ||||
| 	node_filler    = "default:stone", | ||||
|  | ||||
| 	height_min     = snow.min_height+60, | ||||
| 	height_max     = 31000, | ||||
| 	node_riverbed = "default:gravel", | ||||
| 	depth_riverbed = 2, | ||||
| 	y_min     = 60, | ||||
| 	y_max     = 31000, | ||||
| 	heat_point     = 10.0, | ||||
| 	humidity_point = 40.0, | ||||
| }) | ||||
|  | ||||
| minetest.register_biome({ | ||||
| --[[minetest.register_biome({ | ||||
| 	name           = "snow_biome_sand", | ||||
|  | ||||
| 	node_top       = "default:sand", | ||||
| @@ -61,21 +79,51 @@ minetest.register_biome({ | ||||
| 	node_filler    = "default:stone", | ||||
| 	depth_filler   = 0, | ||||
|  | ||||
| 	height_min     = -31000, | ||||
| 	height_max     = 2, | ||||
| 	y_min     = -2, | ||||
| 	y_max     = 31000, | ||||
| 	heat_point     = 10.0, | ||||
| 	humidity_point = 40.0, | ||||
| }) | ||||
|  | ||||
| ]]-- | ||||
|  | ||||
| --Pine tree. | ||||
| minetest.register_decoration({ | ||||
| 	deco_type = "schematic", | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	place_on = {"default:dirt_with_snow", "default:dirt_with_grass", "default:dirt_with_coniferous_litter"}, | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.005, | ||||
| 	biomes = {"snow_biome_default"}, | ||||
| 	schematic = minetest.get_modpath("snow").."/schematics/pine.mts", | ||||
| 	noise_params = { | ||||
| 		offset = -0.004, | ||||
| 		scale = 0.01, | ||||
| 		spread = {x = 100, y = 100, z = 100}, | ||||
| 		seed = 4087, | ||||
| 		octaves = 3, | ||||
| 		persist = 0.7, | ||||
| 	}, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 4, | ||||
| 	biomes = {"snowy_grassland", "coniferous_forest", "taiga", "snow_biome_alpine"}, | ||||
| 	schematic = minetest.get_modpath("snow").."/schematics/snow_pine.mts", | ||||
| 	flags = "place_center_x, place_center_z", | ||||
| }) | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	deco_type = "schematic", | ||||
| 	place_on = {"default:dirt_with_snow", "default:dirt_with_grass"}, | ||||
| 	sidelen = 16, | ||||
| 	noise_params = { | ||||
| 		--offset = 0.036, | ||||
| 		offset = 0.020, | ||||
| 		scale = 0.002, | ||||
| 		spread = {x = 250, y = 250, z = 250}, | ||||
| 		seed = 2861, | ||||
| 		octaves = 3, | ||||
| 		persist = 0.66 | ||||
| 	}, | ||||
| --	fill_ratio = 0.0005, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 4, | ||||
| 	biomes = {"snow_biome_forest", "pine_forest"}, | ||||
| 	schematic = minetest.get_modpath("snow").."/schematics/snow_pine.mts", | ||||
| 	flags = "place_center_x, place_center_z", | ||||
| }) | ||||
|  | ||||
| @@ -84,18 +132,10 @@ minetest.register_decoration({ | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.05, | ||||
| 	biomes = {"snow_biome_forest"}, | ||||
| 	schematic = minetest.get_modpath("snow").."/schematics/pine.mts", | ||||
| 	flags = "place_center_x, place_center_z", | ||||
| }) | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	deco_type = "schematic", | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.1, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 4, | ||||
| 	biomes = {"snow_biome_lush"}, | ||||
| 	schematic = minetest.get_modpath("snow").."/schematics/pine.mts", | ||||
| 	schematic = minetest.get_modpath("snow").."/schematics/snow_pine.mts", | ||||
| 	flags = "place_center_x, place_center_z", | ||||
| }) | ||||
|  | ||||
| @@ -104,35 +144,94 @@ minetest.register_decoration({ | ||||
| 	deco_type = "simple", | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.005, | ||||
| 	biomes = {"snow_biome_default"}, | ||||
| 	fill_ratio = 0.001, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 1, | ||||
| 	biomes = {"snowy_grassland"}, | ||||
| 	decoration = "default:dry_shrub", | ||||
| }) | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	deco_type = "simple", | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.01, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 1, | ||||
| 	biomes = {"snow_biome_forest", "snow_biome_lush"}, | ||||
| 	decoration = "default:dry_shrub", | ||||
| }) | ||||
|  | ||||
| --Snow shrubs. | ||||
| minetest.register_decoration({ | ||||
| 	deco_type = "simple", | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.005, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 1, | ||||
| 	biomes = {"snowy_grassland"}, | ||||
| 	decoration = "snow:shrub_covered", | ||||
| }) | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	deco_type = "simple", | ||||
| 	place_on = "default:dirt_with_snow", | ||||
| 	sidelen = 16, | ||||
| 	fill_ratio = 0.05, | ||||
| 	y_max = 31000, | ||||
| 	y_min = 1, | ||||
| 	biomes = {"snow_biome_forest", "snow_biome_lush"}, | ||||
| 	decoration = "default:dry_shrub", | ||||
| 	decoration = "snow:shrub_covered", | ||||
| }) | ||||
|  | ||||
| -- Snow Flowers | ||||
| local function register_flower(seed, name) | ||||
| 	minetest.register_decoration({ | ||||
| 		deco_type = "simple", | ||||
| 		place_on = {"default:dirt_with_snow"}, | ||||
| 		sidelen = 16, | ||||
| 		noise_params = { | ||||
| 			offset = -0.015, | ||||
| 			scale = 0.025, | ||||
| 			spread = {x = 200, y = 200, z = 200}, | ||||
| 			seed = seed, | ||||
| 			octaves = 3, | ||||
| 			persist = 0.6 | ||||
| 		}, | ||||
| 		biomes = {"snow_biome_lush", "snow_biome_forest", "taiga", "snowy_grassland", "tundra"}, | ||||
| 		y_min = 1, | ||||
| 		y_max = 31000, | ||||
| 		decoration = "snow:flower_"..name, | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| register_flower(436,     "rose") | ||||
| register_flower(19822,   "tulip") | ||||
| register_flower(1220999, "dandelion_yellow") | ||||
| register_flower(36662,   "geranium") | ||||
| 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, | ||||
| 	biomes = {"snow_biome_default", "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, | ||||
| 	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", | ||||
| --}) | ||||
|   | ||||
							
								
								
									
										162
									
								
								src/nodes.lua
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								src/nodes.lua
									
									
									
									
									
								
							| @@ -1,29 +1,79 @@ | ||||
| -- NODES | ||||
|  | ||||
| -- Grow sapling | ||||
|  | ||||
| local function grow_pine_tree(pos) | ||||
| 	local path = minetest.get_modpath("snow").."/schematics/snow_pine_from_sapling.mts" | ||||
| 	minetest.place_schematic({x= pos.x -2, y = pos.y - 1, z = pos.z - 2}, path, "0", nil, false) | ||||
| end | ||||
|  | ||||
| local function grow_snowy_pine_tree(pos) | ||||
| 	local path = minetest.get_modpath("snow").."/schematics/snowy_snow_pine_from_sapling.mts" | ||||
| 	minetest.place_schematic({x= pos.x -2, y = pos.y - 1, z = pos.z - 2}, path, "random", nil, false) | ||||
| end | ||||
|  | ||||
| local function grow_xmas_tree(pos) | ||||
| 	local path = minetest.get_modpath("snow").."/schematics/snow_xmas_from_sapling.mts" | ||||
| 	minetest.place_schematic({x= pos.x -2, y = pos.y - 1, z = pos.z - 2}, path, "0", nil, false) | ||||
| end | ||||
|  | ||||
| local function grow_snowy_xmas_tree(pos) | ||||
| 	local path = minetest.get_modpath("snow").."/schematics/snowy_snow_xmas_from_sapling.mts" | ||||
| 	minetest.place_schematic({x= pos.x -2, y = pos.y - 1, z = pos.z - 2}, path, "random", nil, false) | ||||
| end | ||||
|  | ||||
| local function is_snow_nearby(pos) | ||||
| 	return minetest.find_node_near(pos, 1, {"group:snowy"}) | ||||
| end | ||||
|  | ||||
| local function grow_sapling(pos) | ||||
| 	if not default.can_grow(pos) then | ||||
| 		-- try again 5 min later | ||||
| 		minetest.get_node_timer(pos):start(300) | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 	local node = minetest.get_node(pos) | ||||
| 	if node.name == "snow:sapling_pine" then | ||||
| 		minetest.log("action", "A Snow Pine sapling grows into a tree at "..minetest.pos_to_string(pos)) | ||||
| 		if is_snow_nearby(pos) then | ||||
| 			grow_snowy_pine_tree(pos) | ||||
| 		else | ||||
| 			grow_pine_tree(pos) | ||||
| 		end | ||||
| 	elseif node.name == "snow:xmas_tree" then | ||||
| 		minetest.log("action", "A Christmas sapling grows into a tree at "..minetest.pos_to_string(pos)) | ||||
| 		if is_snow_nearby(pos) then | ||||
| 			grow_snowy_xmas_tree(pos) | ||||
| 		else | ||||
| 			grow_xmas_tree(pos) | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| minetest.register_lbm({ | ||||
| 	name = "snow:convert_saplings_to_node_timer", | ||||
| 	nodenames = {"snow:sapling_pine", "snow:xmas_tree"}, | ||||
| 	action = function(pos) | ||||
| 		minetest.get_node_timer(pos):start(math.random(300, 1500)) | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| -- Pine Needles | ||||
| local nodedef = { | ||||
| 	description = "Pine Needles", | ||||
| 	drawtype = "allfaces_optional", | ||||
| 	visual_scale = 1.3, | ||||
| 	tiles = {"snow_needles.png"}, | ||||
| 	waving = 1, | ||||
| 	paramtype = "light", | ||||
| 	groups = {snappy=3}, | ||||
| 	furnace_burntime = 1, | ||||
| 	drop = { | ||||
| 		max_items = 1, | ||||
| 		items = { | ||||
| 			{ | ||||
| 				-- player will get sapling with 1/20 chance | ||||
| 				items = {'snow:sapling_pine'}, | ||||
| 				rarity = 20, | ||||
| 			}, | ||||
| 			{ | ||||
| 				items = {'snow:needles'}, | ||||
| 			} | ||||
| local nodedef = table.copy(minetest.registered_nodes["default:pine_needles"]) | ||||
| nodedef.description = "Snow Pine Needles" | ||||
| nodedef.drop = { | ||||
| 	max_items = 1, | ||||
| 	items = { | ||||
| 		{ | ||||
| 			-- player will get sapling with 1/20 chance | ||||
| 			items = {'snow:sapling_pine'}, | ||||
| 			rarity = 20, | ||||
| 		}, | ||||
| 		{ | ||||
| 			items = {'snow:needles'}, | ||||
| 		} | ||||
| 	}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| --[[ | ||||
| @@ -32,7 +82,7 @@ If christmas_content is enabled, then this next part will override the pine need | ||||
| The Xmas tree needles are registred and defined a farther down in this nodes.lua file. | ||||
|  | ||||
| ~ LazyJ | ||||
| ]] | ||||
| ]]-- | ||||
| if snow.christmas_content then | ||||
| 	table.insert(nodedef.drop.items, 1, { | ||||
| 		-- player will get xmas tree with 1/120 chance | ||||
| @@ -43,12 +93,6 @@ end | ||||
|  | ||||
| minetest.register_node("snow:needles", table.copy(nodedef)) | ||||
|  | ||||
| default.register_leafdecay{ | ||||
| 	trunks = {"default:pine_tree"}, | ||||
| 	leaves = {"snow:needles"}, | ||||
| 	radius = 2, | ||||
| } | ||||
|  | ||||
| snow.register_on_configuring(function(name, v) | ||||
| 	if name == "christmas_content" then | ||||
| 		local drop = minetest.registered_nodes["snow:needles"].drop | ||||
| @@ -67,7 +111,7 @@ end) | ||||
|  | ||||
|  | ||||
| -- Christmas egg | ||||
| if minetest.global_exists("skins") then | ||||
| if minetest.get_modpath("skins") then | ||||
| 	skins.add("character_snow_man") | ||||
| end | ||||
|  | ||||
| @@ -90,24 +134,35 @@ else | ||||
| end | ||||
| nodedef.drop.items[#nodedef.drop.items] = {items = {'snow:needles_decorated'}} | ||||
|  | ||||
| minetest.register_node("snow:needles_decorated", nodedef) | ||||
| minetest.register_node("snow:needles_decorated", table.copy(nodedef)) | ||||
|  | ||||
| -- Leaf decay | ||||
|  | ||||
| default.register_leafdecay{ | ||||
| 	trunks = {"default:pine_tree"}, | ||||
| 	leaves = {"snow:needles", "default:pine_needles", "snow:needles_decorated"}, | ||||
| 	radius = 2, | ||||
| } | ||||
|  | ||||
| -- Saplings | ||||
|  | ||||
| nodedef = { | ||||
| 	description = "Pine Sapling", | ||||
| 	drawtype = "plantlike", | ||||
| 	visual_scale = 1.0, | ||||
| 	tiles = {"snow_sapling_pine.png"}, | ||||
| 	inventory_image = "snow_sapling_pine.png", | ||||
| 	wield_image = "snow_sapling_pine.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	groups = {snappy=2,dig_immediate=3}, | ||||
| 	furnace_burntime = 10, | ||||
| 	sounds = default.node_sound_defaults(), | ||||
| } | ||||
| nodedef = table.copy(minetest.registered_nodes["default:pine_sapling"]) | ||||
| nodedef.description = "Snow Pine Sapling" | ||||
| nodedef.tiles = {"snow_sapling_pine.png"} | ||||
| nodedef.inventory_image = "snow_sapling_pine.png" | ||||
| nodedef.wield_image = "snow_sapling_pine.png" | ||||
| nodedef.on_timer = grow_sapling | ||||
| nodedef.on_place = function(itemstack, placer, pointed_thing) | ||||
| 	itemstack = default.sapling_on_place( | ||||
| 		itemstack, | ||||
| 		placer, | ||||
| 		pointed_thing, | ||||
| 		"snow:sapling_pine", | ||||
| 		{x = -2, y = 1, z = -2}, | ||||
| 		{x = 2, y = 13, z = 2}, | ||||
| 		4) | ||||
| 	return itemstack | ||||
| end | ||||
|  | ||||
| -- Pine Sapling | ||||
| minetest.register_node("snow:sapling_pine", table.copy(nodedef)) | ||||
| @@ -117,10 +172,21 @@ nodedef.description = "Christmas Tree" | ||||
| nodedef.tiles = {"snow_xmas_tree.png"} | ||||
| nodedef.inventory_image = "snow_xmas_tree.png" | ||||
| nodedef.wield_image = "snow_xmas_tree.png" | ||||
| nodedef.on_place = function(itemstack, placer, pointed_thing) | ||||
| 	itemstack = default.sapling_on_place( | ||||
| 		itemstack, | ||||
| 		placer, | ||||
| 		pointed_thing, | ||||
| 		"snow:xmas_tree", | ||||
| 		{x= -2, y = 1, z = -2}, | ||||
| 		{x = 2, y = 14, z = 2}, | ||||
| 		4) | ||||
| 	return itemstack | ||||
| end | ||||
|  | ||||
| minetest.register_node("snow:xmas_tree", nodedef) | ||||
|  | ||||
|  | ||||
| -- Star | ||||
| nodedef = { | ||||
| 	description = "Star", | ||||
| 	drawtype = "plantlike", | ||||
| @@ -236,7 +302,7 @@ if rawget(_G, "flowers") then | ||||
| end | ||||
|  | ||||
| -- Leaves | ||||
| local leaves = minetest.registered_nodes["default:leaves"] | ||||
| --[[local leaves = minetest.registered_nodes["default:leaves"] | ||||
| nodedef = { | ||||
| 	description = "Snow Leaves", | ||||
| 	tiles = {"snow_leaves.png"}, | ||||
| @@ -277,10 +343,10 @@ if not snow.disable_mapgen then | ||||
| 	default.register_leafdecay{ | ||||
| 		trunks = {"default:tree"}, | ||||
| 		leaves = {"snow:apple", "snow:leaves"}, | ||||
| 		radius = minetest.get_mapgen_setting"mg_name" == "v6" and 2 or 3, | ||||
| 		radius = minetest.get_mapgen_setting("mg_name") == "v6" and 2 or 3, | ||||
| 	} | ||||
| end | ||||
|  | ||||
| ]]-- | ||||
| -- TODO | ||||
| snow.known_plants[minetest.get_content_id("default:jungleleaves")] = minetest.get_content_id("default:jungleleaves") | ||||
|  | ||||
|   | ||||
| @@ -6,13 +6,13 @@ | ||||
| -- Quite a bit of trial-and-error learning here and it boiled down to a | ||||
| -- small handful of code lines making the difference. ~ LazyJ | ||||
|  | ||||
| local creative_mode = minetest.settings:get_bool"creative_mode" | ||||
| local creative_mode = minetest.settings:get_bool("creative_mode") | ||||
|  | ||||
|  | ||||
| local snowball_velocity, entity_attack_delay | ||||
| local function update_snowball_vel(v) | ||||
| 	snowball_velocity = v | ||||
| 	local walkspeed = tonumber(minetest.settings:get"movement_speed_walk") or 4 | ||||
| 	local walkspeed = tonumber(minetest.settings:get("movement_speed_walk")) or 4 | ||||
| 	entity_attack_delay = (walkspeed+1)/v | ||||
| end | ||||
| update_snowball_vel(snow.snowball_velocity) | ||||
| @@ -27,11 +27,11 @@ snow.register_on_configuring(function(name, v) | ||||
| end) | ||||
|  | ||||
| local function get_gravity() | ||||
| 	local grav = tonumber(minetest.settings:get"movement_gravity") or 9.81 | ||||
| 	local grav = tonumber(minetest.settings:get("movement_gravity")) or 9.81 | ||||
| 	return grav*snowball_gravity | ||||
| end | ||||
|  | ||||
| local someone_throwing, just_acitvated | ||||
| local someone_throwing, just_activated | ||||
|  | ||||
| --Shoot snowball | ||||
| function snow.shoot_snowball(item, player) | ||||
| @@ -48,7 +48,7 @@ function snow.shoot_snowball(item, player) | ||||
| 	if creative_mode then | ||||
| 		if not someone_throwing then | ||||
| 			someone_throwing = true | ||||
| 			just_acitvated = true | ||||
| 			just_activated = true | ||||
| 		end | ||||
| 		return | ||||
| 	end | ||||
| @@ -82,12 +82,12 @@ if creative_mode then | ||||
| 		local timer | ||||
| 		-- only if one holds left click | ||||
| 		if someone_throwing | ||||
| 		and not just_acitvated then | ||||
| 		and not just_activated then | ||||
| 			update_step() | ||||
| 			timer = 0.006 | ||||
| 		else | ||||
| 			timer = 0.5 | ||||
| 			just_acitvated = false | ||||
| 			just_activated = false | ||||
| 		end | ||||
| 		minetest.after(timer, do_step) | ||||
| 	end | ||||
|   | ||||
| @@ -32,8 +32,8 @@ if minetest.get_modpath("moreblocks") and | ||||
| 		ice_brick   = false, | ||||
| 		snow_brick  = true, | ||||
| 		snow_cobble = true, | ||||
| 		ice = true, | ||||
| 		snowblock = true, | ||||
| 		ice = false, | ||||
| 		snowblock = false, | ||||
| 	} | ||||
|  | ||||
| 	for mod, nodes in pairs(snow_nodes) do | ||||
|   | ||||
| @@ -3,7 +3,7 @@ snow = { | ||||
| 	snowball_gravity = tonumber(minetest.settings:get("snow_snowball_gravity")) or 0.91, | ||||
| 	snowball_velocity = tonumber(minetest.settings:get("snow_snowball_velocity")) or 19, | ||||
| 	sleds = minetest.settings:get_bool("snow_sleds", true), | ||||
| 	enable_snowfall = minetest.settings:get_bool("snow_enable_snowfall", true), | ||||
| 	enable_snowfall = minetest.settings:get_bool("snow_enable_snowfall", false), | ||||
| 	lighter_snowfall = minetest.settings:get_bool("snow_lighter_snowfall", false), | ||||
| 	debug = minetest.settings:get_bool("snow_debug", false), | ||||
| 	smooth_biomes = minetest.settings:get_bool("snow_smooth_biomes", true), | ||||
| @@ -12,7 +12,7 @@ snow = { | ||||
| 	min_height = tonumber(minetest.settings:get("snow_min_height")) or 3, | ||||
| 	mapgen_rarity = tonumber(minetest.settings:get("snow_mapgen_rarity")) or 18, | ||||
| 	mapgen_size = tonumber(minetest.settings:get("snow_mapgen_size")) or 210, | ||||
| 	disable_mapgen =  minetest.settings:get_bool("snow_disable_mapgen", true), | ||||
| 	disable_mapgen =  minetest.settings:get_bool("snow_disable_mapgen", false), | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user