mods that hopefully work for a TechAge-based pack

This commit is contained in:
tangent committed 2026-09-09 06:27:51 -06:00
1 parent 4e6b08d194
commit c27db2a537
6234 files changed
+375578

No files matched your search

+21
View 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 |
+---+---+---+
+370
View File
@@ -0,0 +1,370 @@
-- support for i18n
local S = minetest.get_translator(minetest.get_current_modname())
local armor_stand_formspec = "size[8,7]" ..
armor.add_formspec_list("current_name", "main", 3, 0.5, 2, 1) ..
armor.add_formspec_list("current_name", "main", 3, 1.5, 2, 1, 2) ..
"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]" ..
"listring[current_name;main]" ..
"listring[current_player;main]"
local elements = {"head", "torso", "legs", "feet"}
local function drop_armor(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for i = 1, 4 do
local stack = inv:get_stack("main", i)
if stack and stack:get_count() > 0 then
armor.drop_armor(pos, stack)
inv:set_stack("main", i, 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 i, element in ipairs(elements) do
local stack = inv:get_stack("main", i)
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"},
})
local function register_armor_stand(def)
local function owns_armor_stand(pos, meta, player)
if def.name == "locked_armor_stand" and not has_locked_armor_stand_privilege(meta, player) then
return false
end
local has_access = minetest.is_player(player) and not minetest.is_protected(pos, player:get_player_name())
if def.name == "shared_armor_stand" and not has_access then
return false
end
return true
end
minetest.register_node("3d_armor_stand:" .. def.name, {
description = def.description,
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {def.texture},
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 = armor.sounds.wood,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", def.description)
if def.name == "locked_armor_stand" then
meta:set_string("owner", "")
end
local inv = meta:get_inventory()
inv:set_size("main", 4)
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if not inv:is_empty("main") then
return false
end
return true
end,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
if def.name == "locked_armor_stand" then
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner")))
elseif def.name == "shared_armor_stand" then
meta:set_string("infotext", def.description)
end
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not owns_armor_stand(pos, meta, player) then
return 0
end
local inv = meta:get_inventory()
local stack_def = stack:get_definition() or {}
local groups = stack_def.groups or {}
for i, element in ipairs(elements) do
if groups["armor_"..element] and inv:get_stack(listname, i):is_empty() then
return 1
end
end
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not owns_armor_stand(pos, meta, player) then
return 0
end
return 1
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos, listname, index, stack)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack_def = stack:get_definition() or {}
local groups = stack_def.groups or {}
for i, element in ipairs(elements) do
if groups["armor_"..element] then
inv:set_stack(listname, i, stack)
if index ~= i then
inv:set_stack(listname, index, nil)
end
break
end
end
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 = def.on_blast
})
end
register_armor_stand({
name = "armor_stand",
description = S("Armor Stand"),
texture = "3d_armor_stand.png",
on_blast = function(pos)
drop_armor(pos)
armor.drop_armor(pos, "3d_armor_stand:armor_stand")
minetest.remove_node(pos)
end
})
register_armor_stand({
name = "locked_armor_stand",
description = S("Locked Armor Stand"),
texture = "3d_armor_stand_locked.png"
})
register_armor_stand({
name = "shared_armor_stand",
description = S("Shared Armor Stand"),
texture = "3d_armor_stand_shared.png"
})
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_lbm({
label = "Update armor stand inventories",
name = "3d_armor_stand:update_inventories",
nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:shared_armor_stand", "3d_armor_stand:armor_stand"},
run_at_every_load = false,
action = function(pos, node)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local lists = inv:get_lists()
for _, element in pairs(elements) do
if not lists["armor_"..element] then
-- Abort to avoid item loss in case env_meta.txt is corrupted/deleted
return
end
end
inv:set_lists({main = {
lists.armor_head[1],
lists.armor_torso[1],
lists.armor_legs[1],
lists.armor_feet[1]
}})
meta:set_string("formspec", armor_stand_formspec)
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"},
}
})
@@ -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)
@@ -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)
@@ -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)
@@ -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)
+6
View 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)=Стойка для Брони (владалец: @1)
@@ -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)
+5
View File
@@ -0,0 +1,5 @@
# textdomain: 3d_armor_stand
Armor Stand Top=Верх Стійки для Броні
Armor Stand=Стійка для Броні
Locked Armor Stand=Закрита Стійка для Броні
Armor Stand (owned by @1)=Стійка для Броні (власник @1)
@@ -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
View File
@@ -0,0 +1,2 @@
name = 3d_armor_stand
depends = 3d_armor
@@ -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
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B