Corrected directory structure.
							
								
								
									
										11
									
								
								3d_armor/LICENSE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,11 @@
 | 
			
		||||
3D Armor - Visible Player Armor
 | 
			
		||||
===============================
 | 
			
		||||
 | 
			
		||||
Default Item Textures (C) Cisoun - WTFPL
 | 
			
		||||
 | 
			
		||||
Armor Textures: Copyright (C) 2013 Ryan Jones - CC-BY-SA
 | 
			
		||||
 | 
			
		||||
Source Code: Copyright (C) 2013 Stuart Jones - GPL v3
 | 
			
		||||
 | 
			
		||||
Special credit to Jordach and MirceaKitsune for providing the default 3d character model.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								3d_armor/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,5 @@
 | 
			
		||||
3d Armor - Visible Player Armor
 | 
			
		||||
===============================
 | 
			
		||||
 | 
			
		||||
An experimental mod exploring the possibilty of alpha-blending various 'wearable' UV maps with the player character mesh. This same principle could be extended to other types of clothing, jewelery or whatever else.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										142
									
								
								3d_armor/armor_api.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,142 @@
 | 
			
		||||
 | 
			
		||||
armor_api = {
 | 
			
		||||
	default_character_skin = "3d_armor_character.png",
 | 
			
		||||
	player_hp = {},
 | 
			
		||||
	wielded_items = {},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
armor_api.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 skin ~= skins.default() and skins.get_type(skin) == skins.type.MODEL then
 | 
			
		||||
				return skin..".png"
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	return self.default_character_skin
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
armor_api.get_wielded_item_texture = function(self, player)
 | 
			
		||||
	if not player then
 | 
			
		||||
		return nil
 | 
			
		||||
	end
 | 
			
		||||
	local stack = player:get_wielded_item()
 | 
			
		||||
	local item = stack:get_name()
 | 
			
		||||
	if not item then
 | 
			
		||||
		return nil
 | 
			
		||||
	end
 | 
			
		||||
	if not minetest.registered_items[item] then
 | 
			
		||||
		return nil
 | 
			
		||||
	end
 | 
			
		||||
	local texture = minetest.registered_items[item].inventory_image
 | 
			
		||||
	if texture == "" then
 | 
			
		||||
		if not minetest.registered_items[item].tiles then
 | 
			
		||||
			return nil	
 | 
			
		||||
		end
 | 
			
		||||
		texture = minetest.registered_items[item].tiles[1]
 | 
			
		||||
	end
 | 
			
		||||
	return texture
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
armor_api.set_player_armor = function(self, player)
 | 
			
		||||
	if not player then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local name = player:get_player_name()
 | 
			
		||||
	local texture = "3d_armor_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 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"
 | 
			
		||||
		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
 | 
			
		||||
	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)
 | 
			
		||||
	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)
 | 
			
		||||
	player:set_properties({
 | 
			
		||||
		visual = "mesh",
 | 
			
		||||
		textures = {texture},
 | 
			
		||||
		visual_size = {x=1, y=1},
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
armor_api.update_wielded_item = function(self, player)
 | 
			
		||||
	if not player then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local name = player:get_player_name()
 | 
			
		||||
	local stack = player:get_wielded_item()
 | 
			
		||||
	local item = stack:get_name()
 | 
			
		||||
	if not item then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	if self.wielded_items[name] then
 | 
			
		||||
		if self.wielded_items[name] == item then
 | 
			
		||||
			return
 | 
			
		||||
		end	
 | 
			
		||||
		self:set_player_armor(player)
 | 
			
		||||
	end
 | 
			
		||||
	self.wielded_items[name] = item
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
armor_api.update_armor = function(self, player)
 | 
			
		||||
	if not player then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local name = player:get_player_name()
 | 
			
		||||
	local hp = player:get_hp()
 | 
			
		||||
	if hp == nil or hp == self.player_hp[name] then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	if self.player_hp[name] > hp then
 | 
			
		||||
		local player_inv = player:get_inventory()
 | 
			
		||||
		local armor_inv = minetest.get_inventory({type="detached", name=name.."_outfit"})
 | 
			
		||||
		if armor_inv == nil then
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		local heal_max = 0
 | 
			
		||||
		for _,v in ipairs({"head", "torso", "legs", "shield"}) do
 | 
			
		||||
			local stack = armor_inv:get_stack("armor_"..v, 1)
 | 
			
		||||
			local use = stack:get_definition().groups["armor_use"] or 0
 | 
			
		||||
			local heal = stack:get_definition().groups["armor_heal"] or 0
 | 
			
		||||
			stack:add_wear(use)
 | 
			
		||||
			armor_inv:set_stack("armor_"..v, 1, stack)
 | 
			
		||||
			player_inv:set_stack("armor_"..v, 1, stack)		
 | 
			
		||||
			if stack:get_count() == 0 then
 | 
			
		||||
				self:set_player_armor(player)
 | 
			
		||||
			end
 | 
			
		||||
			heal_max = heal_max + heal
 | 
			
		||||
		end
 | 
			
		||||
		if heal_max > math.random(100) then
 | 
			
		||||
			player:set_hp(self.player_hp[name])
 | 
			
		||||
			return
 | 
			
		||||
		end		
 | 
			
		||||
	end
 | 
			
		||||
	self.player_hp[name] = hp
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										84
									
								
								3d_armor/crafting_guide.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,84 @@
 | 
			
		||||
3D Armor -- Visible Player Armor
 | 
			
		||||
--------------------------------
 | 
			
		||||
 | 
			
		||||
Crafting Guide
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
S = Steel Ingot [default:steel_ingot], W = Wood [default:wood]
 | 
			
		||||
 | 
			
		||||
Steel Helmet [3d_armor:helmet_steel]
 | 
			
		||||
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S | S | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S |   | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
|   |   |   |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
 | 
			
		||||
Steel Chestplate [3d_armor:chestplate_steel]
 | 
			
		||||
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S |   | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S | S | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S | S | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
 | 
			
		||||
Steel Leggings [3d_armor:leggings_steel]
 | 
			
		||||
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S | S | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S |   | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S |   | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
 | 
			
		||||
Steel Shield [3d_armor:shield_steel]
 | 
			
		||||
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S | S | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
| S | S | S |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
|   | S |   |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
 | 
			
		||||
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 |   |
 | 
			
		||||
+---+---+---+
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								3d_armor/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,2 @@
 | 
			
		||||
inventory_plus
 | 
			
		||||
default
 | 
			
		||||
							
								
								
									
										180
									
								
								3d_armor/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,180 @@
 | 
			
		||||
 | 
			
		||||
local time = 0
 | 
			
		||||
local update_time = tonumber(minetest.setting_get("3d_armor_update_time"))
 | 
			
		||||
if update_time == nil then
 | 
			
		||||
	update_time = 2
 | 
			
		||||
	minetest.setting_set("3d_armor_update_time", tostring(update_time))
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor_api.lua")
 | 
			
		||||
 | 
			
		||||
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},
 | 
			
		||||
	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=20, armor_use=2500},
 | 
			
		||||
	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},
 | 
			
		||||
	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},
 | 
			
		||||
	wear = 0,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_tool("3d_armor:shield_wood", {
 | 
			
		||||
	description = "Wooden Shield",
 | 
			
		||||
	inventory_image = "3d_armor_inv_shield_wood.png",
 | 
			
		||||
	groups = {armor_shield=2, armor_heal=10, armor_use=10000},
 | 
			
		||||
	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},
 | 
			
		||||
	wear = 0,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
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_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_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_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", ""},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
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_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_on_player_receive_fields(function(player, formname, fields)
 | 
			
		||||
	local name = player:get_player_name()
 | 
			
		||||
	if fields.outfit then
 | 
			
		||||
		inventory_plus.set_inventory_formspec(player, "size[8,7.5]"
 | 
			
		||||
		.."button[0,0;2,0.5;main;Back]"
 | 
			
		||||
		.."list[current_player;main;0,3.5;8,4;]"
 | 
			
		||||
		.."list[detached:"..name.."_outfit;armor_head;3,0;1,1;]"
 | 
			
		||||
		.."list[detached:"..name.."_outfit;armor_torso;3,1;1,1;]"
 | 
			
		||||
		.."list[detached:"..name.."_outfit;armor_legs;3,2;1,1;]"
 | 
			
		||||
		.."list[detached:"..name.."_outfit;armor_shield;4,1;1,1;]")
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	for field, _ in pairs(fields) do
 | 
			
		||||
		if string.sub(field,0,string.len("skins_set_")) == "skins_set_" then
 | 
			
		||||
			minetest.after(1, function(player)
 | 
			
		||||
				armor_api:set_player_armor(player)
 | 
			
		||||
			end, player)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
minetest.register_on_joinplayer(function(player)
 | 
			
		||||
	inventory_plus.register_button(player,"outfit", "Outfit")
 | 
			
		||||
	local player_inv = player:get_inventory()
 | 
			
		||||
	local name = player:get_player_name()
 | 
			
		||||
	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)
 | 
			
		||||
			armor_api:set_player_armor(player)
 | 
			
		||||
		end,
 | 
			
		||||
		on_take = function(inv, listname, index, stack, player)
 | 
			
		||||
			player:get_inventory():set_stack(listname, index, nil)
 | 
			
		||||
			armor_api:set_player_armor(player)
 | 
			
		||||
		end,
 | 
			
		||||
		allow_put = function(inv, listname, index, stack, player)
 | 
			
		||||
			if inv:is_empty(listname) then
 | 
			
		||||
				return 1
 | 
			
		||||
			end
 | 
			
		||||
			return 0
 | 
			
		||||
		end,
 | 
			
		||||
		allow_take = function(inv, listname, index, stack, player)
 | 
			
		||||
			return stack:get_count()
 | 
			
		||||
		end,
 | 
			
		||||
	})
 | 
			
		||||
	for _,v in ipairs({"head", "torso", "legs", "shield"}) do
 | 
			
		||||
		local armor = "armor_"..v
 | 
			
		||||
		player_inv:set_size(armor, 1)
 | 
			
		||||
		armor_inv:set_size(armor, 1)
 | 
			
		||||
		armor_inv:set_stack(armor, 1, player_inv:get_stack(armor, 1))
 | 
			
		||||
	end
 | 
			
		||||
	armor_api.player_hp[name] = 0
 | 
			
		||||
	local texture = armor_api:get_player_skin(name)
 | 
			
		||||
	player:set_properties({
 | 
			
		||||
		visual = "mesh",
 | 
			
		||||
		mesh = "3d_armor_character.x",
 | 
			
		||||
		textures = {texture},
 | 
			
		||||
		visual_size = {x=1, y=1},
 | 
			
		||||
	})
 | 
			
		||||
	minetest.after(1, 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_wielded_item(player)
 | 
			
		||||
			armor_api:update_armor(player)
 | 
			
		||||
		end
 | 
			
		||||
		time = 0
 | 
			
		||||
	end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								3d_armor/models/3d_armor_character.blend
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								3d_armor/models/3d_armor_character.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.2 KiB  | 
							
								
								
									
										6654
									
								
								3d_armor/models/3d_armor_character.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								3d_armor/models/3d_armor_character_tmp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_character_bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 167 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_chestplate_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_helmet_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_inv_chestplate_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 258 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_inv_helmet_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 255 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_inv_leggings_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 251 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_inv_shield_enhanced_wood.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 747 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_inv_shield_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 697 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_inv_shield_wood.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 667 B  | 
							
								
								
									
										
											BIN
										
									
								
								3d_armor/textures/3d_armor_leggings_steel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 774 B  |