From 8457220413727e7af7e3a31a0ce1d9ff92679337 Mon Sep 17 00:00:00 2001 From: stujones11 Date: Sun, 13 Apr 2014 17:41:19 +0100 Subject: [PATCH] Add support for unified inventory and skins --- 3d_armor/armor.lua | 222 +++++++++++++----- 3d_armor/depends.txt | 3 +- .../3d_armor_boots_bronze_preview.png | Bin 0 -> 2053 bytes .../3d_armor_boots_diamond_preview.png | Bin 0 -> 2051 bytes .../3d_armor_boots_mithril_preview.png | Bin 0 -> 1997 bytes .../textures/3d_armor_boots_steel_preview.png | Bin 0 -> 2040 bytes .../textures/3d_armor_boots_wood_preview.png | Bin 0 -> 2034 bytes .../3d_armor_chestplate_bronze_preview.png | Bin 0 -> 1729 bytes .../3d_armor_chestplate_diamond_preview.png | Bin 0 -> 1654 bytes .../3d_armor_chestplate_mithril_preview.png | Bin 0 -> 1664 bytes .../3d_armor_chestplate_steel_preview.png | Bin 0 -> 1636 bytes .../3d_armor_chestplate_wood_preview.png | Bin 0 -> 1612 bytes .../3d_armor_helmet_bronze_preview.png | Bin 0 -> 1182 bytes .../3d_armor_helmet_diamond_preview.png | Bin 0 -> 1147 bytes .../3d_armor_helmet_mithril_preview.png | Bin 0 -> 1144 bytes .../3d_armor_helmet_steel_preview.png | Bin 0 -> 1161 bytes .../textures/3d_armor_helmet_wood_preview.png | Bin 0 -> 1171 bytes .../3d_armor_leggings_bronze_preview.png | Bin 0 -> 1941 bytes .../3d_armor_leggings_diamond_preview.png | Bin 0 -> 1933 bytes .../3d_armor_leggings_mithril_preview.png | Bin 0 -> 1917 bytes .../3d_armor_leggings_steel_preview.png | Bin 0 -> 1940 bytes .../3d_armor_leggings_wood_preview.png | Bin 0 -> 1965 bytes 3d_armor/textures/3d_armor_ui_form.png | Bin 0 -> 13356 bytes 3d_armor/textures/character_preview.png | Bin 0 -> 1172 bytes README.md | 4 +- shields/init.lua | 8 +- .../shields_shield_bronze_preview.png | Bin 0 -> 1892 bytes .../shields_shield_diamond_preview.png | Bin 0 -> 1838 bytes .../shields_shield_mithril_preview.png | Bin 0 -> 1796 bytes .../textures/shields_shield_steel_preview.png | Bin 0 -> 1850 bytes .../textures/shields_shield_wood_preview.png | Bin 0 -> 2126 bytes 31 files changed, 167 insertions(+), 70 deletions(-) create mode 100644 3d_armor/textures/3d_armor_boots_bronze_preview.png create mode 100644 3d_armor/textures/3d_armor_boots_diamond_preview.png create mode 100644 3d_armor/textures/3d_armor_boots_mithril_preview.png create mode 100644 3d_armor/textures/3d_armor_boots_steel_preview.png create mode 100644 3d_armor/textures/3d_armor_boots_wood_preview.png create mode 100644 3d_armor/textures/3d_armor_chestplate_bronze_preview.png create mode 100644 3d_armor/textures/3d_armor_chestplate_diamond_preview.png create mode 100644 3d_armor/textures/3d_armor_chestplate_mithril_preview.png create mode 100644 3d_armor/textures/3d_armor_chestplate_steel_preview.png create mode 100644 3d_armor/textures/3d_armor_chestplate_wood_preview.png create mode 100644 3d_armor/textures/3d_armor_helmet_bronze_preview.png create mode 100644 3d_armor/textures/3d_armor_helmet_diamond_preview.png create mode 100644 3d_armor/textures/3d_armor_helmet_mithril_preview.png create mode 100644 3d_armor/textures/3d_armor_helmet_steel_preview.png create mode 100644 3d_armor/textures/3d_armor_helmet_wood_preview.png create mode 100644 3d_armor/textures/3d_armor_leggings_bronze_preview.png create mode 100644 3d_armor/textures/3d_armor_leggings_diamond_preview.png create mode 100644 3d_armor/textures/3d_armor_leggings_mithril_preview.png create mode 100644 3d_armor/textures/3d_armor_leggings_steel_preview.png create mode 100644 3d_armor/textures/3d_armor_leggings_wood_preview.png create mode 100644 3d_armor/textures/3d_armor_ui_form.png create mode 100644 3d_armor/textures/character_preview.png create mode 100644 shields/textures/shields_shield_bronze_preview.png create mode 100644 shields/textures/shields_shield_diamond_preview.png create mode 100644 shields/textures/shields_shield_mithril_preview.png create mode 100644 shields/textures/shields_shield_steel_preview.png create mode 100644 shields/textures/shields_shield_wood_preview.png diff --git a/3d_armor/armor.lua b/3d_armor/armor.lua index f382ed9..b39c0b4 100644 --- a/3d_armor/armor.lua +++ b/3d_armor/armor.lua @@ -9,17 +9,40 @@ armor = { player_hp = {}, elements = {"head", "torso", "legs", "feet"}, physics = {"jump","speed","gravity"}, - formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]" - .."list[current_player;main;0,4.5;8,4;]" - .."list[detached:player_name_armor;armor_head;3,0;1,1;]" - .."list[detached:player_name_armor;armor_torso;3,1;1,1;]" - .."list[detached:player_name_armor;armor_legs;3,2;1,1;]" - .."list[detached:player_name_armor;armor_feet;3,3;1,1;]", + formspec = "size[8,8.5]list[detached:player_name_armor;armor;0,1;2,3;]" + .."image[2,0.75;2,4;armor_preview]" + .."list[current_player;main;0,4.5;8,4;]" + .."list[current_player;craft;4,1;3,3;]" + .."list[current_player;craftpreview;7,2;1,1;]", textures = {}, - default_skin = "character.png", + default_skin = "character", } --- armor.def - Added by BlockMen for HUD integration +if inventory_plus then + armor.formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]" + .."list[detached:player_name_armor;armor;0,1;2,3;]" + .."image[2.5,0.75;2,4;armor_preview]" + .."label[5,1;Level: armor_level]" + .."label[5,1.5;Heal: armor_heal]" + .."list[current_player;main;0,4.5;8,4;]" +elseif unified_inventory then + unified_inventory.register_button("armor", { + type = "image", + image = "inventory_plus_armor.png", + }) + unified_inventory.register_page("armor", { + get_formspec = function(player) + local name = player:get_player_name() + local formspec = "background[0.06,0.99;7.92,7.52;3d_armor_ui_form.png]" + .."label[0,0;Armor]" + .."list[detached:"..name.."_armor;armor;0,1;2,3;]" + .."image[2.5,0.75;2,4;"..armor.textures[name].preview.."]" + .."label[5,1;Level: "..armor.def[name].level.."]" + .."label[5,1.5;Heal: "..armor.def[name].heal.."]" + return {formspec=formspec} + end, + }) +end armor.def = { state = 0, @@ -48,40 +71,58 @@ armor.set_player_armor = function(self, player) local player_inv = player:get_inventory() local armor_texture = "3d_armor_trans.png" local armor_level = 0 + local armor_heal = 0 local state = 0 local items = 0 + local elements = {} local textures = {} - local elements = {} local physics_o = {speed=1,gravity=1,jump=1} - for i, v in ipairs(self.elements) do - local stack = player_inv:get_stack("armor_"..v, 1) - local level = stack:get_definition().groups["armor_"..v] + local material = {type=nil, count=1} + local preview = armor:get_player_skin(name).."_preview.png" + for _,v in ipairs(self.elements) do + elements[v] = false + end + for i=1, 6 do + local stack = player_inv:get_stack("armor", i) local item = stack:get_name() - elements[i] = string.match(item, "%:.+_(.+)$") - if level then - table.insert(textures, item:gsub("%:", "_")..".png") - armor_level = armor_level + level - state = state + stack:get_wear() - items = items + 1 - end - - for kk,vv in ipairs(self.physics) do - local o_value = stack:get_definition().groups["physics_"..vv] - if ( o_value ~= nil ) then - physics_o[vv] = physics_o[vv] + o_value + if stack:get_count() == 1 then + local def = stack:get_definition() + for k, v in pairs(elements) do + if v == false then + local level = def.groups["armor_"..k] + if level then + local texture = item:gsub("%:", "_") + table.insert(textures, texture..".png") + preview = preview.."^"..texture.."_preview.png" + armor_level = armor_level + level + state = state + stack:get_wear() + items = items + 1 + local heal = def.groups["armor_heal"] or 0 + armor_heal = armor_heal + heal + for kk,vv in ipairs(self.physics) do + local o_value = def.groups["physics_"..vv] + if o_value then + physics_o[vv] = physics_o[vv] + o_value + end + end + local mat = string.match(item, "%:.+_(.+)$") + if material.type then + if material.type == mat then + material.count = material.count + 1 + end + else + material.type = mat + end + elements[k] = true + end + end end end - end - - player:set_physics_override(physics_o) - if minetest.get_modpath("shields") then armor_level = armor_level * 0.9 end - if elements[1] == elements[2] and - elements[1] == elements[3] and - elements[1] == elements[4] then + if material.type and material.count == #self.elements then armor_level = armor_level * 1.1 end if #textures > 0 then @@ -93,9 +134,13 @@ armor.set_player_armor = function(self, player) armor_groups.fleshy = 100 - armor_level end player:set_armor_groups(armor_groups) + player:set_physics_override(physics_o) self.textures[name].armor = armor_texture + self.textures[name].preview = preview self.def[name].state = state self.def[name].count = items + self.def[name].level = armor_level + self.def[name].heal = armor_heal self:update_player_visuals(player) end @@ -117,15 +162,15 @@ armor.update_armor = function(self, player) local heal_max = 0 local state = 0 local items = 0 - for _,v in ipairs(self.elements) do - local stack = armor_inv:get_stack("armor_"..v, 1) + for i=1, 6 do + local stack = player_inv:get_stack("armor", i) if stack:get_count() > 0 then local use = stack:get_definition().groups["armor_use"] or 0 local heal = stack:get_definition().groups["armor_heal"] or 0 local item = stack:get_name() stack:add_wear(use) - armor_inv:set_stack("armor_"..v, 1, stack) - player_inv:set_stack("armor_"..v, 1, stack) + armor_inv:set_stack("armor", i, stack) + player_inv:set_stack("armor", i, stack) state = state + stack:get_wear() items = items + 1 if stack:get_count() == 0 then @@ -148,6 +193,33 @@ armor.update_armor = function(self, player) self.player_hp[name] = hp end +armor.get_player_skin = function(self, name) + local skin = nil + if skins then + skin = skins.skins[name] + elseif u_skins then + skin = u_skins.u_skins[name] + end + return skin or armor.default_skin +end + +armor.update_inventory = function(self, player) + local name = player:get_player_name() + if unified_inventory then + unified_inventory.set_inventory_formspec(player, "armor") + elseif inventory_plus then + local formspec = armor.formspec:gsub("player_name", name) + formspec = formspec:gsub("armor_preview", armor.textures[name].preview) + formspec = formspec:gsub("armor_level", armor.def[name].level) + formspec = formspec:gsub("armor_heal", armor.def[name].heal) + inventory_plus.set_inventory_formspec(player, formspec) + else + local formspec = armor.formspec:gsub("player_name", name) + formspec = formspec:gsub("armor_preview", armor.textures[name].preview) + player:set_inventory_formspec(formspec) + end +end + -- Register Player Model default.player_register_model("3d_armor_character.x", { @@ -172,15 +244,15 @@ default.player_register_model("3d_armor_character.x", { minetest.register_on_player_receive_fields(function(player, formname, fields) local name = player:get_player_name() if fields.armor then - local formspec = armor.formspec:gsub("player_name", name) - inventory_plus.set_inventory_formspec(player, formspec) + armor:update_inventory(player) return end for field, _ in pairs(fields) do - if string.find(field, "^skins_set_") then + if string.find(field, "skins_set_") then minetest.after(0, function(player) - armor.textures[name].skin = skins.skins[name]..".png" - armor:update_player_visuals(player) + local skin = armor:get_player_skin(name) + armor.textures[name].skin = skin..".png" + armor:set_player_armor(player) end, player) end end @@ -188,52 +260,77 @@ end) minetest.register_on_joinplayer(function(player) default.player_set_model(player, "3d_armor_character.x") - inventory_plus.register_button(player,"armor", "Armor") - local player_inv = player:get_inventory() local name = player:get_player_name() + local player_inv = player:get_inventory() local armor_inv = minetest.create_detached_inventory(name.."_armor",{ on_put = function(inv, listname, index, stack, player) player:get_inventory():set_stack(listname, index, stack) armor:set_player_armor(player) + armor:update_inventory(player) end, on_take = function(inv, listname, index, stack, player) player:get_inventory():set_stack(listname, index, nil) armor:set_player_armor(player) + armor:update_inventory(player) + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player) + local plaver_inv = player:get_inventory() + local stack = inv:get_stack(to_list, to_index) + player_inv:set_stack(to_list, to_index, stack) + player_inv:set_stack(from_list, from_index, nil) + armor:set_player_armor(player) + armor:update_inventory(player) end, allow_put = function(inv, listname, index, stack, player) - if inv:is_empty(listname) then - return 1 - end - return 0 + return 1 end, allow_take = function(inv, listname, index, stack, player) return stack:get_count() end, allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - return 0 + return count end, }) - for _,v in ipairs(armor.elements) do - local list = "armor_"..v - player_inv:set_size(list, 1) - armor_inv:set_size(list, 1) - armor_inv:set_stack(list, 1, player_inv:get_stack(list, 1)) + if inventory_plus then + inventory_plus.register_button(player,"armor", "Armor") end + armor_inv:set_size("armor", 6) + player_inv:set_size("armor", 6) + for i=1, 6 do + local stack = player_inv:get_stack("armor", i) + armor_inv:set_stack("armor", i, stack) + end + + -- Legacy support, import player's armor from old inventory format + for _,v in pairs(armor.elements) do + local list = "armor_"..v + armor_inv:add_item("armor", player_inv:get_stack(list, 1)) + player_inv:set_stack(list, 1, nil) + end + armor.player_hp[name] = 0 armor.def[name] = { state = 0, count = 0, + level = 0, + heal = 0, } armor.textures[name] = { - skin = armor.default_skin, + skin = armor.default_skin..".png", armor = "3d_armor_trans.png", wielditem = "3d_armor_trans.png", + preview = armor.default_skin.."_preview.png", } if minetest.get_modpath("skins") then local skin = skins.skins[name] if skin and skins.get_type(skin) == skins.type.MODEL then armor.textures[name].skin = skin..".png" end + elseif minetest.get_modpath("u_skins") then + local skin = u_skins.u_skins[name] + if skin and u_skins.get_type(skin) == u_skins.type.MODEL then + armor.textures[name].skin = skin..".png" + end end if minetest.get_modpath("player_textures") then local filename = minetest.get_modpath("player_textures").."/textures/player_"..name @@ -245,6 +342,9 @@ minetest.register_on_joinplayer(function(player) end minetest.after(1, function(player) armor:set_player_armor(player) + if inventory_plus == nil and unified_inventory == nil then + armor:update_inventory(player) + end end, player) end) @@ -257,11 +357,11 @@ if minetest.get_modpath("bones") then local drop = {} local player_inv = player:get_inventory() local armor_inv = minetest.get_inventory({type="detached", name=name.."_armor"}) - for _,v in ipairs(armor.elements) do - local list = "armor_"..v - table.insert(drop, player_inv:get_stack(list, 1)) - armor_inv:set_stack(list, 1, nil) - player_inv:set_stack(list, 1, nil) + for i=1, player_inv:get_size("armor") do + local stack = armor_inv:get_stack("armor", i) + table.insert(drop, stack) + armor_inv:set_stack("armor", i, nil) + player_inv:set_stack("armor", i, nil) end armor:set_player_armor(player) minetest.after(1, function() --TODO: Make delay configurable @@ -271,9 +371,9 @@ if minetest.get_modpath("bones") then local owner = meta:get_string("owner") local inv = meta:get_inventory() if name == owner then - for _,list in ipairs(drop) do - if inv:room_for_item("main", list) then - inv:add_item("main", list) + for _,stack in ipairs(drop) do + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) end end end diff --git a/3d_armor/depends.txt b/3d_armor/depends.txt index 5a6e76d..525e69c 100644 --- a/3d_armor/depends.txt +++ b/3d_armor/depends.txt @@ -1,3 +1,4 @@ default -inventory_plus +inventory_plus? +unified_inventory? diff --git a/3d_armor/textures/3d_armor_boots_bronze_preview.png b/3d_armor/textures/3d_armor_boots_bronze_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..eba887951736e666fd357058268e6fc9f7e203c6 GIT binary patch literal 2053 zcmY*a2{@E%8~$c2BkO1!>nMLpE)`AZL>NEjknN-*F=Y_PelgY}(=>jG5T)$Wv?=RU zj1FV#gc$1>B9jJV3_6yq%~CsIP!cF^L^t~- zVl9zkOsV*pKI~ST{re`5OwYT@TPt_MIARvhME0BZJGBTL`R6eU9D81dvZE}Tv}CuC zdvODZ^AGY~>7!Ui&P;n{6~``Pt(07Mjw{Ouro#Fo6+!D)GD`K*>2LgFmYk;-5QZ)A zsx>W~W=Zs{w;Nph$`7&QkJ(G_JCUWc+}HQ<1uXya(}(>K&>MInY~Il)x>$6+0t&JHY;r=} zLmH3}B82tQTE%bvVJDcb2=UwSH+%1^n(g0PH30%CivVB%Y^LvPRJ7LvR~QRID~_~s z_E)X1&c#Ud)IxrQr~8U}0cKlh%>~du4CXtcWI(y2-XqM$vsKvBgrlnf+d&>A$oLjE z5fUkvZYsA@V!>S3a<-VZqNGF*PIZuHVm5T~--j>dWjRL{E%d9^=;6&1X1kYia?5LL z!W@gwMK{2lFkS3LoKw9zGu5{Q0{DOkf}`{g?!oct@k&SxF|<85*r|Rq_KH(|EV-^2 zr=%5epOTg~eIV?E$VM@aBAZ4R#MQ_jm4EFuj6>8_41Rg?A&e zPS0e0`GDr$b#DlNlfBs)%AFg!`=@?P5tLXmj#fQ|^&iP5p^U>0v&n57m0z@UTQMH> z@NZJGg;vc=moz`aXwS6WxVy;P&IGs}NmukUtl+pI>OO?|{o0p(pB^q|Xn!s<%Rjz< zPdm~$F_N$8xUk$%cQfzBI&!De8bAjcJ~H;4yj(^=oR7|@$GcZ0 zzf&LYgVD2s40Q{ysZ-hv{R?D7l?;Y$?d-=sRYG-Q@1gYMMdQ2qxCO$}$z! zH?Z2a_*YG>+!ci;2J0zy(c`HMviohrpXqnknj;u7QW@wK2(YCX|7%Zv>YR9Iszu71 z(`hkgZhrCR5~i-&aVs)U#h2l$Zmh#UzIA)QaI+zZA7|4ZE!~`t+lUyhmtzG&PHzV_ zV!N(}iM?@{?NU95ZUG`0G;HYVbOuRpe4J+h=Bm_<24CNj3~OJwhJP@+H*a2913i`s z!W){Rwks|tMPwYuRpId-lz3+FzdBoaVj3bhrdjsVf;TOs zUc1gwFUHNmPnA&(7(HS-Oc#nv2I+iB@q!E-zB@``3JKMk->pa3#kzY>A$v$AA@#4Q zS*wwDQvpN+E{rf6~Zw9jLj=iZjwf6wXhVy46w1Zw{O7+} CH)TZt literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_boots_diamond_preview.png b/3d_armor/textures/3d_armor_boots_diamond_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..bd9fc7ca92196aaa2c2f032c35357014120b8be3 GIT binary patch literal 2051 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 literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_boots_steel_preview.png b/3d_armor/textures/3d_armor_boots_steel_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a4d6a4d037f5ddf66a024f60e5111b0bcd8b37 GIT binary patch literal 2040 zcmZ8h3p|ti8-M3+ZWWy~xptI7D(b{ZbIG+bA=e$Zt5%7OQR0RWIY zXJ_Rs^jH7@0a6mew|HJsrO<&;&bDU(0#$WJ_#xqc!PW{`-#}SgOEq1pqRN z8xII5E`bPxl2PYi){mtSy{Nmj<8C-gH^3nJA#nQrX2Lu!Mn5y z4M!`dU0jO;A&*@1#4>NXh`o94cFXw>1u&dj2EU{uo~VeoQUWJaQp(}SEv}}Jzf4QpeVUW;j&%{=q|y(j*d38&1(f?98QJ~#|&J=ulZ z<7V3fZ0`#fDCvmHJ*e~a8yE*l&E#Ih+lyX;4baYL0#^WYA?&8?4>^gv8iqsi0znm~ z{IZF5OusdD3EF{|Iim#;1w=MrJ|brKXFG0cQbp>uypj02MAEeg4UzI@$>|wgO<)Th zW)ir|QwpN*RSxI%1)BI^&zj}}tV&!dUGzX06IBzl(A${gN)EiR+)ZQ+3hwzJrh5^( z3Xi~d7xjnHKN%61TzK+{CU}B6P$a&YciWmL#72JiAO?-=5tz9B&I!{mb!F;h%U5x{ zb!UHw(ZCN_GpGfPRU9?bpDrp0`CCu3?RZ#<=;Hc6Y_mMk0D~Kgq(u`9l>08eT}q>k z_zbrud;&wa3m5v}N}Q92Gog8q@b{q22-Rmu?bJco<@LU)keAxiPd%yuL>$9rM9|&c zcs0IBfuoq&A(K0H*7P?SGbd`Vm^ z8(a%fwB&13Qgfrzuh%Q5sek*AT|fb9A0)L=VB!g)j0{wo!NLI1e*nNj`aDQglY?rUqAZ&?qjvAMh37>4}$$)NuVPoXJe zrtNz3YTbUK(?nlTnciyo&Bph8 zKMqjR`J+ax!U-{owhpS^P7bD>wVEQ{$A^GDc`G4< zN%9l36DaQ2lOmvFwPf6tAcjZt6ubw3jaJkD^I%BN7vJBzOy@9zxNQE+=7hQziGA9P z`qS^#6>MzAX^Ah3<3~0-uG~;QZ;=r+t#T2W>9W@1>tIb<>maah5zG=+C3jM%DL-$N zxoA^9n_GHXtAcLIG+Ye@m^keM(apb5r+?jY)+_Z2LWfN-6&cCaFx^-KO2u<>JK literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_boots_wood_preview.png b/3d_armor/textures/3d_armor_boots_wood_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..357e72bbd83b58500f76a1b94f422bdf0c1078a6 GIT binary patch literal 2034 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 P%N))Qr|fG^1g8B9TolsR literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_chestplate_diamond_preview.png b/3d_armor/textures/3d_armor_chestplate_diamond_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..6a78608ea1c0f068fbacc803e870635c243f8662 GIT binary patch literal 1654 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 literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_chestplate_steel_preview.png b/3d_armor/textures/3d_armor_chestplate_steel_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..a33c2b49365dc28dbf26869ae3791aedb85c37d1 GIT binary patch literal 1636 zcmbtUYdDl?7=FjdA>D`h^d6b^`Z0?rjwcI$kE7cwE9I5)5?eu^4PbKs18EIu$E00njN zivR_M8{nku2@fxK+1JuaD(fvm@$3-**1Yv_bMZ?anjH4b(g@IK=ItNuqsD14JIv7r zb#XbgE7_Up_-SOF+WNLL!qFc`ktbBIg*W>YWknUrA=SdRxof)WT{~pOxG_~}n!Rhz zadX?Q&dL#JD~T@buYhi{=K9ND8YAG=5nArO+B0n=QGHdl@9oHLk53m%%YAjQv?F=X zjyK_ZBbVaZE^r8W1hz4OzD{qShWpSE?Y1{5an3(}XvB=LFw02ocagb-kh2tyLGyhB z3ZnDEle14|Uha+m{sTT8=h=7fi%QWu6$;P?a(|yQ_SjQr5UokXmTR(F40|&H-QZ&(c$iEh-l5xQZ#G7VB%n+yrmN|Dr(`P zr3{diiB>OCNF$T@p2D3U;-9M9FQuntaO)Zq<#b98#(~tD;1uY&bA|b73QX0=_ z5$!gp5SMIXdDhOjJw_79Vp3Lj`*K0WjzBv}M%KuIjE#JJ=A(j^d02*7%OO^4x%z?U zJiBG=Xc!@e|K~BxvT1*W4LyNu$Gtg@6S0RMMQlG`1_eJ%-XmBG5JR1FBV=ze5iw9Q zexs}(GR2w?JpTd3B1UaFc;>KEU)j&x}wf(%>W5b>8 zXl$}Rk^%(O#VW^5E5Ah_Y&)*2-+)f#jkRs3Wxy@j_O5MRcRUA^ z{iv!mXvUJRIBEj2o)UZloCG0=_&p+x~Nhyi_m-59m_ zsy==&nK57z25c}$Q!}%0PN_Govt1}kvt`xP^m7$r$DjTh^rVSAZ-p8eWPIfW-_D|a z^DVW>_<-7}ZKqgH2B(%weQqA+82a4EMNG?+C}qVzWR5hZU{KI3*Z((*=4=$Eng{QO zaoFB>8+U$#SWvT0MRmA`%Kd_|wXNp4Oow)}v1vz-nxLp@$}Td_OlxO9<=t}~I?uo3 zju@FEH%O<81p=6q62pQF+#J6o5I_80SRzs_o}>25!!#U_&qdN$vS7Cb>0F|{QWChl zB3^))?x;XU#l(;}>}@C6SO;x)90UE}b2rUlP%tsT2nXcH8;SAp)+p)}2A41qZOBDW zNP5AV-1jhn5}{R9rbo2XIm}@%Art0QFHBwC5w{U^b%VxW3sh68Fwu5Nzzc0G+_d1H z2Nxu9CMG846*bB2;o!8hL{&u1*cmteTXsY)rp~wLO+&}MNFo`cApW?Qt=?pdR-eKF7I`a*%3V`T{}8c^ zlwi61CV&y#)#MV$eWxwb>I-!GT3#ZEnM`x3;28 zxltyP*AaGwPT%=ixq`6MoqJW3OSkg6n_}#r1F=GW%Jk+YI#?f!vC+Q6OU5!MnM+Xc f9|(Bv0=tkUnKvz`l4LzI*y6Q^ySH1VD>40FZ5)xq literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_chestplate_wood_preview.png b/3d_armor/textures/3d_armor_chestplate_wood_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..218a5aeb693532576e22106c7f98eed32d545719 GIT binary patch literal 1612 zcmbVNc~sI_6n;NMF%=B6#0byJwbGiG0w1nkGtMvd2zkEIyvk^E@q@z+z)1%G_svTnI^Qt@fB z`?M?TSj@oKAyMtbhd7b=wZN&ktkfR{Kz~tGzj?iQOx^Z?dhjl#nDIYZ z@f|w102mG!vU~OSKN7F3sy4bkTHDjwgy=jKBDrdmKX5TA|6+rO0Hi}`oufu$R-zw$ zwmB%-cK{KhI?m5OVfBXM>pZ+?-Xov0k>jCHV=~Iw+YvO`{iT*_g)|OspI|UEhtgc5 znXrL2PyQ*WMqHb`wgaVa?^CSLLnbP|4#PV?S{)tu`?}6SThY7fb9{;%r59#>yGuH0 z>BcVl9S69#lCSL6%On{QfQ}S^cRF-aHn4+YLwD+8j&i6af)|$5z0#+W*-t0IKP+?l`#==n?>k_Lw?>GH6ga zY5D}%=jl?-SV){o*4o`CS5o`^PH-^yhnka8$;_uF+bc;qu6Y>VDZ#^s;YTLaSr8g` zhY)<&m_JXF@5YaBmM3;ZY`T(o?#Y?K3=B)DSluU=s1xmWVtmKu9{e>j*`R#p=Llf$ zb~{bK#xHQv85ns zi8elpE6G*NcgT>vQHb!=yk7xh(4Vh*(nXWWPzqP?ieDP}-Kaqhh9&2q6jb^y2Pcq}v?o}Y2{n8Z zT=O)P;usn(oF=QS>056q`V%fu8dzP!jxl+-Z_u#(7$sQ$!!6VuNY;JkvTMSW?T0%J z)z$y9ocCIQ`v1!OvjxxsW7vOB$X+wHUGBwkn)LA|=af?FspX}mNcACa4k^pv+@1|- z5yF|D9J~Spi&!f{i!#$*jZXQO){`B=d`hwp&szBVWtMcW-=T_c7TaGH3?cKB9vWt^ dLi;bUeW!MyZKHw>r87jJ9bN<7gR`t)iHnt-TEiFeL2yQ%Zq)%c-WP+oUtJ7S`8Igba z12`A1^VndZ5a?(v@^G8UlFr)xg@G&QJef0LN#UdO=^0CH<`;ke^L6w4M_W{vzgcXq zcXe^j{*71n{ycj1lI6Z_w@Ui@|7Z4>)M)R0_i_Ec-NAmv|7LHv!lJ;y(!e0Vz?5+F zi~rsOmujW{9DOnU+(+r~xYsiJzTZ24{J7`#{Kw_ych65O4ZrtN=Kr5p*TbNC92htl zt}~YL{JMLcabL~*rRP4fPkwiv`On^)e?R{bpCA2FX8tux`S2ecbqnJPrge!7jn9~sa-{ydP zx!PTGi8*gM=T+B$ePY4OOGANUlBdPo`IW!w@b~+*mV1ByHM#BURhhFu%{Tbclu1jLoy!RiniLe2wlA*y z-<-RTZf@n?`ROhH^P)}m{~lbuv)9zqSMKcb#XoP_7Ou>_o9;Jx)}+ka?|#YU=1vYW zlIrE#;-4z0o@F63?=%D7uLTvH6!;e@B~U434otone`M~i%Fkt!JhO7kd#^@){}FZR zwW%Zzo95CtQuFmdKI;Vst0N5C~YXATM literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_helmet_diamond_preview.png b/3d_armor/textures/3d_armor_helmet_diamond_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..537bac5bdc5fdefc64e7de661e559ca7f78d7b0c GIT binary patch literal 1147 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73><7gR`t)iniu3XS*WZzv)8q%Z=9?F4QZ$ z2z?PMu*AuibE3zcH|IWIh&r8Tv^zIx)9k-Be7aBG=B3}O`JI-&E5}>!Cj0mI*Eiej zm+q}PKD)Q~-p8`+)#Wuc6&1_=YUkdz{&)H9?Wac1_j6|ZGB7zXa4;|`FkCzPV3YX* zlfS(G3SNi3{}J9VH+SWS=8rqdYl_c(tF8E3_5R2A-MhmWSQ;1v7??nszBB&Y%Wv@F zeoMc+-5c5U#p@ocySwjw9BrQet*`v}@x71j?JFw0@NI_`ZvSp^^;F) z`4?o~&VotAu((s!>JoDc3 zPvLhry`L|7K$C${fdObH)Il&#_@$-watU9)yqr4kLF#>b?S^0mrUTUtt}(xDG=uNo z2tMvv{rIQ0Z@skNY@a&sQ&;NmNAF&eqjq*1^M_;Ro}0ht$ax!EZ*MN2_t)<4^=)#h zck6=uESk=i6@B>n|Fc?wwdeBM=i;UNGDLeX@5;d$Y-LU$4r{1!}&* zm!?cwvdqtR{SuX>OML$BvHM^8OEN$9_NndsW$T}$)PKDB+ww>4oLPHj^oxHswk}*5 zYn$pfdDbM)>u3K+#=e~tv}yC^%@@q3rp{UMu%JSfIpWI#3s!6~N}S&?5(07B81N{2 zki;{saIu{IKjo7aTg!}-w_X#jo3bP0 Hl+XkKxv{6T literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_helmet_mithril_preview.png b/3d_armor/textures/3d_armor_helmet_mithril_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..713a9feaf454f0d2c1ea163bfc9b543e7340f800 GIT binary patch literal 1144 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73><7gR`t)i*gjGw*l4e^S>HGVWr?cdI`M&CZzs`y8)Q#LWJO6s?HTl1$ zwR^r_>G_y_`MCU@=r=!RXvurx3TFfb)t{t{lxZvXE~_sYlb z>;L`z!aGIs`@{DA=VvT@9o#;D|Ib@jKJLxGSIFkTz`?)>))gU|`m*}NsrJkJ`3rvB zPP#2`v;D@e|KC6V-|+S~T#*2Sc>2ORRk`fEVtnV`+H)|u-3|YfDzeKD>b}t{ z{a;>Jb5W8Zyl;Rc|~VVna| zyLkTFA9%VAtXT-;D?65RC6DjsOr7-Z$);Osd(-9fGXLCn{5I)gUeG$beLKoLB~{Lb z6@9pxwx8j;{i(}m=T5n$mip#x#O)>j4}E<9aeMAx>zCgq8~x<^Hhb+G`5gOyR&%`> zzT2PvxAXh~@7b~k=F301XEgu5>H*b+m#1c(|L7$@-?(8nLk!ci{oEd!ljn!rWz{JW zpYZJ5N1J(Mm8z%}v*X_${+iFd(J$}5UtW1($rNE`)67|umQ7JH zEzQ|GY0{KQM%(t-{juD4%-DS0)5+`i$DTe}_kL}7@rUf$vutMdyMH#eEL<6Do9s7v z)}+AezBcaRyO&IP^XAQ&t^TQ^>RA>t>rxp$@6*s@grzXj{SHgcR1BpZ5`RPQtlYcT ze$tkeTW3qG-a2oS&daZ}c-We!1gRZ!UmTdV_GkIkSxc5&-#_b0o!i~SAb0icGlFJ) ysXDvzwzZX&*X?b~-~G<)x6j_s$iVQR=`ZuF&~-)gebqok34^DrpUXO@geCyPTBo=G literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_helmet_steel_preview.png b/3d_armor/textures/3d_armor_helmet_steel_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..4a91205ddc03564551baeeedf404f088b333e840 GIT binary patch literal 1161 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 Rd5PYG4+zHI{vz(o{{ZP;6G8w0 literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_leggings_mithril_preview.png b/3d_armor/textures/3d_armor_leggings_mithril_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..6b936f60402ad2e5fd8ab83602b1a496c67bf251 GIT binary patch literal 1917 zcmaJ?2~<mi4MFc-Y ztAHV*5D)~6hEWDvfyj_#S($~HO7U}d0cu%WUMXL+BagYe0tywVZL~sV zW?j+M}DC|@6kjj~; zE+3PC$Apx*5KMVK|wiA;P*=> z3;}~xOriE?)yi-h`29XqtYumoFzBfT8lz=Rpun15>$TKGDl!ZBjXnb^=gU1?)B__n z`I7Q47@PKwXZV{?{j9g49TPLA(8IbMf4L}b>Vf;)@THZ?{0jZc2?o>g)%3&WywVm5 z6YpCh=3&fFVkjYp6Fc76Tf|MU$#l|(YPeNvO~M=K00qiUhUutPSk(gPhQs2B^|!pg z|4t<9$PxT*6K>O;pQqT-eRks9g@U72R+qFEceTuxZSkII+Ow1+V7JTMau-J02j-R^ z&e7V=4Cr)v1EwG00}1NIwmlGzFb<|>i!c`jh3wE>{KxTjX%7{_gn(L@MGq7uEr+Ah z(pv)+6&wAIs1;YKuEK!@2a;W#T+(V|JY78G8fMbJS(r>QxysWfiv$m{A9?$ZG)`9Q zQwM#+M({tw!|VEcIIk^2N(@P*pYTxi>&cI|j{e87&ZI#2-m?_05LY9fh-bzfbpJ|o{;*6)uJHJvJ7Wn(wnKKB|J~yK! zB=C9Fv20-mPySiKsD}ha-OUcXI22~t{riPD8EcVX0U!;JA11jh?sDk6@{tbJvB!< zhZgd6HQPM5h8Gv0P&Hyk$2%IFOIO4ros$xZpLH;+6}ieS>VK#&NFz}S=ylwvo+sj0 zfr&=b@(s;|VKQGsbC9tp@Yu~C?PX(#tFCwuSxLZRJgijVzX$su)u36}$ zIlCB9DV@g=XR&78va26H_q^#cSK5$Q%IN(;i-+%MSb1DRM;vDCKy(<)&3)-Cd9`=D z+Lz0vu?)v|{rMux!r7U9>0VKu&3ytVw=cN2ujkN3NtO%2sp8l9yH`8U+}G!vu_jh> zM8GV+akbV-E<+$Mi-l2JsnoD;7J*OC9~RukJ$faQWFTTbmawXff!BbdKIxea+j;Lc zMOMHiQ3COOC&uI;YOT#*-gQ7P)R+8(aJEL&4Q$#Cl`eV5h0m8JXRciUpGpU`6F*J- z(tr3VUOEYN7;g`NymR^|8|g@kDgO`mH%BpNX2{5$NY=@|$l9*nQr0F|c2?C1%kGAtQCp1vbjdgL*h<^(AlQ+U zQP}UE)qIozPQc}iBwFzW$O3{86yQE0yPvaXtkCzYu)p$|Lp(lb^d+!K4@Wi3+KdI3t02=W8!`s^h70hAaPgadR2Sncdm zy~gx-@WFHdFtao~AmC~_Qm=%a2-zC|8#hK+KwPlAgtu0ZOgk*U#t3pQPl>9+L7wvAEaG+Dg+SrfgzOI}_ibG;*mHVttn zBSxCrTYg1aX3)=c97`^tCp@ZEv=?74jV9d+5Z-9Y@T?E>Bo!;Ng~--M)(oZkMQD*c zqcf+en*(8*YLju1>sj;psh{~Q@WW}Mj<^Lu%nyNA5=#g!ndHU|nHqYXv?*Z@{${6^_v@}LKNGA+e>!%0wA(Ltsws0%ZF z>aRZ*7lDu;<|S*bTwz~hNcXvS#GtdZjp6Vs(BH4#xl6$UJpB>n0vCi=@YTjG4^bp6 z6S7PBbk<+Dm=6NKlYuTpE*2j#2TWF=SURjD7`ewt9kA}F?J$U?$!T-&^e?cQ1A^5F z`uno0;^}^DC(FuOKyL^}dK~Rj-N1Z zLB5NzMRD005L!Fc&8D+ZU24^n`XSj`ftnXdTlkUtw*Ej^17enwA&2s8_chkV%EYGlU+MhTR% z=jX>9c^TVg(GM_%Htat;p)Q=`SIx^W&PZblK*3lu8;z=tGRO)2i)8PG<7a_+&Pl_;ZgArD#7#~1#}nUQY% zD#?}RAS~smz?a9bS%|Wlo-}95drrsbT1CXR$*i?u^*3Xho2>HL`7Td1Rlz``4{v|08a>~J;<}gc#iC&5 zvF$Dz$bVzgmP1jvLxlB1(@Gn)&panv#~k)w_n}HwOCjfp5$?RaS?=pRV_MlQRzj1V z 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 32c173b..8a3bb2d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ Modpack - 3d Armor [0.4.1] [mod] Visible Player Armor [3d_armor] ------------------------------------- -depends: default, inventory_plus +depends: default + +recommends: inventory_plus or unified_inventory (use only one) Adds craftable armor that is visible to other players. Each armor item worn contributes to a player's armor group level making them less vulnerable to weapons. diff --git a/shields/init.lua b/shields/init.lua index f7845a3..ff59b4b 100644 --- a/shields/init.lua +++ b/shields/init.lua @@ -63,12 +63,6 @@ end minetest.after(0, function() table.insert(armor.elements, "shield") - armor.formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]" - .."list[current_player;main;0,4.5;8,4;]" - .."list[detached:player_name_armor;armor_head;3,0;1,1;]" - .."list[detached:player_name_armor;armor_torso;3,1;1,1;]" - .."list[detached:player_name_armor;armor_legs;3,2;1,1;]" - .."list[detached:player_name_armor;armor_feet;3,3;1,1;]" - .."list[detached:player_name_armor;armor_shield;4,1;1,1;]" end) + diff --git a/shields/textures/shields_shield_bronze_preview.png b/shields/textures/shields_shield_bronze_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d13262b551716e04eefbba0f0ae995a1030713 GIT binary patch literal 1892 zcmchYYgCfi8pk(y!3$2AIVmeghMJke8g~YRXGmCof^@NO_}DNkx=uN-Z<9 zDNP-;LR` zzga#9Jxz>IMgRa4l9#(5G%^8z0Rw$#Mt`4H2@SA#KhM3Ou6N@Uw9pUR@97RSTFTlg zZ$J^lQ(i~o0WdbxJ}^*NYykxk38Vuah_|{(b6rc<;HR&kjpHPDSO28fv%ejPS^u*I zQ%sH2>>~wLEo{g{hpxqZjWygt++=ENl9h$JT49K=%?)$1Y$?c;5}tZcQ~b)mYE7y_ z{DkaUGOLwlfOY=aJLTPeD!2St%Gq}^pLI!Gk=53wo(D1~#B(7vl15v+t)z3Ii3cP` z+tAw!ShIgl=LCzIvMHS}lg$QhdO00Z(=aywEX1uFR!MH7Bw6P6C8qU5HmGoxqt)e! zA$)36?}ugLcxm+y@J_~(kT!dA8aMZNtUH2Lu+h*dFEqT~P-v~|wcCIRxyA%p7I_xW zzRQb*VeiDMbiN{f37e*XOXmhxUot`NkFeGq>(AZtC4_YCKR#fbODgzR);jc!OUY%w zw0TB>C_vD{EOK$**8%f>wZ-nF4Del$&nXuA6@@I3j0rxb%I&>=@UE_fO@JMm4^NeT zxL%=I!QtV9eZVY#a#IxysviV87S8%BDpd0iCQ!^DI^{6`+cShInr~Uwc<-ZJZC_*1 zz$fc3#DpSSVw$G(wv5XRe9|pmtys2?RrsvRS(Wsw>97IJ&*b4n9XNpSzb>7(AA&ED z=y6f7=M%ph_+0B=w2DfB1sWaU=s!u5w-l8olFncK`D~vJhI4tQZ}!%c1+lQwa4drNpQd9#ykSTXrR|d4IVFh&g|ZR zd~x>~=I!Ln=^e)u^?Y`rTFe*H0ym>J*gN1|Ic^aPjS^w0RrC2W0YlI>u8+;4g{IvJ)-1Q_3NJU^s1#?}Qh6nI?(N&kQKjnLqAFu?n{N+SI$ZEM zU;CTol@f~eky$DuVH@px4Ugen-F#}|dxm~f!~LZ3871}@P3eZkH}B?*?h>n6?<7+Nlz;O{Rr{N*Y|)+3{4dx6r)k4Pb72{4^bcNqy^w2XUei2FbzU=K`{aN? zS43A>ww~_+!#-=R6;Qotq4<*kIeh6ReM(yOQ4afc>;XrdBDu z)zzc%<>uxtt#>Yd-egP&>ae5)IXh5$@)I{sM|*?{lNLW%6mJ;*|BS*u|0 zE`-jr@D~F21UT8MFIFToc_UGeA zj~pGQwC5$6$&$U7j$zXxx_62u)~v8b&lxhjN7`9Ap2aO1cIC4CW^78>@sn5Z8R>ZI z+|{GaM3tG!;BG0$Le+m)`pe4CZa*x|V2ok$IQDXkQl;q7Lc*ID~ z@{83AieU19;BYR!Hgp-~+$)}u|J6IljXC}LA$w44oD}ILK=Kyes8W9bXb2yj9aY~> zUekoMhe(XD$NKAB^2qv;VPt9@18@1MLMXDCd~xw`<74g=PRwxn9L{^OS1J8y?SJl< zRig<&cVw+L`TvJ)cDFar4UUZHnO0{u`UVs=Hg$>JQ^hw@@wQzBHH&sgUZBm9BaN7_ z&c1Q?7~<0t#Li2CINxk(r?Rb3XndZ4y}6Ii;54STskQ$~sGYFW!0m?{YSJ1KQ?+Z7 M$3geHy`ks-4a%nlPyhe` literal 0 HcmV?d00001 diff --git a/shields/textures/shields_shield_diamond_preview.png b/shields/textures/shields_shield_diamond_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d67f4844d5c90cc1ca3e633112c5abb8670827aa GIT binary patch literal 1838 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 DHoMz} literal 0 HcmV?d00001 diff --git a/shields/textures/shields_shield_steel_preview.png b/shields/textures/shields_shield_steel_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd2b6487349c5e92825b53c83fa7adeaca00d4c GIT binary patch literal 1850 zcmb_ddpy%?82`;i$YOmr5R&M+sMYDhZLRI6MnVw=lMD!EM8m7EqzxkgLu zV9Ys%+HtHSCYOy|a$J|&STj2tN2hj6n@av2`FyT9g+?dF#B8)fJBC@>fGB>jna9fZ#V#~ zTqFBIK*j?tsdB|dHxK6(Jcx>hg4u6v@?O$~m2L<}G`?eu%08!lQmY{ocdEQI(#=mT z&(ewH53Er~tGJy*OuU0k1R$UY##X##)HWDu)4cq{Ye~8cf&PjXBO~&(_vvl7(j7|g z+|~SYI~0feGy^Ev^2gIcLg=rW2E$1)qNd>7(#+WI!B{NT2O>2@_BCH}>i|`E{ednu z{haziI}VYpn}mf+9=u8J&qzg-3y4oyM2vGP77;vKuxB;?;-#57qfxw?{(wFpC&MPp4;U3TGDCh#V);iDUdtDf z#|2wJa})rG45SvNo+sIgFB|2~Zm-tb#Q+?CH9_409JM*|s|8jE!JgoyZGz|3x5^va z9xtuUc?RCOuv1^h0_tw*7R?6BElqK-##$$>?)ivW2W~d0<=gw8o*T6P49kjCwb;?1 z

277jb5dKGX;7xaQ5Hg1HRPKh_9h2*C@*)-{nx@Q|+Y&b6 z(neA)6JUKYIz?oJyZ7r6wVPNwy$?Z}H|@3kNP-eX8lnVAzsRz$i*AncfBjQbj2_vC z5SnmLPr?^;mg}$fNJ)pYv)T-{i@1|%*!H!#(b3Tap`GjW%*-|@WRdkH?!Rr9UH`8V zxiJR&PT>%o63BGlbz4bguZ$VM6TFj`9@i^gQy~7O1xyi%L}O7L$TXk=A^{Fipit+P zB*;CI&L0{&FqXJV4^6=14-Z(WZty02?kLj`F9bI5ygH9nOr~V7STy=9iE>?NY;T?4 zVJ^A2C(=~Xh{d9LrO|Yjsi`TvyE0&%%E$GocHk(}-BNBvAtU@|+CWqeVqC-PMT1(EeA1|L= zhOgTlI9yvxV)>N^Cs7BhMnBLD%lE2$Pni-jScZm%G)os8&T855B5-@K_sO7{=K1F4 zTdV`>`A1DO152yoDvqYb+Roy;BBK_QE=%F?`ta~6+SI)3b-lV`ou4h8vOTZ;o|2M6 zYv=OBv2~avJwQ#0JP?OOqgBBN!}d@b8XCNsPHcx)1&PLOyVv(|#oV#Anwn@HgAg9< z;iS5l@hw1MVE?CMaOT7p14`o6tC+z7v+;C(TDzm#>rlSG&H1*?^~U4x7m2Br6oBl6 z0nE9T@%YWC#!_6mAB?@Dcb(xz?=GFzR4rKG>*^$~ov@Aj*tE@LZJZvmQ7MeiWL^+g zTKD*<>Uwt4>GVQdYwLm+d=VVw?w&WwbM4_7_iz-cR4RO}auhWnG}8Oz>=fv(X>DSz zS<6_?tUxf?d_qwgR}Sb_Q)?l!Ag2F~AH0g+m-+CaH{sMNmy@`V?rL5)hx4gXG*e9y zR^f&~(ozf}X=kk(k((VS=SRddsqDG-DqIOGAt8Y_0)#@JM~rw==;ykNC;M~!M^vdI zg)V~q*Px(0EMfu=w?b@iNLp0X=%-uC8%d+ zMo$yfhL*Xxi(BnFAP}sQ#(J(yOiBA^iXhngvs$R7Kr9uY zuPq69Aonkq@!N~}|MW=_M#x@AGT9>;>03mGcNCR*5si994^Nc(ZmUPXOgz4YbA(V? zr~xx1zT1QWD?Q!})3Fm>!=xJ5@V#Og7}}PBu!>=tPiGD10(kN509x+Hfylm$CyHkv Ql`@T+^L|9JQ^2La01vO{vj6}9 literal 0 HcmV?d00001 diff --git a/shields/textures/shields_shield_wood_preview.png b/shields/textures/shields_shield_wood_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d8484d981d89d8da9204b085c4af816b429f0683 GIT binary patch literal 2126 zcmcgtc{JPE9{(jGF~W@HnHse6w2IM+sXd5rq^PyUtJV^&sxq%aV=1wOPK#2;7;6$s zH`_F(Rg9QeM$s0jtxXZTCiWmz4HA<~-<$W|Iq$!B&byy;@AuyCx%Yd&_xt^v@6GUV zbC8!+lLY`k-pSGaj98KY00hWD#WSKHsZuOJgfk9y0F9}!C|*D>Iy=|{`x2BhD)Ype z&mtVp5dZ+LEa@PigrX`|!lIm9v9L*qoQjOfJg#G3tYJFY+j?CeTc!5my}VW1+lV}? z^Rkb1p*QW$V-8ir=fFpzv}KBnL6>gQvNGVxY^8~!bbV#BaQ~9$HUsvz%av?FkG@~8 zdWeaWEpUi?>T#JfIR};(wibt44u#@*LZRt=L`e86ilBd+%3~MGh`o@s`_jnpgJGde z?}>s9>qu|(GeM4*L@nChol@?Lbw}M+T--;$d=ael zdAo-qsC#D zRh96V6dV5})wN=D0v7l=AR~dH zQ2UH5)atT#Ao~sI2OMdF#8_)A)JQ#8=Nsx65y}$gq4H0Z_U`O)m44ol~nLz@AFC`?nGyt}28o5SF;P)k{ zW}~}BQzwAbeM`qd%4T<#x|lFS7qb8ssK=~sBJ1-s{)(=*8L z?J=#N-e@xoZ&A!$$WA{yqyCX}UbhDVKUXN!KnJ)Ts$W!xNXes1!zPOh#B4IvU&Ha4I(pr#aMEW^rl7WHjO(y?+>89+DH)5}$25H7E?H zd{Y&gje#J*nBx|)J>!;M#8+m-i=$Kf*Y*n@`KALNl`;`CRZKx<$<~^I{1VRH)3kC- zyOJM-u1)NVM^TTL6nd|=LE$w*?hM|W*hM#6Mw8Aa+f2_IL%BJLm9f7>XF5Ot4v>fS z{dPHP3E%tM%|1}z4_cVAYQDPEs(ZykmOuUAt%|TO*u#Rz4ZjJh-^t3lcgThXwdP7( z!-2jxJev@Xt~1L@`1rf+CVYfZs9X%A$v--9qjuR^>yPY>pkPJ8n}ZRjx%FHldbf&a zCt9|jgTZT_5De2Y$x-?h76Yc1wcD|sBX9F;hq_5J7+FB#RKAZ%*o1(c8$Qae$O-1{ z3w~v~&y5xgx2i

(^GRyCliEqTyB(Nmn+PQ=3tmWkPHn{Ftw$h~EC-5aW%_aL@EC zeuu9Bas-ipc8&782RYx>8-*AYE3rnNNmB>x2xo}sfv=tfXMaGRSmxx|G1?N`Vp&E) zxNCpHw>~^1-zLg^NA=J1O4vO20wjJodaHs!=OmnDQR@3qaqjMAvw;?Vco)*Tpq z;)*C~w->elrP~63=G4*TG5*}$-L4Xt?qZOb1JYum6G*2hssnVG%$@fp7FeXAmmPxE_BYGdrf#FyW&5=^6-u^1|csXThp5NoE` zbNvA$Xo;u7Zj8UTqrgbprY~yT5Ls%ksmMueD0h%w+BAlhqLY~cutF17^PM6{(~}^6 zmUl~C;2{$He)5>h zLNt|1%{aI|NtVv