Replace getpos() with get_pos()
[MineClone/MineClone2.git] / mods / ENVIRONMENT / mcl_weather / snow.lua
blobc1812a1bcac83387de7fb0cd0babb65dea7f10b2
1 mcl_weather.snow = {}
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)},
18 expirationtime = 2.0,
19 size = math.random(0.5, 2),
20 collisiondetection = true,
21 collision_removal = true,
22 vertical = true,
23 texture = mcl_weather.snow.get_texture(),
24 playername = player:get_player_name()
26 end
27 end
28 end
30 mcl_weather.snow.set_sky_box = function()
31 mcl_weather.skycolor.add_layer(
32 "weather-pack-snow-sky",
33 {{r=0, g=0, b=0},
34 {r=85, g=86, b=86},
35 {r=135, g=135, b=135},
36 {r=85, g=86, b=86},
37 {r=0, g=0, b=0}})
38 mcl_weather.skycolor.active = true
39 for _, player in pairs(minetest.get_connected_players()) do
40 player:set_clouds({color="#ADADADE8"})
41 end
42 mcl_weather.skycolor.active = true
43 end
45 mcl_weather.snow.clear = function()
46 mcl_weather.skycolor.remove_layer("weather-pack-snow-sky")
47 mcl_weather.snow.init_done = false
48 end
50 -- Simple random texture getter
51 mcl_weather.snow.get_texture = function()
52 local texture_name
53 local random_number = math.random()
54 if random_number > 0.5 then
55 texture_name = "weather_pack_snow_snowflake1.png"
56 else
57 texture_name = "weather_pack_snow_snowflake2.png"
58 end
59 return texture_name;
60 end
62 local timer = 0
63 minetest.register_globalstep(function(dtime)
64 if mcl_weather.state ~= "snow" then
65 return false
66 end
68 timer = timer + dtime;
69 if timer >= 0.5 then
70 timer = 0
71 else
72 return
73 end
75 if mcl_weather.snow.init_done == false then
76 mcl_weather.snow.set_sky_box()
77 mcl_weather.snow.init_done = true
78 end
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
82 return false
83 end
84 mcl_weather.snow.add_snow_particles(player)
85 end
86 end)
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,
92 light_factor = 0.6,
93 -- 10min - 20min
94 min_duration = 600,
95 max_duration = 1200,
96 transitions = {
97 [65] = "none",
98 [80] = "rain",
99 [100] = "thunder",