mirror of
https://github.com/minetest-mods/skinsdb.git
synced 2025-02-03 11:10:20 +01:00
use players metadata. Enhance the API
This commit is contained in:
parent
8713b09348
commit
e2f90886e1
26
init.lua
26
init.lua
@ -6,11 +6,7 @@
|
|||||||
|
|
||||||
skins = {}
|
skins = {}
|
||||||
skins.modpath = minetest.get_modpath("skins")
|
skins.modpath = minetest.get_modpath("skins")
|
||||||
skins.file = minetest.get_worldpath().."/skins.mt"
|
|
||||||
skins.default = "character_1"
|
skins.default = "character_1"
|
||||||
skins.pages = {}
|
|
||||||
skins.skins = {}
|
|
||||||
skins.file_save = false
|
|
||||||
|
|
||||||
skins.type = { SPRITE=0, MODEL=1, ERROR=99 }
|
skins.type = { SPRITE=0, MODEL=1, ERROR=99 }
|
||||||
skins.get_type = function(texture)
|
skins.get_type = function(texture)
|
||||||
@ -33,30 +29,8 @@ end
|
|||||||
dofile(skins.modpath.."/skinlist.lua")
|
dofile(skins.modpath.."/skinlist.lua")
|
||||||
dofile(skins.modpath.."/players.lua")
|
dofile(skins.modpath.."/players.lua")
|
||||||
|
|
||||||
|
|
||||||
skins.update_player_skin = function(player)
|
|
||||||
local name = player:get_player_name()
|
|
||||||
|
|
||||||
if not skins.is_skin(skins.skins[name]) then
|
|
||||||
skins.skins[name] = skins.default
|
|
||||||
end
|
|
||||||
player:set_properties({
|
|
||||||
textures = {skins.skins[name]..".png"},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Unified inventory page/integration
|
-- Unified inventory page/integration
|
||||||
if minetest.get_modpath("unified_inventory") then
|
if minetest.get_modpath("unified_inventory") then
|
||||||
dofile(skins.modpath.."/unified_inventory_page.lua")
|
dofile(skins.modpath.."/unified_inventory_page.lua")
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Change skin on join - reset if invalid
|
|
||||||
minetest.register_on_joinplayer(function(player)
|
|
||||||
local player_name = player:get_player_name()
|
|
||||||
if not skins.is_skin(skins.skins[player_name]) then
|
|
||||||
skins.skins[player_name] = skins.default
|
|
||||||
end
|
|
||||||
skins.update_player_skin(player)
|
|
||||||
end)
|
|
||||||
|
|
||||||
|
|
||||||
|
60
players.lua
60
players.lua
@ -1,40 +1,30 @@
|
|||||||
skins.load_players = function()
|
-- get current skin
|
||||||
local file = io.open(skins.file, "r")
|
skins.get_player_skin = function(player)
|
||||||
if file then
|
local skin = player:get_attribute("skin")
|
||||||
for line in file:lines() do
|
if not skins.is_skin(skin) then
|
||||||
local data = string.split(line, " ", 2)
|
skin = skins.default
|
||||||
skins.skins[data[1]] = data[2]
|
|
||||||
end
|
end
|
||||||
io.close(file)
|
return skin
|
||||||
end
|
end
|
||||||
end
|
|
||||||
skins.load_players()
|
|
||||||
|
|
||||||
local ttime = 0
|
-- Set skin
|
||||||
minetest.register_globalstep(function(t)
|
skins.set_player_skin = function(player, skin)
|
||||||
ttime = ttime + t
|
if skin == skins.default then
|
||||||
if ttime < 360 then --every 6min'
|
skin = ""
|
||||||
return
|
|
||||||
end
|
end
|
||||||
ttime = 0
|
player:set_attribute("skin", skin)
|
||||||
skins.save()
|
skins.update_player_skin(player)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- update visuals
|
||||||
|
skins.update_player_skin = function(player)
|
||||||
|
local skin = skins.get_player_skin(player)
|
||||||
|
player:set_properties({
|
||||||
|
textures = {skins.list[skin]},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update skin on join
|
||||||
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
skins.update_player_skin(player)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
minetest.register_on_shutdown(function() skins.save() end)
|
|
||||||
|
|
||||||
skins.save = function()
|
|
||||||
if not skins.file_save then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
skins.file_save = false
|
|
||||||
local output = io.open(skins.file, "w")
|
|
||||||
for name, skin in pairs(skins.skins) do
|
|
||||||
if name and skin then
|
|
||||||
if skin ~= skins.default then
|
|
||||||
output:write(name.." "..skin.."\n")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
io.close(output)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ for _, fn in pairs(skins_dir_list) do
|
|||||||
if file then
|
if file then
|
||||||
local data = string.split(file:read("*all"), "\n", 3)
|
local data = string.split(file:read("*all"), "\n", 3)
|
||||||
file:close()
|
file:close()
|
||||||
table.insert(skins.list, name)
|
skins.list[name] = fn
|
||||||
skins.meta[name] = {}
|
skins.meta[name] = {}
|
||||||
skins.meta[name].name = data[1]
|
skins.meta[name].name = data[1]
|
||||||
skins.meta[name].author = data[2]
|
skins.meta[name].author = data[2]
|
||||||
|
Loading…
Reference in New Issue
Block a user