1
0
mirror of https://github.com/minetest-mods/3d_armor.git synced 2025-06-29 06:40:41 +02:00

More protection from un-initialized player crashes

This commit is contained in:
stujones11
2017-04-13 19:47:43 +01:00
parent b4283f6e60
commit de2c47f334
4 changed files with 51 additions and 35 deletions

View File

@ -14,8 +14,29 @@ armor = {
default.get_hotbar_bg(0, 4.7)..
"list[current_player;main;0,4.7;8,1;]"..
"list[current_player;main;0,5.85;8,3;8]",
def = {},
textures = {},
def = setmetatable({}, {
__index = function()
return setmetatable({
groups = setmetatable({}, {
__index = function()
return 0
end})
}, {
__index = function()
return 0
end
})
end,
}),
textures = setmetatable({}, {
__index = function()
return setmetatable({}, {
__index = function()
return "blank.png"
end
})
end
}),
default_skin = "character",
materials = {
wood = "group:wood",
@ -199,6 +220,7 @@ armor.init_player_armor = function(self, player)
self:run_callbacks("on_equip", player, stack)
end
self.def[name] = {
init_time = minetest.get_gametime(),
level = 0,
state = 0,
count = 0,
@ -464,15 +486,15 @@ armor.get_preview = function(self, name)
end
armor.get_armor_formspec = function(self, name, listring)
if armor.def[name].init_time == 0 then
return "label[0,0;Armor not initialized!]"
end
local formspec = armor.formspec..
"list[detached:"..name.."_armor;armor;0,0.5;2,3;]"
if listring == true then
formspec = formspec.."listring[current_player;main]"..
"listring[detached:"..name.."_armor;armor]"
end
if not armor.def[name] or not armor.textures[name] then
return formspec
end
formspec = formspec:gsub("armor_preview", armor.textures[name].preview)
formspec = formspec:gsub("armor_level", armor.def[name].level)
for _, attr in pairs(self.attributes) do