mirror of
				https://github.com/t-affeldt/regional_weather.git
				synced 2025-11-04 01:55:26 +01:00 
			
		
		
		
	Improve heavy snow performance, add pedology support, add documentation
This commit is contained in:
		@@ -8,7 +8,14 @@ local BLOCK_NAME = "regional_weather:ice"
 | 
			
		||||
minetest.register_node(BLOCK_NAME, {
 | 
			
		||||
	tiles = {"(default_ice.png^[colorize:#ffffff:50)^[opacity:200"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	groups = {cracky = 3, cools_lava = 1, slippery = 3, dig_immediate = 2},
 | 
			
		||||
	groups = {
 | 
			
		||||
		cracky = 3,
 | 
			
		||||
		cools_lava = 1,
 | 
			
		||||
		slippery = 3,
 | 
			
		||||
		dig_immediate = 2,
 | 
			
		||||
		melts = 1
 | 
			
		||||
	},
 | 
			
		||||
	freezemelt = "default:river_water_source",
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
	use_texture_alpha = true,
 | 
			
		||||
	drop = "",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								abms/pedology.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								abms/pedology.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
if not regional_weather.settings.pedology
 | 
			
		||||
or not minetest.get_modpath("pedology")
 | 
			
		||||
then return end
 | 
			
		||||
 | 
			
		||||
climate_api.register_abm({
 | 
			
		||||
	label			= "wetten or dry pedology nodes",
 | 
			
		||||
	nodenames = { "group:sucky" },
 | 
			
		||||
	neighbors = { "air" },
 | 
			
		||||
	interval	= 25,
 | 
			
		||||
	chance		= 30,
 | 
			
		||||
	catch_up	= false,
 | 
			
		||||
 | 
			
		||||
	conditions	= {
 | 
			
		||||
		min_height		= regional_weather.settings.min_height,
 | 
			
		||||
		max_height		= regional_weather.settings.max_height,
 | 
			
		||||
		min_heat			= 25,
 | 
			
		||||
		min_light			= 15
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	action = function (pos, node, env)
 | 
			
		||||
		local wetness = minetest.get_item_group(node.name, "wet") or 0
 | 
			
		||||
		if wetness < 2 and env.humidity > 55 then
 | 
			
		||||
			pedology.wetten(pos)
 | 
			
		||||
		elseif wetness > 0 and wetness < 3 and env.humidity < 40 then
 | 
			
		||||
			pedology.dry(pos)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
@@ -77,7 +77,7 @@ climate_api.register_abm({
 | 
			
		||||
	 end,
 | 
			
		||||
 | 
			
		||||
   action = function (pos, node, env)
 | 
			
		||||
		 if minetest.get_node(pos).name ~= "air" then return end
 | 
			
		||||
		 if node.name ~= "air" then return end
 | 
			
		||||
		 local base = minetest.get_node(vector.add(pos, {x=0, y=-1, z=0})).name
 | 
			
		||||
		 local is_soil = minetest.get_item_group(base, "soil") or 0
 | 
			
		||||
		 local is_stone = minetest.get_item_group(base, "stone") or 0
 | 
			
		||||
@@ -109,8 +109,7 @@ climate_api.register_abm({
 | 
			
		||||
	 },
 | 
			
		||||
 | 
			
		||||
   action = function (pos, node, env)
 | 
			
		||||
		 local node_name = minetest.get_node(pos).name
 | 
			
		||||
		 local value = minetest.get_item_group(node_name, "regional_weather_snow_cover")
 | 
			
		||||
		 local value = minetest.get_item_group(node.name, "regional_weather_snow_cover")
 | 
			
		||||
		 if value == nil then value = 0 end
 | 
			
		||||
		 if value < 5 then
 | 
			
		||||
			 minetest.set_node(pos, { name = BLOCK_PREFIX .. (value + 1) })
 | 
			
		||||
@@ -130,8 +129,7 @@ climate_api.register_abm({
 | 
			
		||||
	 },
 | 
			
		||||
 | 
			
		||||
   action = function (pos, node, env)
 | 
			
		||||
			local node_name = minetest.get_node(pos).name
 | 
			
		||||
			local value = minetest.get_item_group(node_name, "regional_weather_snow_cover")
 | 
			
		||||
			local value = minetest.get_item_group(node.name, "regional_weather_snow_cover")
 | 
			
		||||
			if value == nil then value = 0 end
 | 
			
		||||
			if value > 1 then
 | 
			
		||||
				minetest.set_node(pos, { name = BLOCK_PREFIX .. (value - 1) })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user