From a4414820ae8ae66be86ec3abe3abd77c8fd9cad6 Mon Sep 17 00:00:00 2001 From: stujones11 Date: Thu, 11 Apr 2013 20:56:35 +0100 Subject: [PATCH] Add unified_skins and update for game changes. --- 3d_armor/README.txt | 13 +- 3d_armor/armor_api.lua | 56 +++--- 3d_armor/crafting_guide.txt | 96 +++++----- 3d_armor/depends.txt | 2 +- 3d_armor/init.lua | 179 ++++++++++-------- .../textures/3d_armor_chestplate_bronze.png | Bin 0 -> 1610 bytes .../textures/3d_armor_chestplate_steel.png | Bin 1472 -> 1492 bytes .../textures/3d_armor_chestplate_wood.png | Bin 1193 -> 1199 bytes 3d_armor/textures/3d_armor_helmet_bronze.png | Bin 0 -> 1295 bytes .../3d_armor_inv_chestplate_bronze.png | Bin 0 -> 246 bytes .../textures/3d_armor_inv_helmet_bronze.png | Bin 0 -> 232 bytes .../textures/3d_armor_inv_leggings_bronze.png | Bin 0 -> 240 bytes .../textures/3d_armor_inv_shield_bronze.png | Bin 0 -> 723 bytes .../textures/3d_armor_leggings_bronze.png | Bin 0 -> 885 bytes README.md | 37 ++-- more_armor/crafting_guide.txt | 57 +----- more_armor/init.lua | 86 +-------- .../more_armor_chestplate_mithril.png | Bin 1356 -> 1356 bytes unified_skins/README.txt | 5 + unified_skins/init.lua | 67 +++++++ wieldview/README.txt | 10 +- wieldview/depends.txt | 2 +- wieldview/init.lua | 52 +---- 23 files changed, 307 insertions(+), 355 deletions(-) create mode 100644 3d_armor/textures/3d_armor_chestplate_bronze.png create mode 100644 3d_armor/textures/3d_armor_helmet_bronze.png create mode 100644 3d_armor/textures/3d_armor_inv_chestplate_bronze.png create mode 100644 3d_armor/textures/3d_armor_inv_helmet_bronze.png create mode 100644 3d_armor/textures/3d_armor_inv_leggings_bronze.png create mode 100644 3d_armor/textures/3d_armor_inv_shield_bronze.png create mode 100644 3d_armor/textures/3d_armor_leggings_bronze.png create mode 100644 unified_skins/README.txt create mode 100644 unified_skins/init.lua diff --git a/3d_armor/README.txt b/3d_armor/README.txt index ad39fce..2515832 100644 --- a/3d_armor/README.txt +++ b/3d_armor/README.txt @@ -1,8 +1,15 @@ [mod] Visible Player Armor [3d_armor] ===================================== -depends: default, inventory_plus, wieldview +depends: default, inventory_plus, unified_skins -Adds craftable armor that is visible to other players. Armor takes damage when a player is hurt -but also offers a percentage chance of healing. +Adds craftable armor that is visible to other players. Each armor item worn contibutes to +a player's armor group level making them less vulnerable to weapons. + +Armor takes damage when a player is hurt but also offers a percentage chance of healing. + +default settings: [minetest.conf] + +# Set number of seconds between armor updates. +3d_armor_update_time = 1 diff --git a/3d_armor/armor_api.lua b/3d_armor/armor_api.lua index 3a18081..5ecf2d4 100644 --- a/3d_armor/armor_api.lua +++ b/3d_armor/armor_api.lua @@ -1,46 +1,50 @@ armor_api = { player_hp = {}, + fleshy_max = 20 } -armor_api.get_player_armor = function(self, player) +armor_api.get_armor_textures = function(self, player) if not player then return end local name = player:get_player_name() - local texture = "" + local textures = {} local player_inv = player:get_inventory() - local armor = {head, torso, legs, shield} for _,v in ipairs({"head", "torso", "legs"}) do local stack = player_inv:get_stack("armor_"..v, 1) - armor[v] = stack:get_definition().groups["armor_"..v] or 0 - if armor[v] > 0 then - item = stack:get_name() - texture = texture.."^[combine:64x64:0,32="..item:gsub("%:", "_")..".png" + if stack:get_definition().groups["armor_"..v] then + local item = stack:get_name() + textures[v] = item:gsub("%:", "_")..".png" end end local stack = player_inv:get_stack("armor_shield", 1) - armor["shield"] = stack:get_definition().groups["armor_shield"] or 0 - if armor["shield"] > 0 then - item = stack:get_name() - texture = texture.."^[combine:64x64:16,0="..minetest.registered_items[item].inventory_image + if stack:get_definition().groups["armor_shield"] then + local item = stack:get_name() + textures["shield"] = minetest.registered_items[item].inventory_image + end + return textures +end + +armor_api.set_player_armor = function(self, player) + if not player then + return end - local armor_level = math.floor( - (.2*armor["head"]) + - (.3*armor["torso"]) + - (.2*armor["legs"]) + - (.3*armor["shield"]) - ) - local level = (armor_level / 2) + 0.5 - local fleshy = 3 - (armor_level / 2) - if fleshy < 0 then - fleshy = 0 + local name = player:get_player_name() + local player_inv = player:get_inventory() + local armor_level = 0 + for _,v in ipairs({"head", "torso", "legs", "shield"}) do + local stack = player_inv:get_stack("armor_"..v, 1) + local armor = stack:get_definition().groups["armor_"..v] or 0 + armor_level = armor_level + armor + end + local armor_groups = {fleshy=100} + if armor_level > 0 then + armor_groups.level = math.floor(armor_level / 20) + armor_groups.fleshy = 100 - armor_level end - local armor_groups = {level=1, fleshy=3, snappy=1, choppy=1} - armor_groups.level = level - armor_groups.fleshy = fleshy player:set_armor_groups(armor_groups) - return texture + uniskins:update_player_visuals(player) end armor_api.update_armor = function(self, player) @@ -73,7 +77,7 @@ armor_api.update_armor = function(self, player) if desc then minetest.chat_send_player(name, "Your "..desc.." got destroyed!") end - wieldview:update_player_visuals(player) + self:set_player_armor(player) end heal_max = heal_max + heal end diff --git a/3d_armor/crafting_guide.txt b/3d_armor/crafting_guide.txt index f12f21f..17bf250 100644 --- a/3d_armor/crafting_guide.txt +++ b/3d_armor/crafting_guide.txt @@ -1,84 +1,74 @@ -3D Armor -- Visible Player Armor --------------------------------- +3d_armor -- Crafting Guide +-------------------------- -Crafting Guide --------------- - -S = Steel Ingot [default:steel_ingot], W = Wood [default:wood] - -Steel Helmet [3d_armor:helmet_steel] +Helmets: +---+---+---+ -| S | S | S | +| X | X | X | +---+---+---+ -| S | | S | +| X | | X | +---+---+---+ | | | | +---+---+---+ -Steel Chestplate [3d_armor:chestplate_steel] +[3d_armor:helmet_wood] X = [default:wood] +[3d_armor:helmet_steel] X = [default:steel_ingot] +[3d_armor:helmet_bronze] X = [default:bronze_ingot] + +Chestplates: +---+---+---+ -| S | | S | +| X | | X | +---+---+---+ -| S | S | S | +| X | X | X | +---+---+---+ -| S | S | S | +| X | X | X | +---+---+---+ -Steel Leggings [3d_armor:leggings_steel] +[3d_armor:chestplate_wood] X = [default:wood] +[3d_armor:chestplate_steel] X = [default:steel_ingot] +[3d_armor:chestplate_bronze] X = [default:bronze_ingot] + +Leggings: +---+---+---+ -| S | S | S | +| X | X | X | +---+---+---+ -| S | | S | +| X | | X | +---+---+---+ -| S | | S | +| X | | X | +---+---+---+ -Steel Shield [3d_armor:shield_steel] +[3d_armor:leggings_wood] X = [default:wood] +[3d_armor:leggings_steel] X = [default:steel_ingot] +[3d_armor:leggings_bronze] X = [default:bronze_ingot] + +Shields: +---+---+---+ -| S | S | S | +| X | X | X | +---+---+---+ -| S | S | S | +| X | X | X | +---+---+---+ -| | S | | +| | X | | +---+---+---+ -Wooden Shield [3d_armor:shield_wood] - -+---+---+---+ -| W | W | W | -+---+---+---+ -| w | W | W | -+---+---+---+ -| | W | | -+---+---+---+ - -Enhanced Wooden Shield [3d_armor:shield_enhanced_wood] - -+---+---+---+ -| S | W | S | -+---+---+---+ -| W | S | W | -+---+---+---+ -| | W | | -+---+---+---+ - - - - - - - - - - - - +[3d_armor:shield_wood] X = [default:wood] +[3d_armor:shield_steel] X = [default:steel_ingot] +[3d_armor:shield_bronze] X = [default:bronze_ingot +Enhanced Wooden Shield: +SI = [default:steel_ingot] +WS = [3d_armor:shield_wood] ++----+ +| SI | ++----+ +| WS | ++----+ +| SI | ++----+ +[3d_armor:shield_enhanced_wood] diff --git a/3d_armor/depends.txt b/3d_armor/depends.txt index e52d1d8..db2f71a 100644 --- a/3d_armor/depends.txt +++ b/3d_armor/depends.txt @@ -1,3 +1,3 @@ default inventory_plus -wieldview +unified_skins diff --git a/3d_armor/init.lua b/3d_armor/init.lua index fea5d03..1b0c678 100644 --- a/3d_armor/init.lua +++ b/3d_armor/init.lua @@ -1,38 +1,34 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor_api.lua") +local time = 0 +local update_time = tonumber(minetest.setting_get("3d_armor_update_time")) +if not update_time then + update_time = 1 + minetest.setting_set("3d_armor_update_time", tostring(update_time)) +end + -- Regisiter Head Armor minetest.register_tool("3d_armor:helmet_wood", { description = "Wood Helmet", inventory_image = "3d_armor_inv_helmet_wood.png", - groups = {armor_head=2, armor_heal=10, armor_use=5000}, + groups = {armor_head=5, armor_heal=0, armor_use=1000}, wear = 0, }) minetest.register_tool("3d_armor:helmet_steel", { description = "Steel Helmet", inventory_image = "3d_armor_inv_helmet_steel.png", - groups = {armor_head=3, armor_heal=15, armor_use=1000}, + groups = {armor_head=10, armor_heal=5, armor_use=250}, wear = 0, }) -minetest.register_craft({ - output = "3d_armor:helmet_wood", - recipe = { - {"default:wood", "default:wood", "default:wood"}, - {"default:wood", "", "default:wood"}, - {"", "", ""}, - }, -}) - -minetest.register_craft({ - output = "3d_armor:helmet_steel", - recipe = { - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - {"", "", ""}, - }, +minetest.register_tool("3d_armor:helmet_bronze", { + description = "Bronze Helmet", + inventory_image = "3d_armor_inv_helmet_bronze.png", + groups = {armor_head=15, armor_heal=10, armor_use=100}, + wear = 0, }) -- Regisiter Torso Armor @@ -40,33 +36,22 @@ minetest.register_craft({ minetest.register_tool("3d_armor:chestplate_wood", { description = "Wood Chestplate", inventory_image = "3d_armor_inv_chestplate_wood.png", - groups = {armor_torso=2, armor_heal=10, armor_use=5000}, + groups = {armor_torso=10, armor_heal=0, armor_use=1000}, wear = 0, }) minetest.register_tool("3d_armor:chestplate_steel", { description = "Steel Chestplate", inventory_image = "3d_armor_inv_chestplate_steel.png", - groups = {armor_torso=3, armor_heal=15, armor_use=2500}, + groups = {armor_torso=15, armor_heal=5, armor_use=250}, wear = 0, }) -minetest.register_craft({ - output = "3d_armor:chestplate_wood", - recipe = { - {"default:wood", "", "default:wood"}, - {"default:wood", "default:wood", "default:wood"}, - {"default:wood", "default:wood", "default:wood"}, - }, -}) - -minetest.register_craft({ - output = "3d_armor:chestplate_steel", - recipe = { - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - }, +minetest.register_tool("3d_armor:chestplate_bronze", { + description = "Bronze Chestplate", + inventory_image = "3d_armor_inv_chestplate_bronze.png", + groups = {armor_torso=25, armor_heal=10, armor_use=100}, + wear = 0, }) -- Regisiter Leg Armor @@ -74,33 +59,22 @@ minetest.register_craft({ minetest.register_tool("3d_armor:leggings_wood", { description = "Wood Leggings", inventory_image = "3d_armor_inv_leggings_wood.png", - groups = {armor_legs=2, armor_heal=10, armor_use=5000}, + groups = {armor_legs=5, armor_heal=0, armor_use=1000}, wear = 0, }) minetest.register_tool("3d_armor:leggings_steel", { description = "Steel Leggings", inventory_image = "3d_armor_inv_leggings_steel.png", - groups = {armor_legs=3, armor_heal=15, armor_use=1500}, + groups = {armor_legs=10, armor_heal=5, armor_use=250}, wear = 0, }) -minetest.register_craft({ - output = "3d_armor:leggings_wood", - recipe = { - {"default:wood", "default:wood", "default:wood"}, - {"default:wood", "", "default:wood"}, - {"default:wood", "", "default:wood"}, - }, -}) - -minetest.register_craft({ - output = "3d_armor:leggings_steel", - recipe = { - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - }, +minetest.register_tool("3d_armor:leggings_bronze", { + description = "Bronze Leggings", + inventory_image = "3d_armor_inv_leggings_bronze.png", + groups = {armor_legs=15, armor_heal=10, armor_use=100}, + wear = 0, }) -- Regisiter Shields @@ -108,48 +82,80 @@ minetest.register_craft({ minetest.register_tool("3d_armor:shield_wood", { description = "Wooden Shield", inventory_image = "3d_armor_inv_shield_wood.png", - groups = {armor_shield=1, armor_heal=10, armor_use=10000}, + groups = {armor_shield=10, armor_heal=0, armor_use=1000}, wear = 0, }) minetest.register_tool("3d_armor:shield_enhanced_wood", { description = "Enhanced Wooden Shield", inventory_image = "3d_armor_inv_shield_enhanced_wood.png", - groups = {armor_shield=2, armor_heal=15, armor_use=3000}, + groups = {armor_shield=15, armor_heal=5, armor_use=500}, wear = 0, }) minetest.register_tool("3d_armor:shield_steel", { description = "Steel Shield", inventory_image = "3d_armor_inv_shield_steel.png", - groups = {armor_shield=3, armor_heal=20, armor_use=1500}, + groups = {armor_shield=20, armor_heal=5, armor_use=250}, wear = 0, }) -minetest.register_craft({ - output = "3d_armor:shield_wood", - recipe = { - {"default:wood", "default:wood", "default:wood"}, - {"default:wood", "default:wood", "default:wood"}, - {"", "default:wood", ""}, - }, +minetest.register_tool("3d_armor:shield_bronze", { + description = "Bronze Shield", + inventory_image = "3d_armor_inv_shield_bronze.png", + groups = {armor_shield=25, armor_heal=10, armor_use=100}, + wear = 0, }) +-- Register Craft Recipies + +local craft_ingreds = { + wood = "default:wood", + steel = "default:steel_ingot", + bronze = "default:bronze_ingot", +} + +for k, v in ipairs({"wood", "steel", "bronze"}) do + minetest.register_craft({ + output = "3d_armor:helmet_"..k, + recipe = { + {v, v, v}, + {v, "", v}, + {"", "", ""}, + }, + }) + minetest.register_craft({ + output = "3d_armor:chestplate_"..k, + recipe = { + {v, "", v}, + {v, v, v}, + {v, v, v}, + }, + }) + minetest.register_craft({ + output = "3d_armor:leggings_"..k, + recipe = { + {v, v, v}, + {v, "", v}, + {v, "", v}, + }, + }) + minetest.register_craft({ + output = "3d_armor:shield_"..k, + recipe = { + {v, v, v}, + {v, v, v}, + {"", v, ""}, + }, + }) +end + minetest.register_craft({ output = "3d_armor:shield_enhanced_wood", recipe = { - {"default:steel_ingot", "default:wood", "default:steel_ingot"}, - {"default:wood", "default:steel_ingot", "default:wood"}, - {"", "default:wood", ""}, - }, -}) - -minetest.register_craft({ - output = "3d_armor:shield_steel", - recipe = { - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"", "default:steel_ingot", ""}, + {"default:steel_ingot"}, + {"3d_armor:shield_wood"}, + {"default:steel_ingot"}, }, }) @@ -169,8 +175,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end for field, _ in pairs(fields) do if string.sub(field,0,string.len("skins_set_")) == "skins_set_" then - minetest.after(1, function(player) - wieldview:update_player_visuals(player) + minetest.after(0, function(player) + armor_api:set_player_armor(player) end, player) end end @@ -183,11 +189,11 @@ minetest.register_on_joinplayer(function(player) local armor_inv = minetest.create_detached_inventory(name.."_outfit",{ on_put = function(inv, listname, index, stack, player) player:get_inventory():set_stack(listname, index, stack) - wieldview:update_player_visuals(player) + armor_api:set_player_armor(player) end, on_take = function(inv, listname, index, stack, player) player:get_inventory():set_stack(listname, index, nil) - wieldview:update_player_visuals(player) + armor_api:set_player_armor(player) end, allow_put = function(inv, listname, index, stack, player) if inv:is_empty(listname) then @@ -209,5 +215,18 @@ minetest.register_on_joinplayer(function(player) armor_inv:set_stack(armor, 1, player_inv:get_stack(armor, 1)) end armor_api.player_hp[name] = 0 + minetest.after(0, function(player) + armor_api:set_player_armor(player) + end, player) +end) + +minetest.register_globalstep(function(dtime) + time = time + dtime + if time > update_time then + for _,player in ipairs(minetest.get_connected_players()) do + armor_api:update_armor(player) + end + time = 0 + end end) diff --git a/3d_armor/textures/3d_armor_chestplate_bronze.png b/3d_armor/textures/3d_armor_chestplate_bronze.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac8324f992756fc77edb3079b5aaf9be9c37206 GIT binary patch literal 1610 zcmV-Q2DSN#P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*h; z5(pVfS+*kp00qiPL_t(&-tCxQh+J10z<=L4cV_PV-9MAvO|rXbDW%cq3Szg3nwCiv zY)WZah(T&!geuY|D<%btp)LWdVrvl<6pJ8ziA4>qG(l_2tUkmjJ{8&rMWNYjcGqM# zyYu(X+>Z6KQx@jYR7 zIYMh;>eSN40+_nD-wo!yt8Z}&~l*kAr9PgI}^LN^ToSwVgFr&eE!q7vRIFef9R8g9DQjHEwR`4ePSDr zpO|O=t`WZU+3kG!m;dDOiFrhXVpj3!3+LH4ek+y0q7+Qry@SIi=E?htdgyracXLea z-p+j0(3@5~y!Q?sy63iysR7<)zBVG85*#oxIgP2W4MiJNFwPN#7D;446pIbRQr#j- zG4q36*mfP;T;|-5_Ts`8o`&jbBmks5p_tJ`mATHlTv9Rf^f0`@-3j-;w7TN?Ofd%GEM8#?rm;vn za%;lUIY+`1=AN5CrE;K?APO5)IRCTzI^E=*$hCl`rlvLqfN>7-d}f~g6e&;0`*9dM z8=|xQIMc#8gLpm{Ylddzc$HG8hNo}Qj&dU|?eA|Ra*M!tR;XJch^DZ#ayD8B%r5Cokaz*&QF4y8cn zh8TVPujG6c8z~CgZh+EAB7=)UwmtEBr)!i-B}%1IXU|fpM7dmEv%dO!xm;eezM%lZ z)roBM@M#*MB{amvtlhxbkm1QP!-rl&`33sYnqo$?^(!x8g9`Ol+%{cMjaz0=Vfe9E z7(Vz%Y)~PwS})!%#IMfzYrnsng880D;cwqxbUl9DbE|=+5?FG+q7^xMd__BQhzQPI znftQ|!A~d}p`{jBhI>6i6VDX$)u?l*Nosic9kjCR$$F{qUsHCYozV7z`Tzg`07*qo IM6N<$f&xPs@Bjb+ literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_chestplate_steel.png b/3d_armor/textures/3d_armor_chestplate_steel.png index 37ce376369cb9c97ae47f6e70323260e4d8b42cc..b5f960f9be415e45d233cd30b27bca1176560e80 100644 GIT binary patch delta 1475 zcmV;!1w8t|3)BmcBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i*h;5(g}ra&FH600mS@L_t(&-tC!PZ_~;ahM)1b z<9twl3y3NWYC@YzmH08-HMF9kNChFdfL{VqrCyYaq!P6JntwKJ9ec(e&+LnHVgWkZ zu!Vpl?X0_rotg17>s{-OBdoRj=@3Hvv9%rk<*@{?1h53K1h53K1h53K1h53K1h53K z1h53~Zw&FX?*qR5Ek7I%ZI)%U+ifl`E@-t{2q92PVXdXvYyx1dB_wU~`7!26l+@#m* zvAw-bRaIPFUGeVSI|hRRolXZSC3o)JVSRm_EX#ff_|ef3gTa6-%Sh9d)zww*-o0DH z{i6VkF$f`e_39OI9M_v3jYc#Y4H}IGe_jH;Ue7k0O)f7lab1@rNifD>t;Jf4F$Mt7^QfwdD2kZP zX1K0PqtW2QhYx=%fqVDv*#%gwH9-)FAPBg;yhI4W=g*&iFM!q6Roia2ztkjoo&(^z zE=nmp&wm3T3`3-pXst2E&}y}iQW8ZGQc7IcCC_u(?KVm&gb--0iQ^d8bt%gdDJ5|n zQDlZHuL$MvMd=6hiq(Y@ZiA% zHa0d`TU(>w?~|q}T5HzV*ZK766RztLMG@U@mw(gKQ|{lt&%=igIXXIGI-MefAW0HV zPEP1{yJT60<2YqO9LHgAZ;z^~erW&R&jRp$pV4SU9LH#_iJ}Ol6u$3ctwl;nv)Lri zbK*FzQ}*f8rvyPjnx0f7j4`aOtwzh^b zhEAu$`T04%?<0gD&vSacUM-1Vo&jMP5`TsvzVG9C9%Whb=FOX09t$6Ecz9T!cBj)J ziXw`l!1Fxz_V%#W)_!48DDynWbzQNwwIz;^kA>qnLTfFC!=c#P+7eL|38j?i^?Ks? z_*i(JCxj4UI2?*@w<{dS5x*ROQVOLMySuw}0b2C)vMedfk~B?u`SK;5PKWt?&VOh$ zsyl(_d1$TcbT5j6Fbo-w$K1YsyI$wu;Nbt$3O5>!I^7pWLsR zlO##q@;uMu=H>>a6ptT2WYiVgC5=XdG)?h5k0eQ$&*$v#?{j*3N>LQJu3Njdg&$aaetmsS7=|dN&|2gBK7+yF zt2Mtjo=&Gsr_!0qDQgG$zf$~5&3}9SpA^iW zw!+(f_Cv9hvK*OJ+6R-3E;_VJ(k d@BDjG_zTm*vFZdF9UcGx002ovPDHLkV1ns8(8vG) delta 1455 zcmV;g1yK6b3&0DIBYy>lNklvWkW_+}t7+5LvB&m!W*>CN`ieeLs<4%P&~-L(Jn!=I`?E3;#uye2 zA;iLBTMLW)e}a1f7ENH$xEEm21Qv~Z0TxYQ(YP02(F7Kadw&5IO<>Wu7hur@7L9uW z7ENH$5c8e~{Q6tI-|w3wNoY2koSmJ~XfzN)kYyRh80z&p0LB>3&(CSKT3D7vmSq5p zMx);z4lFM(n?|ESk|fmYbu7yw&vO9MH09*v+5tn z9X2;NDa(?Ji+>BgeECAJ*Q3>HA*JNeqerZ+u976lt@{fhI5;?<*Xxla32_{=yu8fg z$B!#{W9s!f=YQwt*tSg+MQE)t#$b#=YYl+o zIFw~c5Clvn6Kvb2R;%&t+qd7Q@RKJ`%uHCN6rShdc^>EI=LjMA`Sa(UN?>jQmY0`J zv)Q~+lWCd)VB0oXmf<)K0KV@dr9>%()|y76fs~RU2#``@+cs&M(rh-#vJ4>vN-4rH z#I|jUqJKb2Nf?F{MRENALLj9iiXvRsWjdXrwZ^h6lv13Yp8i&lxl2F@!O_tXo12?V zr&Efepx^JawzkHzXU|w$TVrKqg>JV?9LFf7SY2J^$B!S_woMQOwA*ctkB@o!^eNAu zKj+}!fbn>Y5P~R*I669_-ENa436^ECzP`?QJbxw(L!^|PoSd+>w#H;KAq+z{H#h0` z`+vlLZUHRodW*6w@qHg-4BOk=#BqG%duf`YwXV`u2tgdjOs7*U%VKYDk1Webl7zQ! z-%=C>mSrKOtoCqSmsxqu5QZVc;gBRrux%U5ve?<#p)AWk;_u8Wfa|&p1_Qz{L@7lO z1b<{%hU>Z*V~|o(uh&V_lrRjdlzsjBHJ;}Y$1%nj@;qm0X$gRzrEXxu~ zDberu#m2^l2!cRlStdH2jyOC#6prHvA%y7n`=Z@$3(K-@ZHRLVkYyQJma)CPT{WQD zJTHoZq9};tnD_7B(`vPtPNxh81K@fRIF5r-s!I1f&+&bq;c&>qhYzbbdwYBHQh)td z%q>8zR;$u|W<-P#)a!Mmlo(@p@ZbS)9HX_y^StU_V+^)!^ZD~gtLt%Xse(>>uTl~MM14rBaUMn$03R$rqe0AySp48 zACu=fwry9gZRQ7NpI=^H;`=^XmZ6lwbzOSB-i?^It;gdr16iK3_~fiz9=eV?KzsvaPO zKx<7HhD;_CeBZC$ewJk{EhsHjy<{?(ROafxb9}D<&TlJ){{YjXvFh;M^wt0X002ov JPDHLkV1jmY+cp3I diff --git a/3d_armor/textures/3d_armor_chestplate_wood.png b/3d_armor/textures/3d_armor_chestplate_wood.png index d773103792a463d3b839495b520c6686c8f49f9e..4ea1b6425ec57e546c09283f9fb0aad9e5e29a24 100644 GIT binary patch delta 976 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 FV1m-TPAdQa literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_inv_chestplate_bronze.png b/3d_armor/textures/3d_armor_inv_chestplate_bronze.png new file mode 100644 index 0000000000000000000000000000000000000000..793f875569f4a74cf1e29b4a222792dcee0835fe GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv|K%o0MJCh==$2m^)6JY5_^EKVo? z`TyUZS+$|F(dodU0|yRF$X0K7)N``k&R~)Dk)>?!nv~QT+kkjYS7J?ysm0!gJdRCi ziw-l~6^NN7DFFok|Nr-&;w16n_IE~Oo&=d0DjR17?rG3{vXQZ*RAhN`qj>{sxPu_K f1iOuKU=9Pr(L%H3FU<-;{$cQR^>bP0l+XkK-BD5E literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_inv_helmet_bronze.png b/3d_armor/textures/3d_armor_inv_helmet_bronze.png new file mode 100644 index 0000000000000000000000000000000000000000..20e5b564ca0dd327d5206a44be507e912813c5c5 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv|K%o0MJoa{%hFad=!JY5_^EKVo? z`TyUZS+$|F(aB*Wqs|Maon=fFe@%W~V0TNgQ!bJ?U?OhGnQ-;a_V>(fiatlO+@?8~ zsS2C1{$SW8^@?3-Q#|L*zN-v5jI5u_@9*P3Qpp%=tY`RYxl2sl@#SrWFVfW*z8=uO Uze2;c8fYhjr>mdKI;Vst0CMF_`2YX_ literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_inv_leggings_bronze.png b/3d_armor/textures/3d_armor_inv_leggings_bronze.png new file mode 100644 index 0000000000000000000000000000000000000000..142356e416c91c76258f2c292cbd90aa63e17410 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv|K%o0KzirU$}JApz4o-U3d7N?W{ z{QqyytlH4o=yagz%*n073a2b5^VcRE$zot;W_F%9nIZ0M?QgpWWsG*MJ9yF#EwB8v zkiW;^`66i#1A&QuJI^eu(&1rdj_~kwc)^(mlG8b&rchG4AtUwR)PfGr7#<+#VV)<= YXcnTqx~=cj7NFe>p00i_>zopr085xpHUIzs literal 0 HcmV?d00001 diff --git a/3d_armor/textures/3d_armor_inv_shield_bronze.png b/3d_armor/textures/3d_armor_inv_shield_bronze.png new file mode 100644 index 0000000000000000000000000000000000000000..11fb5087c39a22258ce67ca00ff99d775258856c GIT binary patch literal 723 zcmV;^0xbQBP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*f0 z5(hRfAk?t{00L7aXU2QIdhdC(kTFg3tPY&>{~XSb z{~tD4U9DBNtF_8*cBf>s;*JZ)iL&1TY_iuC{{`CG&e3c?*|z&H1VGP&^Y;3QD&mJP z;g7uLYD*u0?H5NyXXicMKD=oA#Zl4I^9E6T?bekx9zW{=;Lf$nI1ML}726o=zDezY zQ;5=X9zA^yz>W4JJb5`lvey+WUvTP=akrzM(%MFB7@+3H0LXZn#6%ylcn!C&wj;Mx zBSZ`s_$LEdLh55TmD_8PPGT9YYhFIn5z|wXq=v^C%PLOqt=KrkgcAd6vC#rnD@+s+ zC`(~c6Do@V5{@J?c0HiIG}1|67Un=mum%(4$pwaOjv>Ej$OQ%|Aqf8hvbYJShmc#h zGc&Jn7b1Rp3LE(p77ZCslkqfJUlT8rxPe{|{2b|{w5EY{K{JzAWIc`cU0h!?7c3+G zk|p6te&y6!Ald7RS3^E_$!Aw(2@^TR^t>jR9VbwhbU~B$G`p)y@Ipg+UQ=u=xjMx6 zA3m_7;UJ|kK`O6E6%@0cCY4uII+E%N$xtd>(}^oUvey+OGa-|s!<^X{M*?5cAsJ5- zFPH4!QO37SL}VPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*f0 z5(Xn%<^dZ300Q+%L_t(&-tCu7i(Ew%hM!Zn`rhv8>2AAKj0z(TZZyGhGK-*)Fd``V z2X57!3L%Ia7czvH7|=~7i)5Am;7Sk~G8&nci=ZwHOt1qI(CPH_o$mWx$HkQdlaP&z zNq6qq6jV`F)Kl+ytB$BD`xzp#ulpMw^QZt+04e|#fC@kbpaM_n+;=;CbgaXCUV7le)b{&+k>2%6*P@lT-z?yQ7A5*aP8D#+QIaj zqRk2gF=!kzNgdC1EDc}ipLvCat|dy9n_sPK z>(^1|*h^d~bI%80oH|C4qtlwZV~kS|Ajy?*FG8~f=U``CfEY&Om?%|}yga1TTQqz_ z=1Rply*oD500Jutp>o!--=UJ0xiG(y496$=zFj?ey==fB>+86>ffg1l59J>LC!3iCULxxP7k=P_D_cY~@Shzi~n?{U1}*8=|lM9oe2##*aJ00000 LNkvXXu0mjfHGG!S literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 7c73d3d..856f820 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,41 @@ Modpack - 3d Armor ================== +[mod] Unified Skins [unified_skins] +----------------------------------- + +A 3d character model re-texturing api used as the framework for this modpack. + +Compatible with player skins mod [skins] by Zeg9 and Player Textures [player_textures] by sdzen. + +Note: Currently only 64x32px player skins. + [mod] Visible Wielded Items [wieldview] -======================================= +--------------------------------------- -depends: default +depends: default, unified_skins -Makes hand wielded items visible to other players. Compatible with player skins mod [skins]. +Makes hand wielded items visible to other players. -note: currently only supports 16x16px texture packs and 64x32px player skins, sorry! +Note: Currently only supports 16x16px texture packs, sorry! [mod] Visible Player Armor [3d_armor] -===================================== +------------------------------------- -depends: default, inventory_plus, wieldview +depends: default, unified_skins, inventory_plus -Adds craftable armor that is visible to other players. Armor takes damage when a player is hurt -but also offers a percentage chance of healing. +Adds craftable armor that is visible to other players. Each armor item worn contibutes to +a player's armor group level making them less vulnerable to weapons. + +Armor takes damage when a player is hurt, however, many armor items offer a 'stackable' +percentage chance of restoring the lost health points. [mod] Moreores Armor [more_armor] -======================================== +--------------------------------- -depends: default, 3d_armor +Now included for legacy support only! Unless you are using a customized ore system, this +mod is not really recommended and will most likely be removed from future versions. -Adds Bronze and Mithril armor sets, upgrades moreores weapons. +depends: default, moreores, 3d_armor + +Adds Mithril armor and upgrades moreores Mithril Sword. diff --git a/more_armor/crafting_guide.txt b/more_armor/crafting_guide.txt index 1ba4721..ff2598c 100644 --- a/more_armor/crafting_guide.txt +++ b/more_armor/crafting_guide.txt @@ -1,52 +1,9 @@ -3D Armor -- Moreores Armor --------------------------- +more_armor -- Crafting Guide +---------------------------- -Crafting Guide --------------- +M = Mithril Ingot [moreores:mithril_ingot] -B = Bronze Ingot [moreores:bronze_ingot], M = Mithril Ingot [moreores:mithril_ingot] - -Bronze Helmet [more_armor:helmet_bronze] - -+---+---+---+ -| B | B | B | -+---+---+---+ -| B | | B | -+---+---+---+ -| | | | -+---+---+---+ - -Bronze Chestplate [more_armor:chestplate_bronze] - -+---+---+---+ -| B | | B | -+---+---+---+ -| B | B | B | -+---+---+---+ -| B | B | B | -+---+---+---+ - -Bronze Leggings [more_armor:leggings_bronze] - -+---+---+---+ -| B | B | B | -+---+---+---+ -| B | | B | -+---+---+---+ -| B | | B | -+---+---+---+ - -Bronze Shield [more_armor:shield_bronze] - -+---+---+---+ -| B | B | B | -+---+---+---+ -| B | B | B | -+---+---+---+ -| | B | | -+---+---+---+ - -Mithril Helmet [more_armor:helmet_mithril] +Mithril Helmet: [more_armor:helmet_mithril] +---+---+---+ | M | M | M | @@ -56,7 +13,7 @@ Mithril Helmet [more_armor:helmet_mithril] | | | | +---+---+---+ -Mithril Chestplate [more_armor:chestplate_mithril] +Mithril Chestplate: [more_armor:chestplate_mithril] +---+---+---+ | M | | M | @@ -66,7 +23,7 @@ Mithril Chestplate [more_armor:chestplate_mithril] | M | M | M | +---+---+---+ -Mithril Leggings [more_armor:leggings_mithril] +Mithril Leggings: [more_armor:leggings_mithril] +---+---+---+ | M | M | M | @@ -76,7 +33,7 @@ Mithril Leggings [more_armor:leggings_mithril] | M | | M | +---+---+---+ -Mithril Shield [more_armor:shield_mithril] +Mithril Shield: [more_armor:shield_mithril] +---+---+---+ | M | M | M | diff --git a/more_armor/init.lua b/more_armor/init.lua index 165e13d..895127a 100644 --- a/more_armor/init.lua +++ b/more_armor/init.lua @@ -1,20 +1,6 @@ -- Override moreores weapons (make them more powerful) -minetest.register_tool(":moreores:sword_bronze", { - description = "Bronze Sword", - inventory_image = "moreores_tool_bronzesword.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - fleshy={times={[1]=1.00, [2]=0.80, [3]=0.40}, uses=25, maxlevel=2}, - snappy={times={[2]=0.70, [3]=0.25}, uses=100, maxlevel=1}, - choppy={times={[3]=0.65}, uses=50, maxlevel=0} - } - } -}) - minetest.register_tool(":moreores:sword_mithril", { description = "Mithril Sword", inventory_image = "moreores_tool_mithrilsword.png", @@ -31,29 +17,13 @@ minetest.register_tool(":moreores:sword_mithril", { -- Regisiter Head Armor -minetest.register_tool("more_armor:helmet_bronze", { - description = "Bronze Helmet", - inventory_image = "more_armor_inv_helmet_bronze.png", - groups = {armor_head=4, armor_heal=15, armor_use=500}, - wear = 0, -}) - minetest.register_tool("more_armor:helmet_mithril", { description = "Mithril Helmet", inventory_image = "more_armor_inv_helmet_mithril.png", - groups = {armor_head=5, armor_heal=20, armor_use=100}, + groups = {armor_head=15, armor_heal=15, armor_use=50}, wear = 0, }) -minetest.register_craft({ - output = "more_armor:helmet_bronze", - recipe = { - {"moreores:bronze_ingot", "moreores:bronze_ingot", "moreores:bronze_ingot"}, - {"moreores:bronze_ingot", "", "moreores:bronze_ingot"}, - {"", "", ""}, - }, -}) - minetest.register_craft({ output = "more_armor:helmet_mithril", recipe = { @@ -65,29 +35,13 @@ minetest.register_craft({ -- Regisiter Torso Armor -minetest.register_tool("more_armor:chestplate_bronze", { - description = "Bronze Chestplate", - inventory_image = "more_armor_inv_chestplate_bronze.png", - groups = {armor_torso=4, armor_heal=20, armor_use=1000}, - wear = 0, -}) - minetest.register_tool("more_armor:chestplate_mithril", { description = "Mithril Chestplate", inventory_image = "more_armor_inv_chestplate_mithril.png", - groups = {armor_torso=5, armor_heal=25, armor_use=250}, + groups = {armor_torso=25, armor_heal=15, armor_use=50}, wear = 0, }) -minetest.register_craft({ - output = "more_armor:chestplate_bronze", - recipe = { - {"moreores:bronze_ingot", "", "moreores:bronze_ingot"}, - {"moreores:bronze_ingot", "moreores:bronze_ingot", "moreores:bronze_ingot"}, - {"moreores:bronze_ingot", "moreores:bronze_ingot", "moreores:bronze_ingot"}, - }, -}) - minetest.register_craft({ output = "more_armor:chestplate_mithril", recipe = { @@ -99,29 +53,13 @@ minetest.register_craft({ -- Regisiter Leg Armor -minetest.register_tool("more_armor:leggings_bronze", { - description = "Bronze Leggings", - inventory_image = "more_armor_inv_leggings_bronze.png", - groups = {armor_legs=4, armor_heal=15, armor_use=500}, - wear = 0, -}) - minetest.register_tool("more_armor:leggings_mithril", { description = "Mithril Leggings", inventory_image = "more_armor_inv_leggings_mithril.png", - groups = {armor_legs=5, armor_heal=20, armor_use=100}, + groups = {armor_legs=20, armor_heal=15, armor_use=50}, wear = 0, }) -minetest.register_craft({ - output = "more_armor:leggings_bronze", - recipe = { - {"moreores:bronze_ingot", "moreores:bronze_ingot", "moreores:bronze_ingot"}, - {"moreores:bronze_ingot", "", "moreores:bronze_ingot"}, - {"moreores:bronze_ingot", "", "moreores:bronze_ingot"}, - }, -}) - minetest.register_craft({ output = "more_armor:leggings_mithril", recipe = { @@ -133,29 +71,13 @@ minetest.register_craft({ -- Regisiter Shields -minetest.register_tool("more_armor:shield_bronze", { - description = "Bronze Shield", - inventory_image = "more_armor_inv_shield_bronze.png", - groups = {armor_shield=4, armor_heal=20, armor_use=500}, - wear = 0, -}) - minetest.register_tool("more_armor:shield_mithril", { description = "Mithril Shield", inventory_image = "more_armor_inv_shield_mithril.png", - groups = {armor_shield=5, armor_heal=25, armor_use=100}, + groups = {armor_shield=25, armor_heal=15, armor_use=50}, wear = 0, }) -minetest.register_craft({ - output = "more_armor:shield_bronze", - recipe = { - {"moreores:bronze_ingot", "moreores:bronze_ingot", "moreores:bronze_ingot"}, - {"moreores:bronze_ingot", "moreores:bronze_ingot", "moreores:bronze_ingot"}, - {"", "moreores:bronze_ingot", ""}, - }, -}) - minetest.register_craft({ output = "more_armor:shield_mithril", recipe = { diff --git a/more_armor/textures/more_armor_chestplate_mithril.png b/more_armor/textures/more_armor_chestplate_mithril.png index e2b4733e6a0a42ebb77dfc8cbd8121ea484f8714..cedf0d950dcd8a2c120553907993990a4bd0f532 100644 GIT binary patch delta 1277 zcmVcu@&T10o-FC0V4?^l=s)p5?c-%%(G zLdOB&W~jC!6dAI6FT;TKk-B%1_sZ|`0C%_J%HBTuwj>g zz2Xvx1C)Zk;a?!rSbOXq+X_Ywj2!thSD|trA`ij}WSVe4-3C_6!t+}#(O@eD|ybx(}dEcDhaFdK#L2{_Eg(@cnbFn@CbhBClxfSc~)C9vVG7^6YH zM;;hig>FkcWx(Al%M8HAw_~i9xtfIPM17ONlmG#;S-&I;j{`aJU=oZ5xhg}(TP<}@ zh&%yCGlea|RC4lueGy?!dUy@UgDxj}MQwSi{aZozFr>_Zk z{sevJe!}wwT>Mgf4&4@(&HPz^W@I^d`bS}%GJilR+~cp$XULLDp#6iG)_3JJZe9R0 z$3S6-{Ll|#RNgpb)(XW(FDE+Q1;!e@$V9N9S}e2jL88 zHh)7$-Vk$C3c~5SQ3jJZ?W3x{r(4B029?uxM>(xGRDVyG>hI}RPUo0%*8i&d-+xK^ zJMJl`?UwYvw^liAchu5LAee%nEVTD0gnIsDVonwLc;ob*xh{F%pOBO|Ym%Ck&|QfH zf)W^O7&y8UR&T0>Id$sPGg=B~8bLFOVt>SdYWe!bx_(!^4BlTtP0gNDGsK{o#{_~&{yd4l#RKqpV0TqXdb0Cby!g=-=MGbctDd7}NO0HXrW z=y|qH-xFY}4+S_)2O^o{KQ^<_{ZlD;(Exa35J&Z#A68`J-neW!vlglkDI9U=`+uZS z`ZXQ2Ouaa=ngl4#midgFNFk~Kuw%!Lc_A0N9~l{8WMpKS7@*q>9ot^7_KYk9(~<#D zfDTrRNF)wwCg|q3%h+&6%rYp;RbLH}FQ%DPe2(MbI8H63<2V$H#d-I0`-{cmy!$1V zfaKfZzHP#QIFL;RWr(V{$F|}geRh@HDkL>o%@hu7p)`|Ja7IqX5`kZ0;LtX{JhWZ< zHS>QdK3DUP_CJkbF1`+E-5uA;P`{LvwppRN*(d-hC5AU!_v=a849f!Astqzuw_)a< n6f^*uh0}IxQU9GUB!zzfskr_%9P6v%00000NkvXXu0mjfYrR!z delta 1277 zcmVcu|Q;Q$#-MO1z+4Xwq&9B`KrCkYHj6{t;vwZ#3MfSI7kj zRSb=^w%KmGv-9P}JKd$I6w<1&v;7# zNC8LzNC8LzNC8LzNC8LzNC8LzNC8Lzcov&l?(YHrdYA9$jqzu|Zicx#kZA&?Ls)`1 z2CGTN#Uaf90rqB43W8aA{@cYz|2VMqt(Z(B_%kw>(jh2GUr>bc%W7>IP?_Yc`z`tW zFti_n&Lhy)1Akrp5C>4c$KcQ~bbKhA4`yKV>(Kr__|uOSVsQApjIaC+-hF7<2V3?E z*lR9Ao3tAL#7e;lWwq@m!98hCU>>~=5t`w z$s9%&_p?2q8Bc)(TK30SO+s(Y0<%Hro`AzbJk5m22Y)jwU?>C3dbsI6n!;P&h%xHr zd*lfSx-IdP0l$BzRu_P+Z^l^7i#1u9u5B`y6(B%1>lbC=aUdri%z#lZS7pd}tGVV0 zkte`trm!WLO-|mgEg~!l(7G+Mh(lRNe|m z039Dle}Cjb`$0y(z9N)0>S5b{+zXeW?I7&G2H+zS`Q9IYmqf7=1^2&F^k5$QLx z5SC=F?Y+Vzvq9F<`OzwQfYNKOZqy}ue+4R2i^uszIrXRv`g$~l08*I*rPDifO~CV~ z=|A@)o-g3y7i)9qwy--}UslaSdc6d%8m=y)#}8{qaOsN9DgCnbd~n4mWSQ3&Ig6W<8H-XvgYb|Q~h zK({xEG>i>Uo)Ec39%LFN=Iw7*SOP|!1lR4VPIF&gPtei8YLrts>Bwf4E{is@5YB^U zGkS5)SUIhCl+$uU4fJ%Xfu1hqbWA8`^Dk=P-4~?4 z{jPFaZ%O|<8~N3FaBf>{VkLVJH&sOQfl=2VuCH%afA>yr2VX-SC-CaGBo-IYin zD1xzp!DD-1{kCeD)2B~ArKNDD0W^~+Mt=;bny;U)>37|W;Qb}k)a(aph8Q%H+*iK} zBQ#T%+*tCBSJq5Xl_>v6-drpGd*W2EdzuII89Ruq+$*CS}u^jZm2)f7GG><9`O} z*L2V_wc^NX6reO)<}Y;26Nv9VQRfNnE#d{?d7GwL9ilMH|Y zbg-I5B5_bPK{vNc#)k7^mO)9b`g(|bG0mjna~uc9ajGF5$DvRtEV_TNzfdSFx?f=l zNWLBI?-mBcfov)$K~%v#z7zM@%XVbfA*sn~B7bNH#rdRyGqTCsTm*iR!Nc8rad?;X zYv%t_{6Wn>-2Wtox%@hyWnWw^L;Ye>+SUox%?1HTDKWf-x?fMyW>^x?)@_k-x()Mp nrJw=OES%O`%lhwpDJlE|shIvX3xJjn00000NkvXXu0mjf3@U0X diff --git a/unified_skins/README.txt b/unified_skins/README.txt new file mode 100644 index 0000000..cee5c8d --- /dev/null +++ b/unified_skins/README.txt @@ -0,0 +1,5 @@ +A 3d character model re-texturing api used as the framework for this modpack. + +Compatible with player skins mod [skins] by Zeg9 and Player Textures [player_textures] by sdzen. + +Note: Currently only 64x32px player skins. diff --git a/unified_skins/init.lua b/unified_skins/init.lua new file mode 100644 index 0000000..1df7b9b --- /dev/null +++ b/unified_skins/init.lua @@ -0,0 +1,67 @@ + +uniskins = { + skins = {}, + default_character_skin = "character.png", +} + +uniskins.get_player_skin = function(self, name) + if minetest.get_modpath("skins") then + local skin = skins.skins[name] + if skin then + if skins.get_type(skin) == skins.type.MODEL then + return skin..".png" + end + end + end + if self.skins[name] then + return self.skins[name] + end + return self.default_character_skin +end + +uniskins.update_player_visuals = function(self, player) + if not player then + return + end + local name = player:get_player_name() + local texture = self:get_player_skin(name) + local has_wieldview = minetest.get_modpath("wieldview") + if has_wieldview then + texture = "wieldview_character_bg.png^[combine:64x64:0,32="..texture + local wielded_item_texture = wieldview:get_wielded_item_texture(player) + if wielded_item_texture then + texture = texture.."^[combine:64x64:0,0="..wielded_item_texture + end + end + if minetest.get_modpath("3d_armor") then + local textures = armor_api:get_armor_textures(player) + for _,v in ipairs({"head", "torso", "legs"}) do + if textures[v] then + texture = texture.."^" + if has_wieldview then + texture = texture.."[combine:64x64:0,32=" + end + texture = texture..textures[v] + end + end + if has_wieldview and textures["shield"] then + texture = texture.."^[combine:64x64:16,0="..textures["shield"] + end + end + player:set_properties({ + visual = "mesh", + textures = {texture}, + visual_size = {x=1, y=1}, + }) +end + +minetest.register_on_joinplayer(function(player) + local name = player:get_player_name() + local filename = minetest.get_modpath("player_textures").."/textures/player_"..name + local f = io.open(filename..".png") + if f then + f:close() + uniskins.skins[name] = "player_"..player:get_player_name()..".png" + end +end) + diff --git a/wieldview/README.txt b/wieldview/README.txt index 88e0573..3370d48 100644 --- a/wieldview/README.txt +++ b/wieldview/README.txt @@ -1,9 +1,15 @@ [mod] visible wielded items [wieldview] ======================================= -depends: default +depends: default, unified_skins Makes hand wielded items visible to other players. Compatible with player skins mod [skins]. -note: currently only supports 16x16px texture packs and 64x32px player skins, sorry! +Note: Currently only supports 16x16px texture packs, sorry! + +default settings: [minetest.conf] + +# Set number of seconds between visible wielded item updates. +wieldview_update_time = 2 + diff --git a/wieldview/depends.txt b/wieldview/depends.txt index 3a7daa1..e5dc742 100644 --- a/wieldview/depends.txt +++ b/wieldview/depends.txt @@ -1,2 +1,2 @@ default - +unified_skins diff --git a/wieldview/init.lua b/wieldview/init.lua index 8d37d0e..2c8e87f 100644 --- a/wieldview/init.lua +++ b/wieldview/init.lua @@ -1,28 +1,14 @@ local time = 0 local update_time = tonumber(minetest.setting_get("wieldview_update_time")) -if update_time == nil then +if not update_time then update_time = 2 minetest.setting_set("wieldview_update_time", tostring(update_time)) end wieldview = { - default_character_skin = "character.png", wielded_items = {}, } -wieldview.get_player_skin = function(self, name) - local mod_path = minetest.get_modpath("skins") - if mod_path then - local skin = skins.skins[name] - if skin then - if skins.get_type(skin) == skins.type.MODEL then - return skin..".png" - end - end - end - return self.default_character_skin -end - wieldview.get_wielded_item_texture = function(self, player) if not player then return nil @@ -45,28 +31,6 @@ wieldview.get_wielded_item_texture = function(self, player) return texture end -wieldview.update_player_visuals = function(self, player) - if not player then - return - end - local name = player:get_player_name() - local texture = "wieldview_character_bg.png^[combine:64x64:0,32="..self:get_player_skin(name) - local player_inv = player:get_inventory() - local wielded_item_texture = self:get_wielded_item_texture(player) - if wielded_item_texture then - texture = texture.."^[combine:64x64:0,0="..wielded_item_texture - end - local mod_path = minetest.get_modpath("3d_armor") - if mod_path then - texture = texture..armor_api:get_player_armor(player) - end - player:set_properties({ - visual = "mesh", - textures = {texture}, - visual_size = {x=1, y=1}, - }) -end - wieldview.update_wielded_item = function(self, player) if not player then return @@ -80,34 +44,30 @@ wieldview.update_wielded_item = function(self, player) if self.wielded_items[name] then if self.wielded_items[name] == item then return - end - self:update_player_visuals(player) + end + uniskins:update_player_visuals(player) end self.wielded_items[name] = item end minetest.register_on_joinplayer(function(player) - local texture = wieldview:get_player_skin(name) + local texture = uniskins:get_player_skin(name) player:set_properties({ visual = "mesh", mesh = "wieldview_character.x", textures = {texture}, visual_size = {x=1, y=1}, }) - minetest.after(1, function(player) - wieldview:update_player_visuals(player) + minetest.after(0, function(player) + uniskins:update_player_visuals(player) end, player) end) minetest.register_globalstep(function(dtime) time = time + dtime if time > update_time then - local mod_path = minetest.get_modpath("3d_armor") for _,player in ipairs(minetest.get_connected_players()) do wieldview:update_wielded_item(player) - if mod_path then - armor_api:update_armor(player) - end end time = 0 end