65 lines
1.6 KiB
Lua
65 lines
1.6 KiB
Lua
-------------------------
|
|
-- Sky Layers: API
|
|
|
|
-- Git: https://gitlab.com/rautars/skylayer
|
|
-- License: MIT
|
|
-- Credits: rautars
|
|
-------------------------
|
|
|
|
-- include skylayer core functions
|
|
local modpath = minetest.get_modpath("skylayer");
|
|
local core = dofile(modpath.."/core.lua")
|
|
|
|
skylayer = {}
|
|
|
|
-- set flag for enable / disable skylayer
|
|
skylayer.is_enabled = function(enabled)
|
|
core.settings.enabled = enabled
|
|
end
|
|
|
|
skylayer.add_layer = function(player_name, layer)
|
|
if layer == nil or layer.name == nil then
|
|
minetest.log("error", "Incorrect skylayer definition")
|
|
return
|
|
end
|
|
|
|
local player_data = core.get_player_data(player_name)
|
|
if player_data == nil then
|
|
player_data = core.create_new_player_data(player_name)
|
|
end
|
|
|
|
if player_data == nil then
|
|
minetest.log("error", "Fail to add skylayer to player '" .. player_name .. "'")
|
|
return
|
|
end
|
|
layer.added_time = os.time()
|
|
layer.updated = false
|
|
layer.update_interval = layer.update_interval and layer.update_interval or core.settings.update_interval
|
|
|
|
table.insert(player_data.skylayers, layer)
|
|
end
|
|
|
|
skylayer.remove_layer = function(player_name, layer_name)
|
|
local player_data = core.get_player_data(player_name)
|
|
if player_data == nil or player_data.skylayers == nil then
|
|
return
|
|
end
|
|
|
|
if #player_data.skylayers == 0 then
|
|
return
|
|
end
|
|
|
|
for k, layer in ipairs(player_data.skylayers) do
|
|
if layer.name == layer_name then
|
|
table.remove(player_data.skylayers, k)
|
|
if #player_data.skylayers == 0 then
|
|
local player = core.get_player_by_name(player_name)
|
|
if player ~= nil then
|
|
core.reset_sky(player)
|
|
end
|
|
end
|
|
return
|
|
end
|
|
end
|
|
end
|