Fix some mcl_weather crashes

This commit is contained in:
Wuzzy 2017-12-08 17:06:21 +01:00
parent 4ad7147123
commit b7518bcbcc
2 changed files with 29 additions and 28 deletions

@ -1,4 +1,12 @@
local modpath = minetest.get_modpath("mcl_weather");
mcl_weather = {}
-- If not located then embeded skycolor mod version will be loaded.
if minetest.get_modpath("skycolor") == nil then
dofile(modpath.."/skycolor.lua")
end
dofile(modpath.."/weather_core.lua")
dofile(modpath.."/snow.lua")
dofile(modpath.."/rain.lua")
@ -6,8 +14,3 @@ dofile(modpath.."/rain.lua")
if minetest.get_modpath("lightning") ~= nil then
dofile(modpath.."/thunder.lua")
end
-- If not located then embeded skycolor mod version will be loaded.
if minetest.get_modpath("skycolor") == nil then
dofile(modpath.."/skycolor.lua")
end

@ -1,31 +1,29 @@
mcl_weather = {
-- weather states, 'none' is default, other states depends from active mods
state = "none",
-- weather states, 'none' is default, other states depends from active mods
mcl_weather.state = "none"
-- player list for saving player meta info
players = {},
-- player list for saving player meta info
mcl_weather.players = {}
-- default weather recalculation interval
check_interval = 300,
-- default weather recalculation interval
mcl_weather.check_interval = 300
-- weather min duration
min_duration = 600,
-- weather min duration
mcl_weather.min_duration = 600
-- weather max duration
max_duration = 9000,
-- weather calculated end time
end_time = nil,
-- registered weathers
reg_weathers = {},
-- weather max duration
mcl_weather.max_duration = 9000
-- automaticly calculates intervals and swap weathers
auto_mode = true,
-- weather calculated end time
mcl_weather.end_time = nil
-- global flag to disable/enable ABM logic.
allow_abm = true,
}
-- registered weathers
mcl_weather.reg_weathers = {}
-- automaticly calculates intervals and swap weathers
mcl_weather.auto_mode = true
-- global flag to disable/enable ABM logic.
mcl_weather.allow_abm = true
mcl_weather.reg_weathers["none"] = {
min_duration = mcl_weather.min_duration,
@ -240,9 +238,9 @@ end
local load_weather = function()
local weather = storage:get_string("mcl_weather_state")
if weather and weather ~= "" then
mcl_weather.change_weather(weather, mcl_weather.end_time)
mcl_weather.state = weather
mcl_weather.end_time = storage:get_int("mcl_weather_end_time")
mcl_weather.change_weather(weather, mcl_weather.end_time)
if type(mcl_weather.end_time) ~= "number" then
-- Fallback in case of corrupted end time
mcl_weather.end_time = mcl_weather.min_duration