3 mcl_weather
.snow
.particles_count
= 15
4 mcl_weather
.snow
.init_done
= false
6 -- calculates coordinates and draw particles for snow weather
7 mcl_weather
.snow
.add_snow_particles
= function(player
)
8 mcl_weather
.rain
.last_rp_count
= 0
9 for i
=mcl_weather
.snow
.particles_count
, 1,-1 do
10 local random_pos_x
, random_pos_y
, random_pos_z
= mcl_weather
.get_random_pos_by_player_look_dir(player
)
11 random_pos_y
= math
.random() + math
.random(player
:get_pos().y
- 1, player
:get_pos().y
+ 7)
12 if minetest
.get_node_light({x
=random_pos_x
, y
=random_pos_y
, z
=random_pos_z
}, 0.5) == 15 then
13 mcl_weather
.rain
.last_rp_count
= mcl_weather
.rain
.last_rp_count
+ 1
14 minetest
.add_particle({
15 pos
= {x
=random_pos_x
, y
=random_pos_y
, z
=random_pos_z
},
16 velocity
= {x
= math
.random(-1,-0.5), y
= math
.random(-2,-1), z
= math
.random(-1,-0.5)},
17 acceleration
= {x
= math
.random(-1,-0.5), y
=-0.5, z
= math
.random(-1,-0.5)},
19 size
= math
.random(0.5, 2),
20 collisiondetection
= true,
21 collision_removal
= true,
23 texture
= mcl_weather
.snow
.get_texture(),
24 playername
= player
:get_player_name()
30 mcl_weather
.snow
.set_sky_box
= function()
31 mcl_weather
.skycolor
.add_layer(
32 "weather-pack-snow-sky",
35 {r
=135, g
=135, b
=135},
38 mcl_weather
.skycolor
.active
= true
39 for _
, player
in pairs(minetest
.get_connected_players()) do
40 player
:set_clouds({color
="#ADADADE8"})
42 mcl_weather
.skycolor
.active
= true
45 mcl_weather
.snow
.clear
= function()
46 mcl_weather
.skycolor
.remove_layer("weather-pack-snow-sky")
47 mcl_weather
.snow
.init_done
= false
50 -- Simple random texture getter
51 mcl_weather
.snow
.get_texture
= function()
53 local random_number
= math
.random()
54 if random_number
> 0.5 then
55 texture_name
= "weather_pack_snow_snowflake1.png"
57 texture_name
= "weather_pack_snow_snowflake2.png"
63 minetest
.register_globalstep(function(dtime
)
64 if mcl_weather
.state
~= "snow" then
68 timer
= timer
+ dtime
;
75 if mcl_weather
.snow
.init_done
== false then
76 mcl_weather
.snow
.set_sky_box()
77 mcl_weather
.snow
.init_done
= true
80 for _
, player
in ipairs(minetest
.get_connected_players()) do
81 if (mcl_weather
.is_underwater(player
) or not mcl_worlds
.has_weather(player
:get_pos())) then
84 mcl_weather
.snow
.add_snow_particles(player
)
88 -- register snow weather
89 if mcl_weather
.reg_weathers
.snow
== nil then
90 mcl_weather
.reg_weathers
.snow
= {
91 clear
= mcl_weather
.snow
.clear
,