forked from VoxeLibre/VoxeLibre
fix snow not being properly removed
This commit is contained in:
parent
dc24f45cfa
commit
c146426c5c
|
@ -43,6 +43,7 @@ end
|
||||||
function mcl_weather.snow.clear()
|
function mcl_weather.snow.clear()
|
||||||
mcl_weather.skycolor.remove_layer("weather-pack-snow-sky")
|
mcl_weather.skycolor.remove_layer("weather-pack-snow-sky")
|
||||||
mcl_weather.snow.init_done = false
|
mcl_weather.snow.init_done = false
|
||||||
|
mcl_weather.remove_all_spawners()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Simple random texture getter
|
-- Simple random texture getter
|
||||||
|
@ -69,7 +70,7 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, player in pairs(get_connected_players()) do
|
for _, player in pairs(get_connected_players()) do
|
||||||
if (mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(player:get_pos()) or not mcl_weather.is_outoor(player:get_pos())) then
|
if (mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(player:get_pos()) or not mcl_weather.is_outdoor(player:get_pos())) then
|
||||||
mcl_weather.remove_spawners_player(player)
|
mcl_weather.remove_spawners_player(player)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
|
@ -47,6 +47,35 @@ local function save_weather()
|
||||||
end
|
end
|
||||||
minetest.register_on_shutdown(save_weather)
|
minetest.register_on_shutdown(save_weather)
|
||||||
|
|
||||||
|
local particlespawners={}
|
||||||
|
function mcl_weather.add_spawner_player(pl,id,ps)
|
||||||
|
local name=pl:get_player_name()
|
||||||
|
if not particlespawners[name] then
|
||||||
|
particlespawners[name] = {}
|
||||||
|
end
|
||||||
|
if not particlespawners[name][id] then
|
||||||
|
ps.playername =name
|
||||||
|
ps.attached = pl
|
||||||
|
particlespawners[name][id]=minetest.add_particlespawner(ps)
|
||||||
|
return particlespawners[name][id]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function mcl_weather.remove_spawners_player(pl)
|
||||||
|
local name=pl:get_player_name()
|
||||||
|
if not particlespawners[name] then return end
|
||||||
|
for k,v in pairs(particlespawners[name]) do
|
||||||
|
minetest.delete_particlespawner(v)
|
||||||
|
end
|
||||||
|
particlespawners[name] = nil
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_weather.remove_all_spawners()
|
||||||
|
for k,v in pairs(minetest.get_connected_players()) do
|
||||||
|
mcl_weather.remove_spawners_player(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function mcl_weather.get_rand_end_time(min_duration, max_duration)
|
function mcl_weather.get_rand_end_time(min_duration, max_duration)
|
||||||
local r
|
local r
|
||||||
if min_duration and max_duration then
|
if min_duration and max_duration then
|
||||||
|
|
Loading…
Reference in New Issue