From 9ff9d46c893d19231cabd3452c3422ca90a6de9a Mon Sep 17 00:00:00 2001 From: cale Date: Thu, 11 Feb 2016 12:21:53 +0100 Subject: [PATCH] updated armor mod --- mods/armor/init.lua | 72 +++++++++++++++++++++++++++++++++++++++++ mods/default/player.lua | 10 +++--- 2 files changed, 77 insertions(+), 5 deletions(-) diff --git a/mods/armor/init.lua b/mods/armor/init.lua index c4ec8ad..ef0271e 100644 --- a/mods/armor/init.lua +++ b/mods/armor/init.lua @@ -1,3 +1,75 @@ armor = {} +armor.invs = {} + function armor.register_armor(name, def) + minetest.register_craftitem(name .. "_chestplate", { + description = def.description .. " Chestplate", + inventory_image = def.tex .. "_chestplate.png", + protection = def.protection, + skin = def.skin .. "_chestplate.png", + }) + minetest.register_craftitem(name .. "_cboots", { + description = def.description .. " Boots", + inventory_image = def.tex .. "_boots.png", + protection = def.protection, + skin = def.skin .. "_boots.png", + }) + minetest.register_craftitem(name .. "_leggings", { + description = def.description .. " Leggings", + inventory_image = def.tex .. "_leggings.png", + protection = def.protection, + skin = def.skin .. "_leggings.png", + }) end + +function armor.update_armor(name, pl) + local a = armor.invs[name]:get_list("main") + local p = 100 + for k,v in pairs(a) do + if v:get_definition() and v:get_definition().protection then + p = p - v:get_definition().protection + end + end + pl:set_armor_groups({fleshy = p}) +end + +default.inv_form = default.inv_form .. "list[detached:armor_%s;main;0,0;1,3;]" +default.inv_form = default.inv_form.. default.itemslot_bg(0,0,1,3) + +minetest.register_on_joinplayer(function(player) + if armor.invs[player:get_player_name()] then + return + end + + armor.invs[player:get_player_name()] = minetest.create_detached_inventory("armor_" .. player:get_player_name(), { + on_put = function(inv, listname, index, stack, player) + armor.update_armor(player:get_player_name(), player) + end, + on_take = function(inv, listname, index, stack, player) + armor.update_armor(player:get_player_name(), player) + end, + }) + armor.invs[player:get_player_name()]:set_size("main", 3) + +end) + +armor.register_armor("armor:iron", { + description = "Iron", + tex = "armor_iron", + protection = 15, + skin = "armor_skin_iron" +}) + +armor.register_armor("armor:copper", { + description = "Copper", + tex = "armor_copper", + protection = 20, + skin = "armor_skin_copper" +}) + +armor.register_armor("armor:diamond", { + description = "Diamond", + tex = "armor_diamond", + protection = 28, + skin = "armor_skin_diamond" +}) diff --git a/mods/default/player.lua b/mods/default/player.lua index 814b24e..9813049 100644 --- a/mods/default/player.lua +++ b/mods/default/player.lua @@ -16,10 +16,10 @@ default.inv_form = default.inv_form..default.gui_colors default.inv_form = default.inv_form..default.gui_bg default.inv_form = default.inv_form.."list[current_player;main;0,3.5;8,4;]" default.inv_form = default.inv_form..default.itemslot_bg(0,3.5,8,4) -default.inv_form = default.inv_form.."list[current_player;craft;1,1;3,1;]" -default.inv_form = default.inv_form..default.itemslot_bg(1,1,3,1) -default.inv_form = default.inv_form.."list[current_player;craftpreview;5,1;1,1;]" -default.inv_form = default.inv_form..default.itemslot_bg(5,1,1,1) +default.inv_form = default.inv_form.."list[current_player;craft;2.5,0.5;3,1;]" +default.inv_form = default.inv_form..default.itemslot_bg(2.5,0.5,3,1) +default.inv_form = default.inv_form.."list[current_player;craftpreview;3.5,1.5;1,1;]" +default.inv_form = default.inv_form..default.itemslot_bg(3.5,1.5,1,1) default.craft_form = "size[8,7.5;]" default.craft_form = default.craft_form..default.gui_colors @@ -36,7 +36,7 @@ default.craft_form = default.craft_form..default.itemslot_bg(5,1,1,1) minetest.register_on_joinplayer(function(player) player:hud_set_hotbar_image("gui_hotbar.png") player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") - player:set_inventory_formspec(default.inv_form) + player:set_inventory_formspec(default.inv_form:format(player:get_player_name())) player:set_properties({ mesh = "character.x",