write something there
21
mods/3d_armor/3d_armor_stand/README.txt
Normal file
|
@ -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 |
|
||||
+---+---+---+
|
||||
|
445
mods/3d_armor/3d_armor_stand/init.lua
Normal file
|
@ -0,0 +1,445 @@
|
|||
-- support for i18n
|
||||
local S = minetest.get_translator(minetest.get_current_modname())
|
||||
|
||||
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 = "blank.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:set_yaw(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},
|
||||
is_ground_content = false,
|
||||
on_blast = function() end,
|
||||
tiles = {"blank.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"},
|
||||
use_texture_alpha = "clip",
|
||||
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},
|
||||
is_ground_content = false,
|
||||
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"},
|
||||
use_texture_alpha = "clip",
|
||||
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},
|
||||
is_ground_content = false,
|
||||
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_node("3d_armor_stand:shared_armor_stand", {
|
||||
description = S("Shared Armor Stand"),
|
||||
drawtype = "mesh",
|
||||
mesh = "3d_armor_stand.obj",
|
||||
tiles = {"3d_armor_stand_shared.png"},
|
||||
use_texture_alpha = "clip",
|
||||
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},
|
||||
is_ground_content = false,
|
||||
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("Shared 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")
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("infotext", S("Shared Armor Stand"))
|
||||
add_hidden_node(pos, placer)
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
if not minetest.is_player(player) or minetest.is_protected(pos, player:get_player_name()) 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)
|
||||
if not minetest.is_player(player) or minetest.is_protected(pos, player:get_player_name()) 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", {
|
||||
initial_properties = {
|
||||
physical = true,
|
||||
visual = "mesh",
|
||||
mesh = "3d_armor_entity.obj",
|
||||
visual_size = {x=1, y=1},
|
||||
collisionbox = {0,0,0,0,0,0},
|
||||
textures = {"blank.png"},
|
||||
},
|
||||
_pos = nil,
|
||||
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:shared_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"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "3d_armor_stand:shared_armor_stand",
|
||||
recipe = {
|
||||
{"3d_armor_stand:armor_stand", "default:copper_ingot"},
|
||||
}
|
||||
})
|
5
mods/3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr
Normal file
|
@ -0,0 +1,5 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=Rüstungsständeroberseite
|
||||
Armor Stand=Rüstungsständer
|
||||
Locked Armor Stand=Abgeschlossener Rüstungsständer
|
||||
Armor Stand (owned by @1)=Rüstungsständer (Eigentum von @1)
|
5
mods/3d_armor/3d_armor_stand/locale/3d_armor_stand.eo.tr
Normal file
|
@ -0,0 +1,5 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=Armaĵtenila Supro
|
||||
Armor Stand=Armaĵtenilo
|
||||
Locked Armor Stand=Ŝlosita Armaĵtenilo
|
||||
Armor Stand (owned by @1)=Ŝlosita Armaĵtenilo (posedata de @1)
|
6
mods/3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr
Normal file
|
@ -0,0 +1,6 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=
|
||||
Armor Stand=Soporte de armadura
|
||||
Locked Armor Stand=Soporte de armadura privado
|
||||
Shared Armor Stand=Soporte de armadura compartido
|
||||
Armor Stand (owned by @1)=Soporte de armadura (de @1)
|
5
mods/3d_armor/3d_armor_stand/locale/3d_armor_stand.fr.tr
Normal file
|
@ -0,0 +1,5 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=Haut de support d'armure
|
||||
Armor Stand=Support d'armure
|
||||
Locked Armor Stand=Support d'armure verrouillé
|
||||
Armor Stand (owned by @1)=Support d'armure (propriété de @1)
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=Topo do suporte de armadura
|
||||
Armor Stand=Suporte de Armadura
|
||||
Locked Armor Stand=Suporte de armadura trancado
|
||||
Armor Stand (owned by @1)=Suporte de Armadura (dono: @1)
|
5
mods/3d_armor/3d_armor_stand/locale/3d_armor_stand.ru.tr
Normal file
|
@ -0,0 +1,5 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=верх стойки для брони
|
||||
Armor Stand=стойка для брони
|
||||
Locked Armor Stand=стойка для брони с замком
|
||||
Armor Stand (owned by @1)=стойка для бони (владелец @1)
|
5
mods/3d_armor/3d_armor_stand/locale/3d_armor_stand.sv.tr
Normal file
|
@ -0,0 +1,5 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=Rustningställstopp
|
||||
Armor Stand=Rustningställ
|
||||
Locked Armor Stand=Låst rustningställ
|
||||
Armor Stand (owned by @1)=Rustningställ (ägd av @1)
|
6
mods/3d_armor/3d_armor_stand/locale/template.txt
Normal file
|
@ -0,0 +1,6 @@
|
|||
# textdomain: 3d_armor_stand
|
||||
Armor Stand Top=
|
||||
Armor Stand=
|
||||
Locked Armor Stand=
|
||||
Shared Armor Stand=
|
||||
Armor Stand (owned by @1)=
|
2
mods/3d_armor/3d_armor_stand/mod.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
name = 3d_armor_stand
|
||||
depends = 3d_armor
|
193
mods/3d_armor/3d_armor_stand/models/3d_armor_entity.obj
Normal file
|
@ -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
|
280
mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj
Normal file
|
@ -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
|
BIN
mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
mods/3d_armor/3d_armor_stand/models/3d_armor_stand_locked.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
mods/3d_armor/3d_armor_stand/models/3d_armor_stand_shared.png
Normal file
After Width: | Height: | Size: 1,011 B |
BIN
mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png
Normal file
After Width: | Height: | Size: 160 B |
BIN
mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_head.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png
Normal file
After Width: | Height: | Size: 159 B |
BIN
mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_shield.png
Normal file
After Width: | Height: | Size: 166 B |
BIN
mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png
Normal file
After Width: | Height: | Size: 191 B |