From a8bb3f83fd0f81aae5f3466d78514dbb143f5c2a Mon Sep 17 00:00:00 2001 From: jp Date: Mon, 23 Nov 2015 15:53:08 +0100 Subject: [PATCH] Enchanted armor \o/ --- LICENSE | 1 + depends.txt | 1 + enchanting.lua | 187 ++++++++++++------ .../3d_armor_enchanted_boots_bronze_speed.png | Bin 0 -> 261 bytes ...r_enchanted_boots_bronze_speed_preview.png | Bin 0 -> 297 bytes ...3d_armor_enchanted_boots_bronze_strong.png | Bin 0 -> 261 bytes ..._enchanted_boots_bronze_strong_preview.png | Bin 0 -> 297 bytes ...3d_armor_enchanted_boots_diamond_speed.png | Bin 0 -> 228 bytes ..._enchanted_boots_diamond_speed_preview.png | Bin 0 -> 334 bytes ...d_armor_enchanted_boots_diamond_strong.png | Bin 0 -> 228 bytes ...enchanted_boots_diamond_strong_preview.png | Bin 0 -> 334 bytes .../3d_armor_enchanted_boots_gold_speed.png | Bin 0 -> 231 bytes ...mor_enchanted_boots_gold_speed_preview.png | Bin 0 -> 344 bytes .../3d_armor_enchanted_boots_gold_strong.png | Bin 0 -> 231 bytes ...or_enchanted_boots_gold_strong_preview.png | Bin 0 -> 344 bytes .../3d_armor_enchanted_boots_steel_speed.png | Bin 0 -> 221 bytes ...or_enchanted_boots_steel_speed_preview.png | Bin 0 -> 245 bytes ...armor_enchanted_boots_steel_strong.png.png | Bin 0 -> 234 bytes ...r_enchanted_boots_steel_strong_preview.png | Bin 0 -> 245 bytes ...mor_enchanted_chestplate_bronze_strong.png | Bin 0 -> 446 bytes ...anted_chestplate_bronze_strong_preview.png | Bin 0 -> 564 bytes ...or_enchanted_chestplate_diamond_strong.png | Bin 0 -> 392 bytes ...nted_chestplate_diamond_strong_preview.png | Bin 0 -> 436 bytes ...armor_enchanted_chestplate_gold_strong.png | Bin 0 -> 389 bytes ...chanted_chestplate_gold_strong_preview.png | Bin 0 -> 404 bytes ...rmor_enchanted_chestplate_steel_strong.png | Bin 0 -> 420 bytes ...hanted_chestplate_steel_strong_preview.png | Bin 0 -> 408 bytes ...d_armor_enchanted_helmet_bronze_strong.png | Bin 0 -> 399 bytes ...enchanted_helmet_bronze_strong_preview.png | Bin 0 -> 334 bytes ..._armor_enchanted_helmet_diamond_strong.png | Bin 0 -> 367 bytes ...nchanted_helmet_diamond_strong_preview.png | Bin 0 -> 382 bytes .../3d_armor_enchanted_helmet_gold_strong.png | Bin 0 -> 359 bytes ...r_enchanted_helmet_gold_strong_preview.png | Bin 0 -> 345 bytes ...3d_armor_enchanted_helmet_steel_strong.png | Bin 0 -> 381 bytes ..._enchanted_helmet_steel_strong_preview.png | Bin 0 -> 346 bytes textures/ench_ui.png | Bin 1937 -> 2160 bytes 36 files changed, 130 insertions(+), 59 deletions(-) create mode 100644 textures/3d_armor_enchanted_boots_bronze_speed.png create mode 100644 textures/3d_armor_enchanted_boots_bronze_speed_preview.png create mode 100644 textures/3d_armor_enchanted_boots_bronze_strong.png create mode 100644 textures/3d_armor_enchanted_boots_bronze_strong_preview.png create mode 100644 textures/3d_armor_enchanted_boots_diamond_speed.png create mode 100644 textures/3d_armor_enchanted_boots_diamond_speed_preview.png create mode 100644 textures/3d_armor_enchanted_boots_diamond_strong.png create mode 100644 textures/3d_armor_enchanted_boots_diamond_strong_preview.png create mode 100644 textures/3d_armor_enchanted_boots_gold_speed.png create mode 100644 textures/3d_armor_enchanted_boots_gold_speed_preview.png create mode 100644 textures/3d_armor_enchanted_boots_gold_strong.png create mode 100644 textures/3d_armor_enchanted_boots_gold_strong_preview.png create mode 100644 textures/3d_armor_enchanted_boots_steel_speed.png create mode 100644 textures/3d_armor_enchanted_boots_steel_speed_preview.png create mode 100644 textures/3d_armor_enchanted_boots_steel_strong.png.png create mode 100644 textures/3d_armor_enchanted_boots_steel_strong_preview.png create mode 100644 textures/3d_armor_enchanted_chestplate_bronze_strong.png create mode 100644 textures/3d_armor_enchanted_chestplate_bronze_strong_preview.png create mode 100644 textures/3d_armor_enchanted_chestplate_diamond_strong.png create mode 100644 textures/3d_armor_enchanted_chestplate_diamond_strong_preview.png create mode 100644 textures/3d_armor_enchanted_chestplate_gold_strong.png create mode 100644 textures/3d_armor_enchanted_chestplate_gold_strong_preview.png create mode 100644 textures/3d_armor_enchanted_chestplate_steel_strong.png create mode 100644 textures/3d_armor_enchanted_chestplate_steel_strong_preview.png create mode 100644 textures/3d_armor_enchanted_helmet_bronze_strong.png create mode 100644 textures/3d_armor_enchanted_helmet_bronze_strong_preview.png create mode 100644 textures/3d_armor_enchanted_helmet_diamond_strong.png create mode 100644 textures/3d_armor_enchanted_helmet_diamond_strong_preview.png create mode 100644 textures/3d_armor_enchanted_helmet_gold_strong.png create mode 100644 textures/3d_armor_enchanted_helmet_gold_strong_preview.png create mode 100644 textures/3d_armor_enchanted_helmet_steel_strong.png create mode 100644 textures/3d_armor_enchanted_helmet_steel_strong_preview.png diff --git a/LICENSE b/LICENSE index fc2d19b..ae124df 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,6 @@ Code : GPLv3 Textures : WTFPL (credits: Gambit, Cisoun, kilbith) +Armor textures : Copyright (C) 2013 Ryan Jones - CC-BY-SA ============================================================== diff --git a/depends.txt b/depends.txt index 8ca3bd9..ff71542 100644 --- a/depends.txt +++ b/depends.txt @@ -3,3 +3,4 @@ doors xpanes bucket oresplus? +3d_armor? diff --git a/enchanting.lua b/enchanting.lua index 3ba2898..a16aac9 100644 --- a/enchanting.lua +++ b/enchanting.lua @@ -3,21 +3,33 @@ screwdriver = screwdriver or {} local xbg = default.gui_slots..default.get_hotbar_bg(0.5,4.5) function enchanting.tools_fs() - return "size[9,8;]"..xbg.. - "bgcolor[#080808BB;true]background[0,0;9,8;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,3;]".. + return "size[9,9;]"..xbg.. + "bgcolor[#080808BB;true]background[0,0;9,9;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,4;]".. "image_button[3.9,0.9;4,0.9;bg_btn.png;fast;Efficiency]image_button[3.9,1.82;4,1.1;bg_btn.png;durable;Durability]" end function enchanting.swords_fs() - return "size[9,8;]"..xbg.. - "bgcolor[#080808BB;true]background[0,0;9,8;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,3;]".. + return "size[9,9;]"..xbg.. + "bgcolor[#080808BB;true]background[0,0;9,9;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,4;]".. "image_button[3.9,2.95;4,0.9;bg_btn.png;sharp;Sharpness]" end +function enchanting.armors_fs() + return "size[9,9;]"..xbg.. + "bgcolor[#080808BB;true]background[0,0;9,9;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,4;]".. + "image_button[3.9,0.9;4,0.9;bg_btn.png;strong;Strength]" +end + +function enchanting.boots_fs() + return "size[9,9;]"..xbg.. + "bgcolor[#080808BB;true]background[0,0;9,9;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,4;]".. + "image_button[3.9,0.9;4,0.9;bg_btn.png;strong;Strength]image_button[3.9,1.82;4,1.1;bg_btn.png;speed;Speed]" +end + function enchanting.default_fs(pos) local meta = minetest.get_meta(pos) - local formspec = "size[9,8;]"..xbg.. - "bgcolor[#080808BB;true]background[0,0;9,8;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,3;]" + local formspec = "size[9,9;]"..xbg.. + "bgcolor[#080808BB;true]background[0,0;9,9;ench_ui.png]list[context;tool;0.9,2.9;1,1;]list[context;mese;2,2.9;1,1;]image[2,2.9;1,1;mese_layout.png]list[current_player;main;0.5,4.5;8,4;]" meta:set_string("formspec", formspec) meta:set_string("infotext", "Enchantment Table") @@ -34,38 +46,39 @@ function enchanting.on_put(pos, listname, _, stack, _) if listname == "tool" then if stn:find("sword") then meta:set_string("formspec", enchanting.swords_fs()) - else + elseif stn:find("pick") or stn:find("axe") or stn:find("shovel") then meta:set_string("formspec", enchanting.tools_fs()) + elseif stn:find("3d_armor:chestplate") or stn:find("3d_armor:helmet") or + stn:find("3d_armor:leggings") then + meta:set_string("formspec", enchanting.armors_fs()) + elseif stn:find("3d_armor:boots") then + meta:set_string("formspec", enchanting.boots_fs()) end end end -function enchanting.is_allowed(toolname) - local tdef = minetest.registered_tools[toolname] - if tdef and toolname:find("default:") and not - toolname:find("stone") and not - toolname:find("wood") then - return 1 - end - return 0 -end - function enchanting.fields(pos, _, fields, _) local inv = minetest.get_meta(pos):get_inventory() local toolstack = inv:get_stack("tool", 1) + local toolstack_name = toolstack:get_name() local mesestack = inv:get_stack("mese", 1) - local toolname = toolstack:get_name() + local modname, toolname = toolstack_name:match("([%w_]+):([%w_]+)") local toolwear = toolstack:get_wear() local mese = mesestack:get_count() local ench = dump(fields):match("%w+") + if ench == "quit" then return end - if enchanting.is_allowed(toolname) ~= 0 and mese > 0 and - fields[ench] and ench ~= "quit" then - toolstack:replace("xdecor:enchanted_"..toolname:sub(9).."_"..ench) - toolstack:add_wear(toolwear) - mesestack:take_item() - inv:set_stack("mese", 1, mesestack) - inv:set_stack("tool", 1, toolstack) + if mese > 0 and fields[ench] then + local enchanted_tool = modname..":enchanted_"..toolname.."_"..ench + local tdef = minetest.registered_tools[enchanted_tool] + + if tdef then + toolstack:replace(enchanted_tool) + toolstack:add_wear(toolwear) + mesestack:take_item() + inv:set_stack("mese", 1, mesestack) + inv:set_stack("tool", 1, toolstack) + end end end @@ -75,15 +88,15 @@ function enchanting.dig(pos, _) end function enchanting.put(_, listname, _, stack, _) - local toolname = stack:get_name() + local toolstack = stack:get_name() local count = stack:get_count() if listname == "mese" and - toolname == "default:mese_crystal" then return count - elseif listname == "tool" then - return enchanting.is_allowed(toolname) + toolstack ~= "default:mese_crystal" then return 0 + elseif listname == "tool" and not + minetest.registered_tools[toolstack] then return 0 end - return 0 + return count end xdecor.register("enchantment_table", { @@ -113,41 +126,97 @@ local function cap(str) return str:gsub("^%l", string.upper) end local use_factor = 1.2 local times_subtractor = 0.1 local damage_adder = 1 +local strenght_factor = 1.2 -function enchanting.register_enchtools() - local materials = {"steel", "bronze", "mese", "diamond"} - local tools = { {"axe", "choppy"}, {"pick", "cracky"}, {"shovel", "crumbly"}, {"sword", "fleshy"} } - local chants = {"durable", "fast", "sharp"} +local tools = { - for _, m in pairs(materials) do - for k, t in pairs(tools) do - for _, c in pairs(chants) do - local original_tool = minetest.registered_tools["default:"..t[1].."_"..m] - local original_damage_groups = original_tool.tool_capabilities.damage_groups - local original_groupcaps = original_tool.tool_capabilities.groupcaps - local groupcaps = table.copy(original_groupcaps) - local fleshy = original_damage_groups.fleshy + --[[ Format : + [Mod name] = { + {materials}, + {tool name, tool group, {enchantments}} + } + --]] - if c == "durable" and k <= 3 then - groupcaps[t[2]].uses = original_groupcaps[t[2]].uses * use_factor - elseif c == "fast" and k <= 3 then - for i = 1, 3 do - groupcaps[t[2]].times[i] = original_groupcaps[t[2]].times[i] - times_subtractor + ["default"] = { + {"steel", "bronze", "mese", "diamond"}, + {"axe", "choppy", {"durable", "fast"}}, + {"pick", "cracky", {"durable", "fast"}}, + {"shovel", "crumbly", {"durable", "fast"}}, + {"sword", "fleshy", {"sharp"}} + }, + ["3d_armor"] = { + {"steel", "bronze", "gold", "diamond"}, + {"boots", nil, {"strong", "speed"}}, + {"chestplate", nil, {"strong"}}, + {"helmet", nil, {"strong"}}, + {"leggings", nil, {"strong"}} + } +} + +for mod, defs in pairs(tools) do +for _, mat in pairs(defs[1]) do +for _, tooldef in next, defs, 1 do +for _, ench in pairs(tooldef[3]) do + local tool, group, material, enchant = tooldef[1], tooldef[2], mat, ench + local original_tool = minetest.registered_tools[mod..":"..tool.."_"..material] + + if original_tool then + if mod == "default" then + local original_damage_groups = original_tool.tool_capabilities.damage_groups + local original_groupcaps = original_tool.tool_capabilities.groupcaps + local groupcaps = table.copy(original_groupcaps) + local fleshy = original_damage_groups.fleshy + + if enchant == "durable" then + groupcaps[group].uses = math.ceil(original_groupcaps[group].uses * use_factor) + elseif enchant == "fast" then + for i = 1, 3 do + groupcaps[group].times[i] = original_groupcaps[group].times[i] - times_subtractor + end + elseif enchant == "sharp" then + fleshy = fleshy + damage_adder end - elseif c == "sharp" and k == 4 then - fleshy = fleshy + damage_adder + + minetest.register_tool(":"..mod..":enchanted_"..tool.."_"..material.."_"..enchant, { + description = string.format("Enchanted %s %s (%s)", cap(material), cap(tool), cap(enchant)), + inventory_image = original_tool.inventory_image.."^[colorize:violet:50", + wield_image = original_tool.wield_image, + groups = {not_in_creative_inventory=1}, + tool_capabilities = {groupcaps = groupcaps, damage_groups = {fleshy = fleshy}} + }) end - minetest.register_tool("xdecor:enchanted_"..t[1].."_"..m.."_"..c, { - description = string.format("Enchanted %s %s (%s)", cap(m), cap(t[1]), cap(c)), - inventory_image = original_tool.inventory_image.."^[colorize:violet:50", - wield_image = original_tool.wield_image, - groups = {not_in_creative_inventory=1}, - tool_capabilities = {groupcaps = groupcaps, damage_groups = {fleshy = fleshy}} - }) - end - end + if mod == "3d_armor" then + local original_protect_groups = original_tool.groups + local protectcaps = table.copy(original_protect_groups) + local protectcaps = {} + protectcaps.not_in_creative_inventory=1 + + if enchant == "strong" then + for protect_group, value in pairs(original_protect_groups) do + protectcaps[protect_group] = math.ceil(value * 1.2) + end + elseif enchant == "speed" then + for protect_group, value in pairs(original_protect_groups) do + protectcaps[protect_group] = value + protectcaps.physics_speed = 0.8 + protectcaps.physics_jump = 0.3 + end + end + + minetest.register_tool(":"..mod..":enchanted_"..tool.."_"..material.."_"..enchant, { + description = string.format("Enchanted %s %s (%s)", cap(material), cap(tool), cap(enchant)), + inventory_image = original_tool.inventory_image.."^[colorize:blue:20", + wield_image = original_tool.wield_image, + groups = protectcaps, + wear = 0 + }) + end end + minetest.register_alias("xdecor:enchanted_"..tool.."_"..material.."_"..enchant, + ":"..mod..":enchanted_"..tool.."_"..material.."_"..enchant) +end +end +end end -enchanting.register_enchtools() diff --git a/textures/3d_armor_enchanted_boots_bronze_speed.png b/textures/3d_armor_enchanted_boots_bronze_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c27cffb6b10c3345cfd485ce4457d7e51af427 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QpN#3A+A6=*Ovc5t7f7(@0~jN zLI;6=|Nds#@>jVDrdjfpI}6-zP^fbkj4|cCST0-RF8JrmYo>R)3P5d)B|(0{3=Yq3 zqyae%o-U3d9>?Ea*eQD0fQLDt(LD3yxqp|BF)tD94*6y4VAB_`CgN|{uP0GBY0bs0 zEt5_f?3(eqF=^YOxLNZSeh{6p>i2cukfUj{QZA(bpXl|Z?sSph`q%g38FpE;IK6bb zb4kgTe~ HDWM4f_wQpT literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_bronze_speed_preview.png b/textures/3d_armor_enchanted_boots_bronze_speed_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f3bad92b40423726894319035ab3c728bd45b4 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_gkz$e5NNK5gv<=XOBy9p+k z^FC99@ICwe`oDwn(ZT$ zI#D4ot`{dIr?>by`XBby eaDU~088C09viahxyE|8b?Dll^b6Mw<&;$VSUuh}; literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_bronze_strong.png b/textures/3d_armor_enchanted_boots_bronze_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c27cffb6b10c3345cfd485ce4457d7e51af427 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QpN#3A+A6=*Ovc5t7f7(@0~jN zLI;6=|Nds#@>jVDrdjfpI}6-zP^fbkj4|cCST0-RF8JrmYo>R)3P5d)B|(0{3=Yq3 zqyae%o-U3d9>?Ea*eQD0fQLDt(LD3yxqp|BF)tD94*6y4VAB_`CgN|{uP0GBY0bs0 zEt5_f?3(eqF=^YOxLNZSeh{6p>i2cukfUj{QZA(bpXl|Z?sSph`q%g38FpE;IK6bb zb4kgTe~ HDWM4f_wQpT literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_bronze_strong_preview.png b/textures/3d_armor_enchanted_boots_bronze_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f3bad92b40423726894319035ab3c728bd45b4 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_gkz$e5NNK5gv<=XOBy9p+k z^FC99@ICwe`oDwn(ZT$ zI#D4ot`{dIr?>by`XBby eaDU~088C09viahxyE|8b?Dll^b6Mw<&;$VSUuh}; literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_diamond_speed.png b/textures/3d_armor_enchanted_boots_diamond_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..eca0febcf1cfe40d08d4829fbf7e86d8b927c645 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQYryHA+A8$bkQP{`SUH-tSP#1 z!F=gbqnR_a&Yu1C_iygGbIGSqzx(+!X-bzJP#t4QkY6x^!?PP{Ku(^gi(`nz>0}3n z!w!#C*lHXO`7Y&I-&C@EirXHpD?P5QA3avHY0l(Q`lNN25sc=|Bg4J1; afnm;jQFEucZX!UN89ZJ6T-G@yGywoh3{^Y; literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_diamond_speed_preview.png b/textures/3d_armor_enchanted_boots_diamond_speed_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d178a54631f20bf13c2c602fc7d978d9494de78a GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_g(z$e5NNK5gv8O@w&x?q9D znl)ximK0sMkahO#ufKmUig}*{N;8!N`2{oZP1Js159B@Yba4!+xb^nxL*8ZuiI#`! zE{K*i&&p#E?$AELR@T~gw?EtI(z1<9OctH|{eyeTX-6Lm#vAKDcL@XaqJe<3s?J8K zdapOlYUuu{cwlzALp~SNI(eyFnEGpH!5lN5PyuXSiy>{;TY}USF`!7H3En&q{T9L)aIXXTUebLn^%-h#` zV@cz>b4OBxmu;P;&GBKG)&a@?Vg}oC7M!lK`6kIyU6NbR`NB7pS@XxlvZss_KI~Df SXQ(|3a;>pUXO@geCy{5rQ}X literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_diamond_strong.png b/textures/3d_armor_enchanted_boots_diamond_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..eca0febcf1cfe40d08d4829fbf7e86d8b927c645 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQYryHA+A8$bkQP{`SUH-tSP#1 z!F=gbqnR_a&Yu1C_iygGbIGSqzx(+!X-bzJP#t4QkY6x^!?PP{Ku(^gi(`nz>0}3n z!w!#C*lHXO`7Y&I-&C@EirXHpD?P5QA3avHY0l(Q`lNN25sc=|Bg4J1; afnm;jQFEucZX!UN89ZJ6T-G@yGywoh3{^Y; literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_diamond_strong_preview.png b/textures/3d_armor_enchanted_boots_diamond_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d178a54631f20bf13c2c602fc7d978d9494de78a GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_g(z$e5NNK5gv8O@w&x?q9D znl)ximK0sMkahO#ufKmUig}*{N;8!N`2{oZP1Js159B@Yba4!+xb^nxL*8ZuiI#`! zE{K*i&&p#E?$AELR@T~gw?EtI(z1<9OctH|{eyeTX-6Lm#vAKDcL@XaqJe<3s?J8K zdapOlYUuu{cwlzALp~SNI(eyFnEGpH!5lN5PyuXSiy>{;TY}USF`!7H3En&q{T9L)aIXXTUebLn^%-h#` zV@cz>b4OBxmu;P;&GBKG)&a@?Vg}oC7M!lK`6kIyU6NbR`NB7pS@XxlvZss_KI~Df SXQ(|3a;>pUXO@geCy{5rQ}X literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_gold_speed.png b/textures/3d_armor_enchanted_boots_gold_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..b62bf93443bd744e9c01e79ae8b0b572f640fa73 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQtAOdA+A9B;WdMYS9RV#Yk2p( z?a?*U$2aWmUsn11_uG@3PWLX#zj;#i=lAO=*2zqUOU!zz$)nH(^E97G!Hpf2o1!}sw`u0F_GPFsX1Cf@*Fol~9yqlUe?;Pe@bAU^1tF)N|kmeDMmvWh?RM*vV^natv)6ce& zCq)}xS6%(OICIvoA20q^gaM600}VG7-sMb)bbI;qK4a{oqn8w3o#e?-&6W4%z4R+1 z^TC$=OC6tw9xUKm>9{Jvx^<1^LHe1eyFlKnfqYw#>VX?6EboHN^frS%scRN-B$Ar|2?LE ZVhelmVr6Mi#~zT&JYD@<);T3K0RU2|iq-%C literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_gold_strong.png b/textures/3d_armor_enchanted_boots_gold_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..b62bf93443bd744e9c01e79ae8b0b572f640fa73 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQtAOdA+A9B;WdMYS9RV#Yk2p( z?a?*U$2aWmUsn11_uG@3PWLX#zj;#i=lAO=*2zqUOU!zz$)nH(^E97G!Hpf2o1!}sw`u0F_GPFsX1Cf@*Fol~9yqlUe?;Pe@bAU^1tF)N|kmeDMmvWh?RM*vV^natv)6ce& zCq)}xS6%(OICIvoA20q^gaM600}VG7-sMb)bbI;qK4a{oqn8w3o#e?-&6W4%z4R+1 z^TC$=OC6tw9xUKm>9{Jvx^<1^LHe1eyFlKnfqYw#>VX?6EboHN^frS%scRN-B$Ar|2?LE ZVhelmVr6Mi#~zT&JYD@<);T3K0RU2|iq-%C literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_steel_speed.png b/textures/3d_armor_enchanted_boots_steel_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..47bdb138743c1123f2fe59d36deeaa0d3982e258 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQgQ)4A+A6=J3BiqEiErEZ_b=K z3l}adDk}Q@`}eeI(>{Oxe7pKWLTwF`(vVW2@*`^x1l~2=8X&rz)2k`1sVm8?iDz+w2u~>kgWy{J+a2bs R6Mz;oc)I$ztaD0e0st+{PHO-F literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_steel_speed_preview.png b/textures/3d_armor_enchanted_boots_steel_speed_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..1aefd843664d758a24765b2d5f5af1b3d00c9b68 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_gwz$e5NNK5gvxw*NSnVH$y z*;!dxIXXK2`}eP{t*xb{rLL}S$3kOipdzM{AirP+zKPlo?18*SPZ!6Kid%25IPx|- zh`0voTsagW!9CgP0OLwlodibi6*+O2rik91uq?Rf+`s#KuF5ym-L;bdYJ`IaTZDAw zE-u=0RpRld#*HYaZfQd$8%A+A8$&d$!w&8@YywXUwt z%F4>o(b3%8{NKNS4Gj%WPEMw#rsd`3U%q@vIL$g4sG6}P$S;_|;n|HeASch$#WBR< zbg~1(QJ1AbY&8ytY;H)eZ_-_Mw6{XEMZ1&p;lycPqM^cfRJQOeZ{pfMWf@2K)72KD zI%ZQoiWSBb@hoS0_)^R5q;Tn-0_}{Dc@j3UhXl7X9p`d?dMx3N+7xarRyMAc+(tc3 dfd*F?8ID~L-M7~!nhj_(gQu&X%Q~loCIDN|Pon?; literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_boots_steel_strong_preview.png b/textures/3d_armor_enchanted_boots_steel_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..1aefd843664d758a24765b2d5f5af1b3d00c9b68 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_gwz$e5NNK5gvxw*NSnVH$y z*;!dxIXXK2`}eP{t*xb{rLL}S$3kOipdzM{AirP+zKPlo?18*SPZ!6Kid%25IPx|- zh`0voTsagW!9CgP0OLwlodibi6*+O2rik91uq?Rf+`s#KuF5ym-L;bdYJ`IaTZDAw zE-u=0RpRld#*RlvEY{_V4}q z_Wbng_-Vx{00001bW%=J06^y0W&i*IFiAu~R7l5S7zLwX6pR9V0MHnnBS#E{Kmc{K z!(S!c|E{hHJekU$u!9F(Y+2KGYisFL1^)8fqDMg9S0Cjf*U&~hzxhS&2$;9ms4(kf z>9PNECErJY=#*^+z@RDn3j^~1_AR;q6F?!UO&d}H*=q7J)3iy;_x|BxUe3fK6iYeS zuYg8n8=)DV>h%stlv#9V>Nz=@6nEm=5Y<)>1(Rs-JAls6i@X<^b+%bF26Z%9%|udd z2}Iw&q3mXZ+&$)YZ*tQp>htGx&?CXb+=ogya8VII>lj!R1|FRU8Ny+soOz5GQuJAjE(dQ_(yI+RZR7_VKjO-#-|0oL7)L5=0acYh4eFsXxzS o=M_vbTN(gO>^60;6nVYi7tXT`N$I9?`2YX_07*qoM6N<$f?No}U;qFB literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_chestplate_bronze_strong_preview.png b/textures/3d_armor_enchanted_chestplate_bronze_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..15cca7044c2aa0a2362c6de934d0137709c5a040 GIT binary patch literal 564 zcmV-40?Yl0P)>o63B;k0nU5<`PD@KAUf2oMr8NDFDfJRu8B&4tp! zwy-U{8s2|1(HqZZGV91Y7TEKVtISv@$Fj#85fKp)5fKrQIRgHo#|XRgb%0F-&z?X%$U{0s~sO&at#;fR11zV^AtANcIi zB44*KAQc95U3bLuTS&3s7D^h#rvYiD1}Q!Xhy{<)kOT7CH~kMdpU?g~|Ir>Hz7l|k zfL9vqcDu)b6jyHW8_po$6NV4);CCGXzR`ny=IeSGHkp5Fz6QKwi+KUJZ`@-*JHLTh z)dtJYfc3%#C~WX(M2p;jy`9e!uGmb>32ix#wFiz^Kj5MU6&m!&FU}Ep?Lk+p7qEpI)M^lrU!r&9^#=@#0va2vZUbwY+6{*4 zXE4k-gAsci;j_KFH&DPY2{7cB$ekuW@ohk3!=ixY4XkNuHyEm)fh|0PD+~c6Y@$b< zfCjGzq*%E@4C&_@4EVXHAR;0nA|fIpA|fIpvd};EIR--fCKM(B0000 literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_chestplate_diamond_strong.png b/textures/3d_armor_enchanted_chestplate_diamond_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..e880f39d3b9c899ccfe2aa6b5fe21537fddaf9ca GIT binary patch literal 392 zcmV;30eAk1P)rHuXoYW`2GFy`ucy=)Ih(#?)mv$8xUy#0004WQchCMOBItj#4g4j#w3hmj=10 zlqD$&IW2O=svzCbM9FEQQK5*t3U)VG6pFihO}1(^Q7>=AuAogwsiS-6L?NX)6R|2t m3`|ZG6ip0HjZQX176$;RB|$i^hlgeW0000X8T-~Qw8U(5CD?f31o-Ld22uU`)P_uKE?`--)}3aFH^B*-tA!Qt7BG$7mB)5S5Q z;?~=%7jv5pBwQb^YuLl+lMr!GyMi?=fpz@@(M?WbFPz(7ZG5tSlh&$T3aVKWEO$YM{cj-V}C>A^O3eN2hikl9RhEs=>$lOl<*cf1JR@e=|kIyaOIYF;>rb zQ#I?E<>P{cBMT3NtbcCLwnuEv4-ug^2MfA`W00000NkvXXu0mjf5JI5G literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_chestplate_gold_strong_preview.png b/textures/3d_armor_enchanted_chestplate_gold_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..229d3fd1277daf8d9e2b08223cbd548668e94d40 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_gtz$e5NNWXtM;obALXLtOc z-tv0)y!-jRs3$jF{{H>;_s@s&+?^Ic6^tc8e!&b5&u*jv*(#ncjv*Dd-d;P{dDuX} z?P2agcJqV+R;F-;4>!429$3I7cBLuWWBYGzBLkL0Tr*3P{_N{^@rXO-*!h_iXchxQ zfU;K=hyS7qPrD|E`viTloSd$+yl*T$v;n#_T3T3g?~7iu|R%Jh%@=(R;Giv)J~B@~#cb2etP wY;w`et|&TnV2kmFegB27)z1KX4n!m@k55oOe69XRt`CUo>FVdQ&MBb@0K%QAy8r+H literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_chestplate_steel_strong.png b/textures/3d_armor_enchanted_chestplate_steel_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..62fe16e66151652aefff213e1ed588a87a3191f3 GIT binary patch literal 420 zcmV;V0bBlwP)hk^1`jl9H0vd)}u2 z0004WQchC{;{VFk3Iequ%*)TmkiDo@{BlYBb-?JTDutjFJH1 zXMMwf{ePXt4afk(j3875jFbsLiLgJQ>NJfU;bG>z86CM=>@=Ka^(bb32CP%+Il`w^ zG%RC!JVGb-Y%1K?@fpAjaCy#jX@)BO9G`$~$gHSsFybS?7}D{P*~KwnkH6AqT|W_K z7s4avq4f}!r^njY!1fm6%s4LefL=L#CawWSke=xy%BDke`0=!Bpdw|%WB8JJK$+p` zbq(MNDKf@cz^nO#MKrDfd)nmg-M#l(Qutio^BxdUFhO8}C~}+G#|B>kKneOFX#EIX&eam1>%mb=sED7=pW^j0RBMr!w@pN$v zskrs_+QwWaM*)Yx?HhC-@YU#A6f#N+TJ99fXcWtMSmZui=n~W3AN@x>v`;fu&!niE<7OR+-SD%pnVry1d?XZKH!}L2@Ir*b|w9Y|Q@ADd<<7r7jCZA`D>-Eq)2=fZ|Ve1&cg8s@Wq`(4X&C!wJEH5-?hkNRxC y*2d!;If4@{q`jV3HI|$Ic+3m&5s+l7WwQF*`PQ%L*>PZ?F?hQAxvXE3=HZ$A(F@Z^h6 z6ZhZ9*?S&xKoI=(?3q^;;)^wDI}ZBm-1z0u>#lReZyR1U4E_1`j&d8x00001bW%=J z06^y0W&i*H-AP12R7l6|kx7okAPhz0ftfHQkfg@G|1Eo5H4Ca(=Sc|3vYx)}=~b5M z=bDyz8b#f5A$L>5g4soD?dHc55E40rVF5g%Awzy#PzuJp>S2M-A>t9n6U?B}^O@B9 z(S?*61f+CHaQS*wf%L+A_(t?c;&nqu8R~}U;=Mw)4)e;qUJKzJ`htK$YQ4;h`u%rM zfFI0PLlHOC7oe5@YZ5JUL~G3|`U1kH2@shdPd30^g4sZIa@002ovPDHLkV1kWxuY3Ri literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_helmet_bronze_strong_preview.png b/textures/3d_armor_enchanted_helmet_bronze_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..323a51f3712791b148e170716c5cd765137d85c3 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_gqz$e5NNb{63Ob!vLa1ki5 z=g+d?zgMsLpjo}kU%1&@=t7z7pD(XpuPaWq`~i0pOWdUsq4O@Ch~CD!Yu#+NRjY0ZWZW)GbCk?D zm^%M`!aJ$cMYWAnXWJa{`gpi2dBJyX3DF*+nN=A_F7SMwUbWCnj;+dHZd%vt3m5g#Nyb`#?c~3L5NxGadOCvU9n^ PJg}svtDnm{r-UW|FMfbO literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_helmet_diamond_strong.png b/textures/3d_armor_enchanted_helmet_diamond_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..083e981d7701f0d8a9c339a95f9b10c8074559c1 GIT binary patch literal 367 zcmV-#0g(QQP)P)t-s0000v ztgJPnqHoX7V9Lrjr>A7g%kBC3J-E0#v$Hy{uRp!LbI{N^uCCeg@@&q|T*=Aj_xEbe z%|E`r^ZWaH($X`Un%?vCq2J$7ryvOc0004WQchCFX@d+$|VnH8YR?4FnK4#ERjCsF0$VXHW9k;9#U~sd{YRwC=gIm1t7|EVl$cL`7beYALL=xCZAap9hlrCp zVCzfC&EO;RxY&#rwFM3>DWxIuci$)zcIKtZggv(fFuKHoF;6h7qqYSz^eO=JEN?0| z1#x)!Ju41XxQIa8|F88bK;=~3#E#tl|5oS{OPRiosarg5Zf?frmXCVhR3K#*;1l8sq`7k$_!>YYS2Kgf z>ec4Um)q~%Yqof??T#G<=g*riSYWkrC+~2=LYOL1k}jDS`y?J z%)rMd$jj=)tO^wP}G1`Mu&c3U}ff8G9{=Ka9;m1juDD~9J0JiY7W z5+|IUv+$#=^OTBgo{cjV9U2#XOdRkIm6ENAty z?YsC`^2b((pNID+tYlqw{>G2}tdDk8GqG?~v@}RvzbCBVaNsYy%%fW%Apr%T3x4yz z_?M*gU?tPH+b7>8Rd3vF`XIIXQq9}CwcKlrL7v41Dk|*#wLH%L-*QD8B<<*RR+`|9lEd*#|j=iXZ8+)(4!Iqv6&`uN`M<$&edO5@l->*I6c)-~bP zE&crP@92#4?yld`AtsI}UjP6A0d!JMQvg8b*k%9#0MJQ9K~zY`?UFfi#4rp5g_9(} zQ_}ALpK6uu$O>rFsXAd5gD%Vf+iyuDz`zRIDj`ehoWrsJxTvbs^$D1mmDVFbFV4<& zU7&?Xa#|K7kwT~ZqeKY!e&gQ-U@;~zK-{tIJHiMMtA*O&!sd}MAH*y$gj~yOfT)sW z#4OtB1#^Lr#gr1%@b$(PfR0PxT>J=g0V&*Kks=mS^=xxNC%X#>vGaxF`~pvjKmVeT z83{9!&G+wq7m)ACMOn{z2M}Ys#WHN4Wm>G;!^6YFHy`9t2LQV|04x9i002ovPDHLk FV1j-&st*7F literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_helmet_gold_strong_preview.png b/textures/3d_armor_enchanted_helmet_gold_strong_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..ddda8708c5387db6533347d4849eb42a52d02f58 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73@pq*R_FEPDL_g$z$e5NNOw02FP^bDRfI19M4`UoZn7uawKw zw?OUD0gC e0D1!r%r9o{n0GSf4AXLUkc_9RpUXO@geCxYjfpz| literal 0 HcmV?d00001 diff --git a/textures/3d_armor_enchanted_helmet_steel_strong.png b/textures/3d_armor_enchanted_helmet_steel_strong.png new file mode 100644 index 0000000000000000000000000000000000000000..ff98024d41ca0e677f329d9fe4546515411d8cc3 GIT binary patch literal 381 zcmV-@0fPRCP)+9>~<>jxhuZoI_hlhtXH8uD5_m7W{Z*OlI%5nn$0004WQchC#$(vY-S$E3mBOVVORibPMkQ73-*k;E@4;@s%O0V8%qQ&_j`F=01`p~fl{adJ&q`Z zC>r63^hct_k-0)~OqMSK)eP%Gw4C-8FVGh_J{#g3_4nRD0Y8XNiF0!83(%U(fJT(j zEG^O(tk^sPM4~T#kfF z45_&F_R>M#CI^YqJmc68@y`@ldR`^im8zxx{>e%1Pyb(5c}E zmSo;yS+iBIK!ZIe;f#rNL}6pm6X_{O8-z<5tC{Z$&*EM4KE3Cuj`>NIHFFnj5bF+i zaARL|((K25^B+kHQ`Si~rm`5loFy3H_TYQH5+f7KGog;9*=`T+=Ez#qHXgWn<`oOj dFQ}m5{7&Z0d6~Zbf;plf8BbR~mvv4FO#p0@f3yGq literal 0 HcmV?d00001 diff --git a/textures/ench_ui.png b/textures/ench_ui.png index 41f180c18d3d3535b1a5226db503750e4663ffb7..1413b7b79131d8588769944c6dbf4fedd6090154 100644 GIT binary patch delta 2140 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 delta 1915 zcmV->2ZZ?W5Rng%7Zq>>0{{R3B!Xq(0000UP)t-s0001yEEs>@?$*X>Eh+#200DGT zPE!Ct=GbNc00$vSL_t(o!=zWsZreZ%^r1g6U?Aum*dH)pVE9-BO@dwp3qHF6@&N@5 zpABE~+1(+fZ7-?T31RQ*VRFeCYF1vYetgMRt8e3%?EC8Jd^nuX=fijy^*N2_I5_2S z`0$Rt#rCVG({O)ZtPC5?V;MI(8U}s-b7vejLj)MtpGV+H0e(NfecJBEwE_Sj;V=i| zfG`*UCuBM^(m>Y-1gKNP!xX@Z0h;2jhPdWVN4Vu(r)5B9aEk!LbFOCea5aw;AeN+l zH>XJ5pD!xt!znNbH%vF@-?w1M2Z1;U1H@`>xisDJ^Spm(drTl2n4p)b*|mp6?fIy`D=Ty4UR#mgwH>jmG5w`*kg$ zEV?Bi2rmdg3@sVd5=zE8)&$sikPRDhmD7#Se8Wng!w>;vz1T_V73Z(Xl` zXv$y$5ygL}Gm&s*x6|xk6ALqlW!-L90N|BdDw8A7l0gmNg@ql62nBzD*t>LZ(1hDqu!4O@Cvc%e0avzV z;1dgQz9S!{UL&pm+gVU2f@UG94p1OAW-w#m({l(XO(4P=6)9@oA5{ix{VE}5ziD4^ zSP~&mMrSu+z#1U47J3G1Xz#>qBnRA*K0@xTETo{A8pme_XvQX47Yl!1vRJ#B!ogZI zNLf$dMPs%k?RGuLFK8acc-ym3-&BKv)RKRof$&@Q1rju^I!jaIJ5t?TRlXI2%$eyl z^+A<&dOB-j3fs%$2YwsQJuTI4tRc&(Ju2U=@K&X^mOtxg& zJHdPo=l#*3_nsS>tpkfxGVtI+W%qyTa{kcHHCHaueY_k4uqc*y{0Xi+c{6i;;U5Rd zMbmK+&uBXs_%3-7xB*!S>{d@yb^}F)=)i6|dze>^_{b@Y5K)Uc9&P&+3Ni3DL%~ff zA+akh$kmbd#17y6ovjDR%vAM1Uy@W6a5(p5;1R(dvU*wk3z|zicAZ*2Kudo&MX?A< zPL$#2?3Zc?t{8@Bdb%X00U3@+usSG~#OTY8tBhVKx9bZQHM|Z3<&NQ1?ykIG?6#!2 zR?1D}boLYjbFAJ)j&q|vThA*YIi=2`lwh+jPt_I@g~kabqOb+@8qxj20d7&C=x4u||YTK&DR~TfQ4w;8;07 zBP)e)=a|^nbSEEcT|)E3MO4__CK+KWyx@)O64$He%9&nK0C*F&LK%sPkc8Oy)F3z` z4g6%^^7XdZv+Z()r*IMS!7{tmvVDD!IzZT(={X zgbua=?Bs;I-jl+zUW8$aj?S?V+Y!A>9IiyN;ckY9xRjjT@B74JbPQ!H7r;;g!i|=J$G2_fkOmdI2nWOhJ`U$ zF|3&v8sdTg