From 1fe951447eed80439594aeb97ed5755cb3d4b6f4 Mon Sep 17 00:00:00 2001 From: Elkien3 Date: Sun, 6 Sep 2020 20:09:53 -0500 Subject: [PATCH] add armor stands --- .../3d_armor_stand/LICENSE.txt | 43 +++ .../3d_armor_stand/README.txt | 21 ++ .../3d_armor_stand/depends.txt | 2 + .../3d_armor_stand/init.lua | 353 ++++++++++++++++++ .../3d_armor_stand/models/3d_armor_entity.obj | 193 ++++++++++ .../3d_armor_stand/models/3d_armor_stand.obj | 280 ++++++++++++++ .../3d_armor_stand/models/3d_armor_stand.png | Bin 0 -> 1628 bytes .../models/3d_armor_stand_locked.png | Bin 0 -> 1992 bytes .../textures/3d_armor_stand_feet.png | Bin 0 -> 160 bytes .../textures/3d_armor_stand_head.png | Bin 0 -> 164 bytes .../textures/3d_armor_stand_legs.png | Bin 0 -> 159 bytes .../textures/3d_armor_stand_shield.png | Bin 0 -> 166 bytes .../textures/3d_armor_stand_torso.png | Bin 0 -> 191 bytes 13 files changed, 892 insertions(+) create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/LICENSE.txt create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/README.txt create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/depends.txt create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/init.lua create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_entity.obj create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.obj create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.png create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand_locked.png create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_feet.png create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_head.png create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_legs.png create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_shield.png create mode 100644 mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_torso.png diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/LICENSE.txt b/mods/3d_armor-version-0.4.11/3d_armor_stand/LICENSE.txt new file mode 100644 index 00000000..e3cb55d6 --- /dev/null +++ b/mods/3d_armor-version-0.4.11/3d_armor_stand/LICENSE.txt @@ -0,0 +1,43 @@ +[mod] 3d Armor Stand [3d_armor_stand] +===================================== + +License Source Code +------------------- + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Lecense Models +-------------- + +Copyright (C) 2016-2019 Stuart Jones - CC BY-SA 3.0 + +UV model mapping by tobyplowy(aka toby109tt) + +License Textures +---------------- + +3d_armor_stand.png +3d_armor_stand_locked.png + +Copyright (C) 2017-2019 tobyplowy - CC BY-SA 3.0 + +3d_armor_stand_feet.png +3d_armor_stand_head.png +3d_armor_stand_legs.png +3d_armor_stand_torso.png + +Copyright (C) 2016-2019 Stuart Jones - CC BY-SA 3.0 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/README.txt b/mods/3d_armor-version-0.4.11/3d_armor_stand/README.txt new file mode 100644 index 00000000..6a98ab99 --- /dev/null +++ b/mods/3d_armor-version-0.4.11/3d_armor_stand/README.txt @@ -0,0 +1,21 @@ +[mod] 3d Armor Stand [3d_armor_stand] +===================================== + +Depends: 3d_armor + +Adds a chest-like armor stand for armor storage and display. + +Crafting +-------- + +F = Wooden Fence [default:fence_wood] +S = Steel Ingot [default:steel_ingot] + ++---+---+---+ +| | F | | ++---+---+---+ +| | F | | ++---+---+---+ +| S | S | S | ++---+---+---+ + diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/depends.txt b/mods/3d_armor-version-0.4.11/3d_armor_stand/depends.txt new file mode 100644 index 00000000..fdbb2900 --- /dev/null +++ b/mods/3d_armor-version-0.4.11/3d_armor_stand/depends.txt @@ -0,0 +1,2 @@ +3d_armor + diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/init.lua b/mods/3d_armor-version-0.4.11/3d_armor_stand/init.lua new file mode 100644 index 00000000..1dd3ef6c --- /dev/null +++ b/mods/3d_armor-version-0.4.11/3d_armor_stand/init.lua @@ -0,0 +1,353 @@ +-- support for i18n +local S = armor_i18n.gettext + +local armor_stand_formspec = "size[8,7]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + default.get_hotbar_bg(0,3) .. + "list[current_name;armor_head;3,0.5;1,1;]" .. + "list[current_name;armor_torso;4,0.5;1,1;]" .. + "list[current_name;armor_legs;3,1.5;1,1;]" .. + "list[current_name;armor_feet;4,1.5;1,1;]" .. + "image[3,0.5;1,1;3d_armor_stand_head.png]" .. + "image[4,0.5;1,1;3d_armor_stand_torso.png]" .. + "image[3,1.5;1,1;3d_armor_stand_legs.png]" .. + "image[4,1.5;1,1;3d_armor_stand_feet.png]" .. + "list[current_player;main;0,3;8,1;]" .. + "list[current_player;main;0,4.25;8,3;8]" + +local elements = {"head", "torso", "legs", "feet"} + +local function drop_armor(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for _, element in pairs(elements) do + local stack = inv:get_stack("armor_"..element, 1) + if stack and stack:get_count() > 0 then + armor.drop_armor(pos, stack) + inv:set_stack("armor_"..element, 1, nil) + end + end +end + +local function get_stand_object(pos) + local object = nil + local objects = minetest.get_objects_inside_radius(pos, 0.5) or {} + for _, obj in pairs(objects) do + local ent = obj:get_luaentity() + if ent then + if ent.name == "3d_armor_stand:armor_entity" then + -- Remove duplicates + if object then + obj:remove() + else + object = obj + end + end + end + end + return object +end + +local function update_entity(pos) + local node = minetest.get_node(pos) + local object = get_stand_object(pos) + if object then + if not string.find(node.name, "3d_armor_stand:") then + object:remove() + return + end + else + object = minetest.add_entity(pos, "3d_armor_stand:armor_entity") + end + if object then + local texture = "3d_armor_trans.png" + local textures = {} + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local yaw = 0 + if inv then + for _, element in pairs(elements) do + local stack = inv:get_stack("armor_"..element, 1) + if stack:get_count() == 1 then + local item = stack:get_name() or "" + local def = stack:get_definition() or {} + local groups = def.groups or {} + if groups["armor_"..element] then + if def.texture then + table.insert(textures, def.texture) + else + table.insert(textures, item:gsub("%:", "_")..".png") + end + end + end + end + end + if #textures > 0 then + texture = table.concat(textures, "^") + end + if node.param2 then + local rot = node.param2 % 4 + if rot == 1 then + yaw = 3 * math.pi / 2 + elseif rot == 2 then + yaw = math.pi + elseif rot == 3 then + yaw = math.pi / 2 + end + end + object:setyaw(yaw) + object:set_properties({textures={texture}}) + end +end + +local function has_locked_armor_stand_privilege(meta, player) + local name = "" + if player then + if minetest.check_player_privs(player, "protection_bypass") then + return true + end + name = player:get_player_name() + end + if name ~= meta:get_string("owner") then + return false + end + return true +end + +local function add_hidden_node(pos, player) + local p = {x=pos.x, y=pos.y + 1, z=pos.z} + local name = player:get_player_name() + local node = minetest.get_node(p) + if node.name == "air" and not minetest.is_protected(pos, name) then + minetest.set_node(p, {name="3d_armor_stand:top"}) + end +end + +local function remove_hidden_node(pos) + local p = {x=pos.x, y=pos.y + 1, z=pos.z} + local node = minetest.get_node(p) + if node.name == "3d_armor_stand:top" then + minetest.remove_node(p) + end +end + +minetest.register_node("3d_armor_stand:top", { + description = S("Armor stand top"), + paramtype = "light", + drawtype = "plantlike", + sunlight_propagates = true, + walkable = true, + pointable = false, + diggable = false, + buildable_to = false, + drop = "", + groups = {not_in_creative_inventory = 1}, + on_blast = function() end, + tiles = {"3d_armor_trans.png"}, +}) + +minetest.register_node("3d_armor_stand:armor_stand", { + description = S("Armor stand"), + drawtype = "mesh", + mesh = "3d_armor_stand.obj", + tiles = {"3d_armor_stand.png"}, + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + }, + }, + groups = {choppy=2, oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", armor_stand_formspec) + meta:set_string("infotext", S("Armor Stand")) + local inv = meta:get_inventory() + for _, element in pairs(elements) do + inv:set_size("armor_"..element, 1) + end + end, + can_dig = function(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for _, element in pairs(elements) do + if not inv:is_empty("armor_"..element) then + return false + end + end + return true + end, + after_place_node = function(pos, placer) + minetest.add_entity(pos, "3d_armor_stand:armor_entity") + add_hidden_node(pos, placer) + end, + allow_metadata_inventory_put = function(pos, listname, index, stack) + local def = stack:get_definition() or {} + local groups = def.groups or {} + if groups[listname] then + return 1 + end + return 0 + end, + allow_metadata_inventory_move = function(pos) + return 0 + end, + on_metadata_inventory_put = function(pos) + update_entity(pos) + end, + on_metadata_inventory_take = function(pos) + update_entity(pos) + end, + after_destruct = function(pos) + update_entity(pos) + remove_hidden_node(pos) + end, + on_blast = function(pos) + drop_armor(pos) + armor.drop_armor(pos, "3d_armor_stand:armor_stand") + minetest.remove_node(pos) + end, +}) + +minetest.register_node("3d_armor_stand:locked_armor_stand", { + description = S("Locked Armor stand"), + drawtype = "mesh", + mesh = "3d_armor_stand.obj", + tiles = {"3d_armor_stand_locked.png"}, + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + }, + }, + groups = {choppy=2, oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", armor_stand_formspec) + meta:set_string("infotext", S("Armor Stand")) + meta:set_string("owner", "") + local inv = meta:get_inventory() + for _, element in pairs(elements) do + inv:set_size("armor_"..element, 1) + end + end, + can_dig = function(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for _, element in pairs(elements) do + if not inv:is_empty("armor_"..element) then + return false + end + end + return true + end, + after_place_node = function(pos, placer) + minetest.add_entity(pos, "3d_armor_stand:armor_entity") + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner"))) + add_hidden_node(pos, placer) + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if not has_locked_armor_stand_privilege(meta, player) then + return 0 + end + local def = stack:get_definition() or {} + local groups = def.groups or {} + if groups[listname] then + return 1 + end + return 0 + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if not has_locked_armor_stand_privilege(meta, player) then + return 0 + end + return stack:get_count() + end, + allow_metadata_inventory_move = function(pos) + return 0 + end, + on_metadata_inventory_put = function(pos) + update_entity(pos) + end, + on_metadata_inventory_take = function(pos) + update_entity(pos) + end, + after_destruct = function(pos) + update_entity(pos) + remove_hidden_node(pos) + end, + on_blast = function(pos) + -- Not affected by TNT + end, +}) + +minetest.register_entity("3d_armor_stand:armor_entity", { + physical = true, + visual = "mesh", + mesh = "3d_armor_entity.obj", + visual_size = {x=1, y=1}, + collisionbox = {0,0,0,0,0,0}, + textures = {"3d_armor_trans.png"}, + pos = nil, + timer = 0, + on_activate = function(self) + local pos = self.object:get_pos() + if pos then + self.pos = vector.round(pos) + update_entity(pos) + end + end, + on_blast = function(self, damage) + local drops = {} + local node = minetest.get_node(self.pos) + if node.name == "3d_armor_stand:armor_stand" then + drop_armor(self.pos) + self.object:remove() + end + return false, false, drops + end, +}) + +minetest.register_abm({ + nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:armor_stand"}, + interval = 15, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local num + num = #minetest.get_objects_inside_radius(pos, 0.5) + if num > 0 then return end + update_entity(pos) + end +}) + +minetest.register_craft({ + output = "3d_armor_stand:armor_stand", + recipe = { + {"", "group:fence", ""}, + {"", "group:fence", ""}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + } +}) + +minetest.register_craft({ + output = "3d_armor_stand:locked_armor_stand", + recipe = { + {"3d_armor_stand:armor_stand", "default:steel_ingot"}, + } +}) diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_entity.obj b/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_entity.obj new file mode 100644 index 00000000..052f6925 --- /dev/null +++ b/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_entity.obj @@ -0,0 +1,193 @@ +# Blender v2.73 (sub 0) OBJ File: '3d_armor_entity_3.blend' +# www.blender.org +mtllib 3d_armor_entity.mtl +o Player_Cube +v 2.200000 9.763893 1.200000 +v 2.200000 9.763893 -1.200000 +v 2.200000 2.663871 1.200000 +v 2.200000 2.663871 -1.200000 +v -2.200000 9.763893 -1.200000 +v -2.200000 9.763893 1.200000 +v -2.200000 2.663871 -1.200000 +v -2.200000 2.663871 1.200000 +v 2.300000 13.863962 2.300000 +v 2.300000 13.863962 -2.300000 +v 2.300000 9.263885 2.300000 +v 2.300000 9.263885 -2.300000 +v -2.300000 13.863962 -2.300000 +v -2.300000 13.863962 2.300000 +v -2.300000 9.263885 -2.300000 +v -2.300000 9.263885 2.300000 +v -2.322686 2.473175 -1.300000 +v -2.322686 2.473175 1.300000 +v -4.713554 2.682348 1.300000 +v -4.713554 2.682348 -1.300000 +v -1.686446 9.745432 -1.300000 +v -1.686446 9.745432 1.300000 +v -4.077313 9.954605 1.300000 +v -4.077313 9.954605 -1.300000 +v 4.077313 9.954605 -1.300000 +v 4.077313 9.954605 1.300000 +v 1.686446 9.745432 1.300000 +v 1.686446 9.745432 -1.300000 +v 4.713554 2.682348 -1.300000 +v 4.713554 2.682348 1.300000 +v 2.322686 2.473175 1.300000 +v 2.322686 2.473175 -1.300000 +v 0.139099 2.938947 -1.200000 +v 0.139099 2.938947 1.200000 +v 0.261266 -4.059988 1.200000 +v 0.261266 -4.059988 -1.200000 +v 2.660901 -4.018101 1.190000 +v 2.660901 -4.018101 -1.210000 +v 2.538733 2.980834 1.190000 +v 2.538733 2.980834 -1.210000 +v -0.139099 2.938947 -1.200000 +v -0.139099 2.938947 1.200000 +v -0.261266 -4.059988 1.200000 +v -0.261266 -4.059988 -1.200000 +v -2.538734 2.980834 -1.210000 +v -2.538734 2.980834 1.190000 +v -2.660901 -4.018101 -1.210000 +v -2.660901 -4.018101 1.190000 +v -2.799999 -4.387500 1.390000 +v -2.799999 -4.387500 -1.410000 +v -2.800000 -0.812499 1.390000 +v -2.800000 -0.812499 -1.410000 +v -0.000000 -4.387500 -1.400000 +v -0.000000 -4.387500 1.400000 +v -0.000000 -0.812499 1.400000 +v -0.000000 -0.812499 -1.400000 +v 2.800000 -0.812499 -1.410000 +v 2.800000 -0.812499 1.390000 +v 2.799999 -4.387500 -1.410000 +v 2.799999 -4.387500 1.390000 +v 0.000000 -4.387500 -1.400000 +v 0.000000 -4.387500 1.400000 +v 0.000000 -0.812499 1.400000 +v 0.000000 -0.812499 -1.400000 +v 2.267006 13.830965 2.267006 +v 2.267006 13.830965 -2.267006 +v 2.267006 9.296881 2.267006 +v 2.267006 9.296881 -2.267006 +v -2.267006 13.830965 -2.267006 +v -2.267006 13.830965 2.267006 +v -2.267006 9.296881 -2.267006 +v -2.267006 9.296881 2.267006 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.312500 0.000000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.437500 0.500000 +vt 0.312500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.375000 +vt 0.625000 0.000000 +vt 0.625000 0.375000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.750000 0.750000 +vt 0.750000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.750000 +vt 0.875000 1.000000 +vt 0.750000 0.500000 +vt 0.875000 0.500000 +vt 1.000000 0.750000 +vt 1.000000 0.500000 +vt 0.750000 0.375000 +vt 0.812500 0.500000 +vt 0.812500 0.375000 +vt 0.687500 0.375000 +vt 0.687500 0.500000 +vt 0.687500 0.000000 +vt 0.750000 0.000000 +vt 0.812500 0.000000 +vt 0.875000 0.375000 +vt 0.875000 0.000000 +vt 0.125000 0.375000 +vt 0.062500 0.375000 +vt 0.062500 0.500000 +vt 0.125000 0.500000 +vt 0.187500 0.375000 +vt 0.187500 0.500000 +vt 0.000000 0.375000 +vt 0.000000 0.000000 +vt 0.062500 0.000000 +vt 0.187500 0.000000 +vt 0.125000 0.000000 +vt 0.437500 0.875000 +vt 0.437500 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.875000 +vt 0.250000 0.875000 +vt 0.312500 0.875000 +vt 0.312500 0.656250 +vt 0.250000 0.656250 +vt 0.500000 0.875000 +vt 0.437500 0.656250 +vt 0.500000 0.656250 +vt 0.375000 0.656250 +vt 0.312500 1.000000 +usemtl Armor +s off +f 1/1 3/2 4/3 2/4 +f 5/5 6/6 1/7 2/4 +f 8/6 7/5 4/8 3/9 +f 5/5 2/4 4/3 7/10 +f 7/10 8/11 6/12 5/5 +f 8/11 3/13 1/14 6/12 +f 9/15 11/16 12/17 10/18 +f 13/19 14/20 9/21 10/18 +f 12/22 11/23 16/20 15/19 +f 13/19 10/18 12/17 15/24 +f 14/22 13/19 15/24 16/25 +f 9/26 14/22 16/25 11/27 +f 17/28 18/24 19/29 20/30 +f 24/31 23/32 22/24 21/28 +f 23/31 24/14 20/13 19/33 +f 24/31 21/28 17/34 20/33 +f 21/28 22/30 18/35 17/34 +f 22/30 23/36 19/37 18/35 +f 27/30 31/35 30/37 26/36 +f 28/28 32/34 31/35 27/30 +f 25/31 29/33 32/34 28/28 +f 26/31 30/33 29/13 25/14 +f 25/31 28/28 27/24 26/32 +f 32/28 29/30 30/29 31/24 +f 40/38 33/39 34/40 39/41 +f 36/42 38/38 37/41 35/43 +f 39/44 37/45 38/46 40/39 +f 34/1 35/2 37/47 39/42 +f 40/38 38/48 36/46 33/39 +f 33/42 36/47 35/48 34/38 +f 45/38 46/41 42/40 41/39 +f 41/42 42/38 43/48 44/47 +f 45/38 41/39 44/46 47/48 +f 42/1 46/42 48/47 43/2 +f 46/44 45/39 47/46 48/45 +f 44/42 43/43 48/41 47/38 +f 53/49 54/50 49/51 50/52 +f 51/53 52/54 50/55 49/56 +f 55/57 51/49 49/58 54/59 +f 52/52 56/54 53/55 50/60 +f 56/49 55/52 54/60 53/58 +f 52/52 51/51 55/61 56/54 +f 64/49 61/58 62/60 63/52 +f 57/52 59/60 61/55 64/54 +f 63/57 62/59 60/58 58/49 +f 58/53 60/56 59/55 57/54 +f 61/49 59/52 60/51 62/50 +f 57/52 64/54 63/61 58/51 +f 65/15 66/18 68/17 67/16 +f 69/19 66/18 65/21 70/20 +f 68/22 71/19 72/20 67/23 +f 69/19 71/24 68/17 66/18 +f 70/22 72/25 71/24 69/19 +f 65/26 67/27 72/25 70/22 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.obj b/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.obj new file mode 100644 index 00000000..0df6dc78 --- /dev/null +++ b/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.obj @@ -0,0 +1,280 @@ +# Blender v2.72 (sub 0) OBJ File: '' +# www.blender.org +mtllib 3d_armor_stand.mtl +o Armor_Stand_Player_Cube_Stand +v 0.062500 0.125002 -0.062500 +v 0.062500 -0.437500 -0.062500 +v 0.062500 -0.437500 0.062500 +v 0.062500 0.125002 0.062500 +v -0.187500 0.250004 0.062500 +v -0.187500 0.250004 -0.062500 +v -0.250000 0.250004 -0.062500 +v -0.250000 0.250004 0.062500 +v -0.062500 -0.437500 -0.062500 +v -0.062500 -0.437500 0.062500 +v -0.187500 -0.437500 0.062500 +v -0.187500 -0.437500 -0.062500 +v -0.187500 0.125002 0.062500 +v -0.187500 0.125002 -0.062500 +v -0.187500 0.937504 0.062500 +v -0.187500 0.937504 -0.062500 +v -0.375000 0.937504 -0.062500 +v -0.375000 0.937504 0.062500 +v -0.062500 0.125002 0.062500 +v 0.187500 0.125002 -0.062500 +v 0.187500 -0.437500 -0.062500 +v -0.062500 0.125002 -0.062500 +v -0.250000 0.125007 -0.062500 +v -0.250000 0.125007 0.062500 +v 0.187500 -0.437500 0.062500 +v 0.187500 0.125002 0.062500 +v -0.062500 0.937504 0.062500 +v -0.187500 0.812504 0.062500 +v -0.062500 0.812504 0.062500 +v -0.062500 0.937504 -0.062500 +v 0.187500 0.250004 -0.062500 +v 0.187500 0.250004 0.062500 +v 0.250000 0.250004 0.062500 +v 0.250000 0.250004 -0.062500 +v 0.250000 0.125007 0.062500 +v 0.250000 0.125007 -0.062500 +v 0.187500 0.812504 0.062500 +v 0.187500 0.812504 -0.062500 +v 0.375000 0.812504 -0.062500 +v 0.375000 0.812504 0.062500 +v 0.187500 0.937504 -0.062500 +v 0.187500 0.937504 0.062500 +v 0.375000 0.937504 0.062500 +v 0.375000 0.937504 -0.062500 +v 0.062500 0.937504 -0.062500 +v 0.062500 0.937504 0.062500 +v -0.062500 0.812504 -0.062500 +v -0.187500 0.812504 -0.062500 +v 0.062500 0.812504 -0.062500 +v 0.062500 0.812504 0.062500 +v -0.375000 0.812504 -0.062500 +v -0.375000 0.812504 0.062500 +v -0.062500 0.250004 0.062500 +v 0.062500 0.250004 0.062500 +v 0.062500 0.250004 -0.062500 +v -0.062500 0.250004 -0.062500 +v -0.062500 1.312504 -0.062500 +v 0.062500 1.312504 -0.062500 +v -0.062500 1.312504 0.062500 +v 0.062500 1.312504 0.062500 +v -0.500000 -0.437500 -0.500000 +v -0.500000 -0.437500 0.500000 +v 0.500000 -0.437500 0.500000 +v 0.500000 -0.437500 -0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +vt 0.062500 0.140625 +vt 0.062500 0.000000 +vt 0.093750 0.000000 +vt 0.093750 0.140625 +vt 0.140625 0.234375 +vt 0.140625 0.203125 +vt 0.156250 0.203125 +vt 0.156250 0.234375 +vt 0.093750 0.171875 +vt 0.062500 0.171875 +vt 0.218750 0.140625 +vt 0.187500 0.140625 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.078125 0.437500 +vt 0.078125 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.437500 +vt 0.250000 0.140625 +vt 0.250000 0.000000 +vt 0.031250 0.140625 +vt 0.031250 0.000000 +vt 0.156250 0.140625 +vt 0.156250 0.000000 +vt 0.187500 0.203125 +vt 0.156250 0.171875 +vt 0.187500 0.171875 +vt 0.125000 0.000000 +vt 0.125000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.000000 +vt 0.328125 0.437500 +vt 0.296875 0.437500 +vt 0.296875 0.406250 +vt 0.328125 0.406250 +vt 0.109375 0.437500 +vt 0.109375 0.468750 +vt 0.046875 0.203125 +vt 0.046875 0.234375 +vt 0.031250 0.234375 +vt 0.031250 0.203125 +vt 0.000000 0.203125 +vt 0.000000 0.171875 +vt 0.031250 0.171875 +vt 0.265625 0.468750 +vt 0.265625 0.437500 +vt 0.218750 0.437500 +vt 0.218750 0.468750 +vt 0.218750 0.171875 +vt 0.171875 0.468750 +vt 0.171875 0.437500 +vt 0.078125 0.406250 +vt 0.031250 0.406250 +vt 0.140625 0.468750 +vt 0.140625 0.437500 +vt 0.140625 0.406250 +vt 0.171875 0.406250 +vt 0.109375 0.406250 +vt 0.359375 0.437500 +vt 0.359375 0.406250 +vt 0.390625 0.406250 +vt 0.390625 0.437500 +vt 0.437500 0.406250 +vt 0.437500 0.437500 +vt 0.000000 0.437500 +vt 0.000000 0.406250 +vt 0.250000 0.437500 +vt 0.218750 0.406250 +vt 0.250000 0.406250 +vt 0.359375 0.468750 +vt 0.406250 0.468750 +vt 0.406250 0.437500 +vt 0.109375 0.234375 +vt 0.078125 0.234375 +vt 0.078125 0.203125 +vt 0.109375 0.203125 +vt 0.062500 0.468750 +vt 0.062500 0.562500 +vt 0.031250 0.562500 +vt 0.328125 0.468750 +vt 0.296875 0.468750 +vt 0.062500 0.593750 +vt 0.031250 0.593750 +vt 0.093750 0.468750 +vt 0.093750 0.562500 +vt 0.125000 0.468750 +vt 0.125000 0.562500 +vt 0.000000 0.562500 +vt 0.000000 0.468750 +vt 0.078125 0.171875 +vt 0.046875 0.171875 +vt 0.265625 0.203125 +vt 0.265625 0.171875 +vt 0.296875 0.171875 +vt 0.296875 0.203125 +vt 0.265625 0.234375 +vt 0.281250 0.234375 +vt 0.281250 0.203125 +vt 0.312500 0.171875 +vt 0.312500 0.203125 +vt 0.140625 0.171875 +vt 0.171875 0.234375 +vt 0.171875 0.203125 +vt 0.109375 0.171875 +vt 0.234375 0.203125 +vt 0.203125 0.203125 +vt 0.203125 0.171875 +vt 0.234375 0.171875 +vt 0.234375 0.234375 +vt 0.203125 0.234375 +vt 0.062500 0.375000 +vt 0.062500 0.234375 +vt 0.093750 0.234375 +vt 0.093750 0.375000 +vt 0.031250 0.375000 +vt 0.125000 0.234375 +vt 0.125000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.234375 +vt 0.218750 0.375000 +vt 0.187500 0.375000 +vt 0.187500 0.234375 +vt 0.218750 0.234375 +vt 0.250000 0.375000 +vt 0.250000 0.234375 +vt 0.156250 0.375000 +vt 0.250000 1.000000 +vt 0.250000 0.750000 +vt 0.500000 0.750000 +vt 0.500000 1.000000 +vt 0.750000 0.750000 +vt 0.750000 1.000000 +vt 0.750000 0.734375 +vt 1.000000 0.734375 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.734375 +vt 0.250000 0.734375 +vt 0.500000 0.734375 +usemtl Stand +s off +f 1/1 2/2 3/3 4/4 +f 5/5 6/6 7/7 8/8 +f 9/1 10/4 11/9 12/10 +f 13/11 14/12 12/13 11/14 +f 15/15 16/16 17/17 18/18 +f 19/19 13/11 11/14 10/20 +f 2/2 1/1 20/21 21/22 +f 14/12 22/23 9/24 12/13 +f 8/25 7/7 23/26 24/27 +f 4/4 3/3 25/28 26/29 +f 22/23 19/29 10/28 9/24 +f 26/30 25/31 21/22 20/21 +f 27/32 15/33 28/34 29/35 +f 16/16 15/15 27/36 30/37 +f 31/38 32/39 33/40 34/41 +f 33/42 35/43 36/44 34/41 +f 37/45 38/46 39/47 40/48 +f 2/49 21/27 25/12 3/11 +f 41/50 42/51 43/47 44/48 +f 38/52 41/15 44/18 39/53 +f 41/50 45/54 46/55 42/51 +f 16/51 30/55 47/56 48/57 +f 41/15 38/52 49/58 45/36 +f 46/59 50/60 37/61 42/62 +f 42/62 37/61 40/63 43/64 +f 43/65 40/66 39/53 44/18 +f 18/67 17/47 51/68 52/69 +f 28/34 15/33 18/67 52/69 +f 16/51 48/57 51/68 17/47 +f 48/59 28/70 52/71 51/72 +f 53/73 54/74 55/75 56/76 +f 30/77 57/78 58/79 45/17 +f 50/60 46/59 27/32 29/35 +f 29/80 47/32 49/33 50/81 +f 47/56 30/55 45/36 49/58 +f 57/78 59/82 60/83 58/79 +f 27/84 59/85 57/78 30/77 +f 46/86 60/87 59/85 27/84 +f 45/17 58/79 60/88 46/89 +f 1/90 55/75 31/38 20/91 +f 54/92 4/93 26/94 32/95 +f 26/92 20/96 36/97 35/98 +f 20/91 31/38 34/41 36/44 +f 32/95 26/94 35/99 33/100 +f 6/6 14/101 23/26 7/7 +f 14/102 13/103 24/7 23/8 +f 6/6 56/76 22/104 14/101 +f 53/105 5/106 13/107 19/108 +f 13/107 5/106 8/25 24/27 +f 1/90 22/104 56/76 55/75 +f 53/105 19/108 4/93 54/92 +f 1/109 4/105 19/106 22/110 +f 49/111 55/112 54/113 50/114 +f 38/115 31/40 55/112 49/111 +f 50/114 54/113 32/116 37/117 +f 37/118 32/119 31/40 38/115 +f 28/120 48/121 6/122 5/123 +f 29/124 28/120 5/123 53/125 +f 48/121 47/126 56/8 6/122 +f 47/126 29/117 53/116 56/8 +usemtl Base +f 61/127 62/128 63/129 64/130 +f 65/129 66/131 67/132 68/130 +f 62/131 68/133 67/134 63/135 +f 63/136 67/137 66/138 64/128 +f 61/129 64/128 66/138 65/139 +f 62/131 61/129 65/139 68/133 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.png b/mods/3d_armor-version-0.4.11/3d_armor_stand/models/3d_armor_stand.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb26de9d803bcbf7890390ccbcee527361cfe1a GIT binary patch literal 1628 zcmV-i2BZ0jP)zV5HGJAW%*B(^K`<`}I_hpd#+wyXRiMdH~IncZy#c3 za|a7@W(X=^FzjPfORv|f%%8Xc+U+*ZI-IlAY9Xn1IO&RsJLf>AC_kjzA0X@irF>9X z0RzK6Azy}iB4{D~U?U@#oeZnyC~g%A?ud01!BS~Ey3 z-ENF^7NtCtr*PI`t>fIebH59Jq9I_6Aq+yKkXV}{gg{D*j_CT7Zq{*|MDkp z0IfArO7tLQuI3S^l0ni3Ahqd!o@f(Ab&_@uwcqJkXEEAT=1<%J=g*(VIfs)eKgWIS zeoY?^2Bg*y$2}TvWL{E>YFO(qCfh~jE9U3tEAc0u1fM*4f|MSfvj`+oitNvmcv4Xd zYuS#aX|cF4s1XJ=c6W9w^G`$$c=&L0BqV&_NBIh)4efTDMx#Ni)gp=_=H}*TwOTAM zFSEF~h}OCizbeF}_57syGt4l<3^U9y!wfUr+*o%vH`d)*TX&%au3oO=dES}Zcyag6 zb@yQF1wU+c`19Hu#f8mhF>n9z0)PMfUt*dKFd~PqtTwr_+B{PpFk%4TllYz_jONdd z0d#85Wb79Pc+rY^b7cu%Ns_)kdj_!9;d@yme1CsCD-ANsdxNAq{Z*jc2OM>SF1@Yw zl`KBX{|ETTKOc$w8QNIB`tGqPKePPViR}Y!yt~eWtrsID@O4;gHj4XmhPC8{h@I6 z&1W$;-dzWvtQ}5TO#g0LATM*}q_(xwX8iuC*8*WQ&*rnEe~y+XzNs<5ILt6PRL`eP zJIHdEH?9TVTv;lNkYn1kgUomJC@tW7l1s}ABZQ;0!>Kkv7|rwe=?(y^%?O=Znv3<~ zhUY)MI+ncJjHW9Gs32me6^|shG))h#?|Vk>`qR+q9ZG^`|5q5f3M^NI+%u-Z^$*G6 z+qbT{@df9*-dwB~VRGE{k3Rk8R5nC~#yP0<@sZ~N2l_ug_PpR!dcfT~*Z-%NAv(2% zHvqh~c5&qTho5|XsysnG*m}YEdBCrseE&HA)Z^}*>+W@4@!7}kxX(U*XKG%d9XjXu z^4rbV67E0TWtyP!-Ms&Bm+ODK!t=c@|9Sd~n;Yvc*8sU3&c|!b2HIHn!FyLvUCbZq z1IjVK)50{zJY^~jFfMka6vYnbp^$5Xd|b54Q{V}5T+m!xtn=gc9@^L<6!MO*JO=o2 zd++ocV7#>Xo*YqtuPq_dpaus?m#dfS$F{xWW1ZTmdTFY{Xuep`TC*{7vE1{Ik59V@ a%JE-LjdXE6c;~f7=T)} zMmzXdUwPGOXZ*5V0zA)Sa`Fh;Sgf%~3`j{78LG8P{7)PoFK|rr?ISu?E9 zm<#cw7Y}%4MFDE{8kI_=ZG6WGn7=z84?Z$T&rb)ROe9`42Wu^XA7G58QmJ5!VQ_G; zZG5}db`03Lb0^wZ0RD055^}|b`}_OTHuvw}C!f#r@Zm#7_l!~~6foLQtyVMmHp0j>ns%fyU zqFgTH3KvJj6KKT?A&5kiNR#O!!CDMDvKf5GV?eoFPSeux@Gy=eXf~TzYtx@E9C~|t zP)gC?-;eZMj4>=NEoJb=7<|vq^wEkn#u5a62H$ZH0BAHDG#gE-)hg0;sYeQ>RBN?> zs#h@9#1l3aV=RS20i{%mFBEpfgUa-=ij~qux-uoBP$+bsfGCOx`~cwydU|@edFv*% zYAw^|(W6HU4i2UsP_Nf9D|@^ZZ;Zxq9E5NQ{D6AB0VtYEA%sJi3yE};!FQa1d_E6= z@B2(lOkkrX!V8GBCW>M&a9x*3X{6_(lp<0Q!V!c$VY-if-^W^uQ4NF_ppC&1V5}hs zd?KZZbd-8lg6}v1N-2a8sD`E|=TgyvMy(EjHhLvalnBFKYNcwLCXF>jDry_waRPSi z*bxUip?OrPV^(r{v(Z4Ch)ShOzCZSoT$sZcn|g-yBz=8-ZQ(nf1#aECg%B>TH8==_ zaN?gUaD^lnu$M)cg~(ZYG>x|ac!>5=f+oGWzXKJaOk;Ve*Bw{oNgu{BZnu(Mwl2I*-{>m zA;5D5o+}8#zO6%m(q>EU{gi-v#R|`k4&q5ct**8n0mfK7H{J;srsw0-AmX^!s4aJY z7D)b>n)=X2TJgIx-%B5!_{s0VSbll>J8_JVf;UdRiz5X8p1F=T5r6;V&(rpk$KC{M z`QYqN)AnEe=1CBOeZ_ob~HW`zq_y1LoQ$b=Q`ZQOP99w#V*`FWBeDck}-F*^CyrHdp5J zpWT(F!`VBPG~l&rhqvFmx~a9oW3_-M#kyKxZlT25_Fb<9g0PR-I~yNIOA4s2Az-aV z&G?|hq32dVBXyg0ND0_T3p_hIn39lKw`m8Ftm;Nuz;gwAhIVEE8)=74O+XO#@#*aa z0LDf_ls1eE^rj8&-hcR5@YqP$T`@rVAq&MyCb((6TE{1zk+{C}yNm#UXyp`!N)9Zy zWQ4>sy216=$>CG4zhJ+9;QWiI^bGyq@t##>kn3m^T0Pj4^qr03s$`-4qc5T$Z> z_D+SbELX9PVETG|_U4PO#X<7tsT+7wJn{La^?X8EUoDO z;?8TC>%>YkGiiL7nY%~v%9Z&3no@aF+S$`bZL3$TwKFFU+cPH)cg-iXb;so1KR^3K zK(hb4hJa)>r>`$^^u-D8E-mw)+YdQ5xz8pVAd$n#_4r606&d^5k^P%)&#$WkTIKFS zF;;zFIyCxt#*#8wimvbg(W>l{A}Gvx88z6d4o3!hQ|-_d1gsT1t#*5%Mx(ZzzWBJk zP{VUY>M318z*?~*gp;mtvK10-kX)zbau;}lSSx6D5Ac|s literal 0 HcmV?d00001 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_feet.png b/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_feet.png new file mode 100644 index 0000000000000000000000000000000000000000..6b34d666170181f0151c150d0ac5ecc73ac56e55 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-dBg(*J||{XR#ZqNNXROjR+K)`vT%}%K@5)re`*qg z4?nlg7f(imuY7!b|Jm($Bnp4ZTW&Qpm>}-=g^}U^X2}8#CZi~z6%3xPelF{r5}E)s CBQ9V7 literal 0 HcmV?d00001 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_head.png b/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_head.png new file mode 100644 index 0000000000000000000000000000000000000000..864bf5cfc1e1fa34f5d4670e033b4574db5bb918 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfQea<6xKA8gn{fZABJoqrby`6n^Zv4KQg9a?E&Hl!E&NDu&Qe#Rm zeem=1bDs0_?T?>S&tTAOV4bg`7rpWoQy1?6h8;qJiaQl~7;>j8OMdc^js;r7;OXk; Jvd$@?2>@ZWHPrwB literal 0 HcmV?d00001 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_legs.png b/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_legs.png new file mode 100644 index 0000000000000000000000000000000000000000..5441f0c47ef55360a5503a5828083a1e7b4276d5 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfIEGmC zzMZ_0i@}h?IXB&2YyQ0cQ}<^3?TXRXWtW}hIngGtrE&s!giq&Hv5*_66l9Q$j7D*d^O|C%e3v`?AaUHPadH@FZrNR9UA#!Zovj7BP6b L`njxgN@xNArJy)- literal 0 HcmV?d00001 diff --git a/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_torso.png b/mods/3d_armor-version-0.4.11/3d_armor_stand/textures/3d_armor_stand_torso.png new file mode 100644 index 0000000000000000000000000000000000000000..1856baea87c8c740711c5003cd8af1612e78660d GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfU%a54lYYQz-RJR(xx?J>ve{T8Q-$x3=izTv~lla mxB3IzjF&I{u%D=@cZ;_u%gD`8t