[minetest-mod-3d-armor] 01/03: New upstream version 0.4.5
Julien Puydt
julien.puydt at laposte.net
Wed Jan 11 09:55:41 UTC 2017
This is an automated email from the git hooks/post-receive script.
jpuydt-guest pushed a commit to branch master
in repository minetest-mod-3d-armor.
commit 8ac0ae2acb2b374cd2775796599cb27ef40ff73a
Author: Julien Puydt <julien.puydt at laposte.net>
Date: Sun Dec 25 23:13:48 2016 +0100
New upstream version 0.4.5
---
.gitignore | 8 +
3d_armor/README.txt | 24 +
3d_armor/admin.lua | 45 ++
3d_armor/armor.conf.example | 61 ++
3d_armor/armor.lua | 635 +++++++++++++++++++++
3d_armor/crafting_guide.txt | 79 +++
3d_armor/depends.txt | 6 +
3d_armor/description.txt | 1 +
3d_armor/init.lua | 254 +++++++++
3d_armor/models/3d_armor_character.b3d | Bin 0 -> 141046 bytes
3d_armor/models/3d_armor_character.blend | Bin 0 -> 991996 bytes
3d_armor/textures/3d_armor_boots_admin.png | Bin 0 -> 291 bytes
3d_armor/textures/3d_armor_boots_admin_preview.png | Bin 0 -> 1413 bytes
3d_armor/textures/3d_armor_boots_bronze.png | Bin 0 -> 321 bytes
.../textures/3d_armor_boots_bronze_preview.png | Bin 0 -> 1446 bytes
3d_armor/textures/3d_armor_boots_cactus.png | Bin 0 -> 308 bytes
.../textures/3d_armor_boots_cactus_preview.png | Bin 0 -> 1413 bytes
3d_armor/textures/3d_armor_boots_crystal.png | Bin 0 -> 494 bytes
.../textures/3d_armor_boots_crystal_preview.png | Bin 0 -> 2009 bytes
3d_armor/textures/3d_armor_boots_diamond.png | Bin 0 -> 295 bytes
.../textures/3d_armor_boots_diamond_preview.png | Bin 0 -> 1460 bytes
3d_armor/textures/3d_armor_boots_gold.png | Bin 0 -> 287 bytes
3d_armor/textures/3d_armor_boots_gold_preview.png | Bin 0 -> 1413 bytes
3d_armor/textures/3d_armor_boots_mithril.png | Bin 0 -> 216 bytes
.../textures/3d_armor_boots_mithril_preview.png | Bin 0 -> 1387 bytes
3d_armor/textures/3d_armor_boots_steel.png | Bin 0 -> 316 bytes
3d_armor/textures/3d_armor_boots_steel_preview.png | Bin 0 -> 1460 bytes
3d_armor/textures/3d_armor_boots_wood.png | Bin 0 -> 274 bytes
3d_armor/textures/3d_armor_boots_wood_preview.png | Bin 0 -> 1424 bytes
3d_armor/textures/3d_armor_chestplate_admin.png | Bin 0 -> 782 bytes
.../textures/3d_armor_chestplate_admin_preview.png | Bin 0 -> 1269 bytes
3d_armor/textures/3d_armor_chestplate_bronze.png | Bin 0 -> 556 bytes
.../3d_armor_chestplate_bronze_preview.png | Bin 0 -> 1296 bytes
3d_armor/textures/3d_armor_chestplate_cactus.png | Bin 0 -> 712 bytes
.../3d_armor_chestplate_cactus_preview.png | Bin 0 -> 1269 bytes
3d_armor/textures/3d_armor_chestplate_crystal.png | Bin 0 -> 1313 bytes
.../3d_armor_chestplate_crystal_preview.png | Bin 0 -> 1738 bytes
3d_armor/textures/3d_armor_chestplate_diamond.png | Bin 0 -> 475 bytes
.../3d_armor_chestplate_diamond_preview.png | Bin 0 -> 1221 bytes
3d_armor/textures/3d_armor_chestplate_gold.png | Bin 0 -> 430 bytes
.../textures/3d_armor_chestplate_gold_preview.png | Bin 0 -> 1187 bytes
3d_armor/textures/3d_armor_chestplate_mithril.png | Bin 0 -> 669 bytes
.../3d_armor_chestplate_mithril_preview.png | Bin 0 -> 1425 bytes
3d_armor/textures/3d_armor_chestplate_steel.png | Bin 0 -> 537 bytes
.../textures/3d_armor_chestplate_steel_preview.png | Bin 0 -> 1296 bytes
3d_armor/textures/3d_armor_chestplate_wood.png | Bin 0 -> 453 bytes
.../textures/3d_armor_chestplate_wood_preview.png | Bin 0 -> 1192 bytes
3d_armor/textures/3d_armor_helmet_admin.png | Bin 0 -> 463 bytes
.../textures/3d_armor_helmet_admin_preview.png | Bin 0 -> 883 bytes
3d_armor/textures/3d_armor_helmet_bronze.png | Bin 0 -> 583 bytes
.../textures/3d_armor_helmet_bronze_preview.png | Bin 0 -> 891 bytes
3d_armor/textures/3d_armor_helmet_cactus.png | Bin 0 -> 533 bytes
.../textures/3d_armor_helmet_cactus_preview.png | Bin 0 -> 883 bytes
3d_armor/textures/3d_armor_helmet_crystal.png | Bin 0 -> 1176 bytes
.../textures/3d_armor_helmet_crystal_preview.png | Bin 0 -> 1243 bytes
3d_armor/textures/3d_armor_helmet_diamond.png | Bin 0 -> 508 bytes
.../textures/3d_armor_helmet_diamond_preview.png | Bin 0 -> 902 bytes
3d_armor/textures/3d_armor_helmet_gold.png | Bin 0 -> 475 bytes
3d_armor/textures/3d_armor_helmet_gold_preview.png | Bin 0 -> 893 bytes
3d_armor/textures/3d_armor_helmet_mithril.png | Bin 0 -> 511 bytes
.../textures/3d_armor_helmet_mithril_preview.png | Bin 0 -> 853 bytes
3d_armor/textures/3d_armor_helmet_steel.png | Bin 0 -> 549 bytes
.../textures/3d_armor_helmet_steel_preview.png | Bin 0 -> 887 bytes
3d_armor/textures/3d_armor_helmet_wood.png | Bin 0 -> 472 bytes
3d_armor/textures/3d_armor_helmet_wood_preview.png | Bin 0 -> 878 bytes
3d_armor/textures/3d_armor_inv_boots_admin.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_bronze.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_cactus.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_crystal.png | Bin 0 -> 200 bytes
3d_armor/textures/3d_armor_inv_boots_diamond.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_gold.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_mithril.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_steel.png | Bin 0 -> 129 bytes
3d_armor/textures/3d_armor_inv_boots_wood.png | Bin 0 -> 129 bytes
.../textures/3d_armor_inv_chestplate_admin.png | Bin 0 -> 142 bytes
.../textures/3d_armor_inv_chestplate_bronze.png | Bin 0 -> 142 bytes
.../textures/3d_armor_inv_chestplate_cactus.png | Bin 0 -> 142 bytes
.../textures/3d_armor_inv_chestplate_crystal.png | Bin 0 -> 236 bytes
.../textures/3d_armor_inv_chestplate_diamond.png | Bin 0 -> 142 bytes
3d_armor/textures/3d_armor_inv_chestplate_gold.png | Bin 0 -> 142 bytes
.../textures/3d_armor_inv_chestplate_mithril.png | Bin 0 -> 142 bytes
.../textures/3d_armor_inv_chestplate_steel.png | Bin 0 -> 142 bytes
3d_armor/textures/3d_armor_inv_chestplate_wood.png | Bin 0 -> 142 bytes
3d_armor/textures/3d_armor_inv_helmet_admin.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_bronze.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_cactus.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_crystal.png | Bin 0 -> 219 bytes
3d_armor/textures/3d_armor_inv_helmet_diamond.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_gold.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_mithril.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_steel.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_helmet_wood.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_leggings_admin.png | Bin 0 -> 140 bytes
3d_armor/textures/3d_armor_inv_leggings_bronze.png | Bin 0 -> 155 bytes
3d_armor/textures/3d_armor_inv_leggings_cactus.png | Bin 0 -> 184 bytes
.../textures/3d_armor_inv_leggings_crystal.png | Bin 0 -> 233 bytes
.../textures/3d_armor_inv_leggings_diamond.png | Bin 0 -> 155 bytes
3d_armor/textures/3d_armor_inv_leggings_gold.png | Bin 0 -> 155 bytes
.../textures/3d_armor_inv_leggings_mithril.png | Bin 0 -> 155 bytes
3d_armor/textures/3d_armor_inv_leggings_steel.png | Bin 0 -> 155 bytes
3d_armor/textures/3d_armor_inv_leggings_wood.png | Bin 0 -> 155 bytes
3d_armor/textures/3d_armor_leggings_admin.png | Bin 0 -> 351 bytes
.../textures/3d_armor_leggings_admin_preview.png | Bin 0 -> 1340 bytes
3d_armor/textures/3d_armor_leggings_bronze.png | Bin 0 -> 335 bytes
.../textures/3d_armor_leggings_bronze_preview.png | Bin 0 -> 1389 bytes
3d_armor/textures/3d_armor_leggings_cactus.png | Bin 0 -> 424 bytes
.../textures/3d_armor_leggings_cactus_preview.png | Bin 0 -> 1340 bytes
3d_armor/textures/3d_armor_leggings_crystal.png | Bin 0 -> 835 bytes
.../textures/3d_armor_leggings_crystal_preview.png | Bin 0 -> 1917 bytes
3d_armor/textures/3d_armor_leggings_diamond.png | Bin 0 -> 306 bytes
.../textures/3d_armor_leggings_diamond_preview.png | Bin 0 -> 1388 bytes
3d_armor/textures/3d_armor_leggings_gold.png | Bin 0 -> 298 bytes
.../textures/3d_armor_leggings_gold_preview.png | Bin 0 -> 1341 bytes
3d_armor/textures/3d_armor_leggings_mithril.png | Bin 0 -> 497 bytes
.../textures/3d_armor_leggings_mithril_preview.png | Bin 0 -> 1380 bytes
3d_armor/textures/3d_armor_leggings_steel.png | Bin 0 -> 331 bytes
.../textures/3d_armor_leggings_steel_preview.png | Bin 0 -> 1387 bytes
3d_armor/textures/3d_armor_leggings_wood.png | Bin 0 -> 285 bytes
.../textures/3d_armor_leggings_wood_preview.png | Bin 0 -> 1399 bytes
3d_armor/textures/3d_armor_trans.png | Bin 0 -> 75 bytes
3d_armor/textures/3d_armor_ui_form.png | Bin 0 -> 8332 bytes
3d_armor/textures/character_preview.png | Bin 0 -> 907 bytes
3d_armor/textures/inventory_plus_armor.png | Bin 0 -> 544 bytes
3d_armor_stand/LICENSE.txt | 7 +
3d_armor_stand/README.txt | 21 +
3d_armor_stand/depends.txt | 2 +
3d_armor_stand/init.lua | 301 ++++++++++
3d_armor_stand/models/3d_armor_entity.obj | 193 +++++++
3d_armor_stand/models/3d_armor_stand.obj | 191 +++++++
3d_armor_stand/textures/3d_armor_stand_feet.png | Bin 0 -> 243 bytes
3d_armor_stand/textures/3d_armor_stand_head.png | Bin 0 -> 262 bytes
3d_armor_stand/textures/3d_armor_stand_legs.png | Bin 0 -> 249 bytes
3d_armor_stand/textures/3d_armor_stand_torso.png | Bin 0 -> 274 bytes
LICENSE.md | 11 +
README.md | 83 +++
description.txt | 1 +
hazmat_suit/README.txt | 10 +
hazmat_suit/depends.txt | 2 +
hazmat_suit/description.txt | 1 +
hazmat_suit/init.lua | 126 ++++
.../textures/hazmat_suit_inv_boots_hazmat.png | Bin 0 -> 198 bytes
.../textures/hazmat_suit_inv_chestplate_hazmat.png | Bin 0 -> 160 bytes
.../textures/hazmat_suit_inv_helmet_hazmat.png | Bin 0 -> 248 bytes
.../textures/hazmat_suit_inv_leggings_hazmat.png | Bin 0 -> 189 bytes
.../textures/hazmat_suit_inv_sleeve_hazmat.png | Bin 0 -> 189 bytes
.../textures/hazmat_suit_inv_suit_hazmat.png | Bin 0 -> 302 bytes
hazmat_suit/textures/hazmat_suit_suit_hazmat.png | Bin 0 -> 792 bytes
.../textures/hazmat_suit_suit_hazmat_preview.png | Bin 0 -> 1005 bytes
modpack.txt | 0
screenshot.png | Bin 0 -> 148905 bytes
shields/README.txt | 6 +
shields/crafting_guide.txt | 36 ++
shields/depends.txt | 2 +
shields/description.txt | 1 +
shields/init.lua | 126 ++++
shields/textures/shields_inv_shield_admin.png | Bin 0 -> 461 bytes
shields/textures/shields_inv_shield_bronze.png | Bin 0 -> 490 bytes
shields/textures/shields_inv_shield_cactus.png | Bin 0 -> 318 bytes
shields/textures/shields_inv_shield_crystal.png | Bin 0 -> 662 bytes
shields/textures/shields_inv_shield_diamond.png | Bin 0 -> 477 bytes
.../shields_inv_shield_enhanced_cactus.png | Bin 0 -> 322 bytes
.../textures/shields_inv_shield_enhanced_wood.png | Bin 0 -> 583 bytes
shields/textures/shields_inv_shield_gold.png | Bin 0 -> 449 bytes
shields/textures/shields_inv_shield_mithril.png | Bin 0 -> 526 bytes
shields/textures/shields_inv_shield_steel.png | Bin 0 -> 546 bytes
shields/textures/shields_inv_shield_wood.png | Bin 0 -> 529 bytes
shields/textures/shields_shield_admin.png | Bin 0 -> 423 bytes
shields/textures/shields_shield_admin_preview.png | Bin 0 -> 609 bytes
shields/textures/shields_shield_bronze.png | Bin 0 -> 502 bytes
shields/textures/shields_shield_bronze_preview.png | Bin 0 -> 1494 bytes
shields/textures/shields_shield_cactus.png | Bin 0 -> 325 bytes
shields/textures/shields_shield_cactus_preview.png | Bin 0 -> 536 bytes
shields/textures/shields_shield_crystal.png | Bin 0 -> 622 bytes
.../textures/shields_shield_crystal_preview.png | Bin 0 -> 1791 bytes
shields/textures/shields_shield_diamond.png | Bin 0 -> 489 bytes
.../textures/shields_shield_diamond_preview.png | Bin 0 -> 1480 bytes
.../textures/shields_shield_enhanced_cactus.png | Bin 0 -> 330 bytes
.../shields_shield_enhanced_cactus_preview.png | Bin 0 -> 530 bytes
shields/textures/shields_shield_enhanced_wood.png | Bin 0 -> 597 bytes
.../shields_shield_enhanced_wood_preview.png | Bin 0 -> 787 bytes
shields/textures/shields_shield_gold.png | Bin 0 -> 462 bytes
shields/textures/shields_shield_gold_preview.png | Bin 0 -> 1454 bytes
shields/textures/shields_shield_mithril.png | Bin 0 -> 489 bytes
.../textures/shields_shield_mithril_preview.png | Bin 0 -> 1480 bytes
shields/textures/shields_shield_steel.png | Bin 0 -> 561 bytes
shields/textures/shields_shield_steel_preview.png | Bin 0 -> 1545 bytes
shields/textures/shields_shield_wood.png | Bin 0 -> 555 bytes
shields/textures/shields_shield_wood_preview.png | Bin 0 -> 2055 bytes
technic_armor/README.txt | 9 +
technic_armor/depends.txt | 3 +
technic_armor/description.txt | 1 +
technic_armor/init.lua | 56 ++
.../textures/technic_armor_boots_brass.png | Bin 0 -> 366 bytes
.../textures/technic_armor_boots_brass_preview.png | Bin 0 -> 309 bytes
.../textures/technic_armor_boots_carbon.png | Bin 0 -> 271 bytes
.../technic_armor_boots_carbon_preview.png | Bin 0 -> 239 bytes
.../textures/technic_armor_boots_cast.png | Bin 0 -> 366 bytes
.../textures/technic_armor_boots_cast_preview.png | Bin 0 -> 309 bytes
.../textures/technic_armor_boots_lead.png | Bin 0 -> 499 bytes
.../textures/technic_armor_boots_lead_preview.png | Bin 0 -> 423 bytes
.../textures/technic_armor_boots_silver.png | Bin 0 -> 339 bytes
.../technic_armor_boots_silver_preview.png | Bin 0 -> 304 bytes
.../textures/technic_armor_boots_stainless.png | Bin 0 -> 503 bytes
.../technic_armor_boots_stainless_preview.png | Bin 0 -> 2608 bytes
technic_armor/textures/technic_armor_boots_tin.png | Bin 0 -> 358 bytes
.../textures/technic_armor_boots_tin_preview.png | Bin 0 -> 304 bytes
.../textures/technic_armor_chestplate_brass.png | Bin 0 -> 559 bytes
.../technic_armor_chestplate_brass_preview.png | Bin 0 -> 528 bytes
.../textures/technic_armor_chestplate_carbon.png | Bin 0 -> 534 bytes
.../technic_armor_chestplate_carbon_preview.png | Bin 0 -> 526 bytes
.../textures/technic_armor_chestplate_cast.png | Bin 0 -> 559 bytes
.../technic_armor_chestplate_cast_preview.png | Bin 0 -> 528 bytes
.../textures/technic_armor_chestplate_lead.png | Bin 0 -> 1419 bytes
.../technic_armor_chestplate_lead_preview.png | Bin 0 -> 936 bytes
.../textures/technic_armor_chestplate_silver.png | Bin 0 -> 547 bytes
.../technic_armor_chestplate_silver_preview.png | Bin 0 -> 521 bytes
.../technic_armor_chestplate_stainless.png | Bin 0 -> 966 bytes
.../technic_armor_chestplate_stainless_preview.png | Bin 0 -> 4394 bytes
.../textures/technic_armor_chestplate_tin.png | Bin 0 -> 546 bytes
.../technic_armor_chestplate_tin_preview.png | Bin 0 -> 512 bytes
.../textures/technic_armor_helmet_brass.png | Bin 0 -> 533 bytes
.../technic_armor_helmet_brass_preview.png | Bin 0 -> 347 bytes
.../textures/technic_armor_helmet_carbon.png | Bin 0 -> 436 bytes
.../technic_armor_helmet_carbon_preview.png | Bin 0 -> 280 bytes
.../textures/technic_armor_helmet_cast.png | Bin 0 -> 533 bytes
.../textures/technic_armor_helmet_cast_preview.png | Bin 0 -> 347 bytes
.../textures/technic_armor_helmet_lead.png | Bin 0 -> 893 bytes
.../textures/technic_armor_helmet_lead_preview.png | Bin 0 -> 430 bytes
.../textures/technic_armor_helmet_silver.png | Bin 0 -> 506 bytes
.../technic_armor_helmet_silver_preview.png | Bin 0 -> 346 bytes
.../textures/technic_armor_helmet_stainless.png | Bin 0 -> 696 bytes
.../technic_armor_helmet_stainless_preview.png | Bin 0 -> 2109 bytes
.../textures/technic_armor_helmet_tin.png | Bin 0 -> 506 bytes
.../textures/technic_armor_helmet_tin_preview.png | Bin 0 -> 347 bytes
.../textures/technic_armor_inv_boots_brass.png | Bin 0 -> 196 bytes
.../textures/technic_armor_inv_boots_carbon.png | Bin 0 -> 192 bytes
.../textures/technic_armor_inv_boots_cast.png | Bin 0 -> 192 bytes
.../textures/technic_armor_inv_boots_lead.png | Bin 0 -> 268 bytes
.../textures/technic_armor_inv_boots_silver.png | Bin 0 -> 196 bytes
.../textures/technic_armor_inv_boots_stainless.png | Bin 0 -> 216 bytes
.../textures/technic_armor_inv_boots_tin.png | Bin 0 -> 196 bytes
.../technic_armor_inv_chestplate_brass.png | Bin 0 -> 204 bytes
.../technic_armor_inv_chestplate_carbon.png | Bin 0 -> 205 bytes
.../textures/technic_armor_inv_chestplate_cast.png | Bin 0 -> 205 bytes
.../textures/technic_armor_inv_chestplate_lead.png | Bin 0 -> 361 bytes
.../technic_armor_inv_chestplate_silver.png | Bin 0 -> 204 bytes
.../technic_armor_inv_chestplate_stainless.png | Bin 0 -> 234 bytes
.../textures/technic_armor_inv_chestplate_tin.png | Bin 0 -> 204 bytes
.../textures/technic_armor_inv_helmet_brass.png | Bin 0 -> 194 bytes
.../textures/technic_armor_inv_helmet_carbon.png | Bin 0 -> 198 bytes
.../textures/technic_armor_inv_helmet_cast.png | Bin 0 -> 198 bytes
.../textures/technic_armor_inv_helmet_lead.png | Bin 0 -> 293 bytes
.../textures/technic_armor_inv_helmet_silver.png | Bin 0 -> 194 bytes
.../technic_armor_inv_helmet_stainless.png | Bin 0 -> 214 bytes
.../textures/technic_armor_inv_helmet_tin.png | Bin 0 -> 194 bytes
.../textures/technic_armor_inv_leggings_brass.png | Bin 0 -> 190 bytes
.../textures/technic_armor_inv_leggings_carbon.png | Bin 0 -> 194 bytes
.../textures/technic_armor_inv_leggings_cast.png | Bin 0 -> 194 bytes
.../textures/technic_armor_inv_leggings_lead.png | Bin 0 -> 287 bytes
.../textures/technic_armor_inv_leggings_silver.png | Bin 0 -> 190 bytes
.../technic_armor_inv_leggings_stainless.png | Bin 0 -> 216 bytes
.../textures/technic_armor_inv_leggings_tin.png | Bin 0 -> 190 bytes
.../textures/technic_armor_inv_shield_brass.png | Bin 0 -> 532 bytes
.../textures/technic_armor_inv_shield_carbon.png | Bin 0 -> 575 bytes
.../textures/technic_armor_inv_shield_cast.png | Bin 0 -> 546 bytes
.../textures/technic_armor_inv_shield_lead.png | Bin 0 -> 707 bytes
.../textures/technic_armor_inv_shield_silver.png | Bin 0 -> 582 bytes
.../technic_armor_inv_shield_stainless.png | Bin 0 -> 591 bytes
.../textures/technic_armor_inv_shield_tin.png | Bin 0 -> 524 bytes
.../textures/technic_armor_leggings_brass.png | Bin 0 -> 379 bytes
.../technic_armor_leggings_brass_preview.png | Bin 0 -> 359 bytes
.../textures/technic_armor_leggings_carbon.png | Bin 0 -> 279 bytes
.../technic_armor_leggings_carbon_preview.png | Bin 0 -> 265 bytes
.../textures/technic_armor_leggings_cast.png | Bin 0 -> 379 bytes
.../technic_armor_leggings_cast_preview.png | Bin 0 -> 359 bytes
.../textures/technic_armor_leggings_lead.png | Bin 0 -> 586 bytes
.../technic_armor_leggings_lead_preview.png | Bin 0 -> 535 bytes
.../textures/technic_armor_leggings_silver.png | Bin 0 -> 354 bytes
.../technic_armor_leggings_silver_preview.png | Bin 0 -> 323 bytes
.../textures/technic_armor_leggings_stainless.png | Bin 0 -> 501 bytes
.../technic_armor_leggings_stainless_preview.png | Bin 0 -> 2945 bytes
.../textures/technic_armor_leggings_tin.png | Bin 0 -> 371 bytes
.../technic_armor_leggings_tin_preview.png | Bin 0 -> 359 bytes
.../textures/technic_armor_shield_brass.png | Bin 0 -> 544 bytes
.../technic_armor_shield_brass_preview.png | Bin 0 -> 735 bytes
.../textures/technic_armor_shield_carbon.png | Bin 0 -> 587 bytes
.../technic_armor_shield_carbon_preview.png | Bin 0 -> 773 bytes
.../textures/technic_armor_shield_cast.png | Bin 0 -> 559 bytes
.../textures/technic_armor_shield_cast_preview.png | Bin 0 -> 751 bytes
.../textures/technic_armor_shield_lead.png | Bin 0 -> 740 bytes
.../textures/technic_armor_shield_lead_preview.png | Bin 0 -> 1146 bytes
.../textures/technic_armor_shield_silver.png | Bin 0 -> 596 bytes
.../technic_armor_shield_silver_preview.png | Bin 0 -> 784 bytes
.../textures/technic_armor_shield_stainless.png | Bin 0 -> 605 bytes
.../technic_armor_shield_stainless_preview.png | Bin 0 -> 787 bytes
.../textures/technic_armor_shield_tin.png | Bin 0 -> 537 bytes
.../textures/technic_armor_shield_tin_preview.png | Bin 0 -> 729 bytes
wieldview/README.txt | 15 +
wieldview/depends.txt | 2 +
wieldview/description.txt | 1 +
wieldview/init.lua | 76 +++
wieldview/transform.lua | 24 +
302 files changed, 2420 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6e4e459
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+## Generic ignorable patterns and files
+*~
+.*.swp
+*bak*
+tags
+*.vim
+armor.conf
+
diff --git a/3d_armor/README.txt b/3d_armor/README.txt
new file mode 100644
index 0000000..224f81c
--- /dev/null
+++ b/3d_armor/README.txt
@@ -0,0 +1,24 @@
+[mod] Visible Player Armor [3d_armor]
+=====================================
+
+Depends: default
+
+Recommends: inventory_plus or unified_inventory (use only one)
+
+Adds craftable armor that is visible to other players. Each armor item worn contributes to
+a player's armor group level making them less vulnerable to weapons.
+
+Armor takes damage when a player is hurt but also offers a percentage chance of healing.
+Overall level is boosted by 10% when wearing a full matching set.
+
+Fire protection added by TenPlus1 when using crystal armor if Ethereal mod active, level 1
+protects against torches, level 2 for crystal spike, level 3 for fire, level 5 for lava.
+
+Configuration
+-------------
+
+Armor can be configured by adding a file called armor.conf in 3d_armor mod and/or world directory.
+see armor.conf.example for all available options.
+
+Note: worldpath config settings override any settings made in the mod's directory.
+
diff --git a/3d_armor/admin.lua b/3d_armor/admin.lua
new file mode 100644
index 0000000..f499987
--- /dev/null
+++ b/3d_armor/admin.lua
@@ -0,0 +1,45 @@
+minetest.register_alias("adminboots","3d_armor:boots_admin")
+minetest.register_alias("adminhelmet","3d_armor:helmet_admin")
+minetest.register_alias("adminchestplate","3d_armor:chestplate_admin")
+minetest.register_alias("adminleggings","3d_armor:leggings_admin")
+
+minetest.register_tool("3d_armor:helmet_admin", {
+ description = "Admin Helmet",
+ inventory_image = "3d_armor_inv_helmet_admin.png",
+ groups = {armor_head=1000, armor_heal=1000, armor_use=0, armor_water=1, not_in_creative_inventory=1},
+ wear = 0,
+ on_drop = function(itemstack, dropper, pos)
+ return
+ end,
+})
+
+minetest.register_tool("3d_armor:chestplate_admin", {
+ description = "Admin Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_admin.png",
+ groups = {armor_torso=1000, armor_heal=1000, armor_use=0, not_in_creative_inventory=1},
+ wear = 0,
+ on_drop = function(itemstack, dropper, pos)
+ return
+ end,
+})
+
+minetest.register_tool("3d_armor:leggings_admin", {
+ description = "Admin Leggings",
+ inventory_image = "3d_armor_inv_leggings_admin.png",
+ groups = {armor_legs=1000, armor_heal=1000, armor_use=0, not_in_creative_inventory=1},
+ wear = 0,
+ on_drop = function(itemstack, dropper, pos)
+ return
+ end,
+})
+
+minetest.register_tool("3d_armor:boots_admin", {
+ description = "Admin Boots",
+ inventory_image = "3d_armor_inv_boots_admin.png",
+ groups = {armor_feet=1000, armor_heal=1000, armor_use=0, not_in_creative_inventory=1},
+ wear = 0,
+ on_drop = function(itemstack, dropper, pos)
+ return
+ end,
+})
+
diff --git a/3d_armor/armor.conf.example b/3d_armor/armor.conf.example
new file mode 100644
index 0000000..75e072d
--- /dev/null
+++ b/3d_armor/armor.conf.example
@@ -0,0 +1,61 @@
+-- Armor Configuration (defaults)
+
+-- You can remove any unwanted armor materials from this table.
+-- Note that existing armor that is removed will show up as an unknown item.
+ARMOR_MATERIALS = {
+ wood = "group:wood",
+ cactus = "default:cactus",
+ steel = "default:steel_ingot",
+ bronze = "default:bronze_ingot",
+ diamond = "default:diamond",
+ gold = "default:gold_ingot",
+ mithril = "moreores:mithril_ingot",
+ crystal = "ethereal:crystal_ingot",
+}
+
+-- Enable fire protection (defaults true if using ethereal mod)
+ARMOR_FIRE_PROTECT = false
+
+-- Fire protection nodes, (name, protection level, damage)
+ARMOR_FIRE_NODES = {
+ {"default:lava_source", 5, 4},
+ {"default:lava_flowing", 5, 4},
+ {"fire:basic_flame", 3, 4},
+ {"fire:permanent_flame", 3, 4},
+ {"ethereal:crystal_spike", 2, 1},
+ {"ethereal:fire_flower", 2, 1},
+ {"default:torch", 1, 1},
+}
+
+-- Increase this if you get initialization glitches when a player first joins.
+ARMOR_INIT_DELAY = 1
+
+-- Number of initialization attempts.
+-- Use in conjunction with ARMOR_INIT_DELAY if initialization problems persist.
+ARMOR_INIT_TIMES = 1
+
+-- Increase this if armor is not getting into bones due to server lag.
+ARMOR_BONES_DELAY = 1
+
+-- How often player armor/wield items are updated.
+ARMOR_UPDATE_TIME = 1
+
+-- Drop armor when a player dies.
+-- Uses bones mod if present, otherwise items are dropped around the player.
+ARMOR_DROP = true
+
+-- Pulverise armor when a player dies, overrides ARMOR_DROP.
+ARMOR_DESTROY = false
+
+-- You can use this to increase or decrease overall armor effectiveness,
+-- eg: ARMOR_LEVEL_MULTIPLIER = 0.5 will reduce armor level by half.
+ARMOR_LEVEL_MULTIPLIER = 1
+
+-- You can use this to increase or decrease overall armor healing,
+-- eg: ARMOR_HEAL_MULTIPLIER = 0 will disable healing altogether.
+ARMOR_HEAL_MULTIPLIER = 1
+
+-- You can use this to increase or decrease overall armor radiation protection,
+-- eg: ARMOR_RADIATION_MULTIPLIER = 0 will completely disable radiation protection.
+-- Note: patched technic mod is required
+ARMOR_RADIATION_MULTIPLIER = 1
diff --git a/3d_armor/armor.lua b/3d_armor/armor.lua
new file mode 100644
index 0000000..2bd865d
--- /dev/null
+++ b/3d_armor/armor.lua
@@ -0,0 +1,635 @@
+ARMOR_INIT_DELAY = 1
+ARMOR_INIT_TIMES = 1
+ARMOR_BONES_DELAY = 1
+ARMOR_UPDATE_TIME = 1
+ARMOR_DROP = minetest.get_modpath("bones") ~= nil
+ARMOR_DESTROY = false
+ARMOR_LEVEL_MULTIPLIER = 1
+ARMOR_HEAL_MULTIPLIER = 1
+ARMOR_RADIATION_MULTIPLIER = 1
+ARMOR_MATERIALS = {
+ wood = "group:wood",
+ cactus = "default:cactus",
+ steel = "default:steel_ingot",
+ bronze = "default:bronze_ingot",
+ diamond = "default:diamond",
+ gold = "default:gold_ingot",
+ mithril = "moreores:mithril_ingot",
+ crystal = "ethereal:crystal_ingot",
+}
+ARMOR_FIRE_PROTECT = minetest.get_modpath("ethereal") ~= nil
+ARMOR_FIRE_NODES = {
+ {"default:lava_source", 5, 8},
+ {"default:lava_flowing", 5, 8},
+ {"fire:basic_flame", 3, 4},
+ {"fire:permanent_flame", 3, 4},
+ {"ethereal:crystal_spike", 2, 1},
+ {"ethereal:fire_flower", 2, 1},
+ {"default:torch", 1, 1},
+}
+
+local skin_mod = nil
+local inv_mod = nil
+
+local modpath = minetest.get_modpath(ARMOR_MOD_NAME)
+local worldpath = minetest.get_worldpath()
+local input = io.open(modpath.."/armor.conf", "r")
+if input then
+ dofile(modpath.."/armor.conf")
+ input:close()
+ input = nil
+end
+input = io.open(worldpath.."/armor.conf", "r")
+if input then
+ dofile(worldpath.."/armor.conf")
+ input:close()
+ input = nil
+end
+if not minetest.get_modpath("moreores") then
+ ARMOR_MATERIALS.mithril = nil
+end
+if not minetest.get_modpath("ethereal") then
+ ARMOR_MATERIALS.crystal = nil
+end
+
+armor = {
+ timer = 0,
+ elements = {"head", "torso", "legs", "feet"},
+ physics = {"jump","speed","gravity"},
+ formspec = "size[8,8.5]image[2,0.75;2,4;armor_preview]"
+ .."list[current_player;main;0,4.5;8,4;]"
+ .."list[current_player;craft;4,1;3,3;]"
+ .."list[current_player;craftpreview;7,2;1,1;]"
+ .."listring[current_player;main]"
+ .."listring[current_player;craft]",
+ textures = {},
+ default_skin = "character",
+ version = "0.4.5",
+}
+
+if minetest.get_modpath("inventory_plus") then
+ inv_mod = "inventory_plus"
+ armor.formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]"
+ .."image[2.5,0.75;2,4;armor_preview]"
+ .."label[5,1;Level: armor_level]"
+ .."label[5,1.5;Heal: armor_heal]"
+ .."label[5,2;Fire: armor_fire]"
+ .."label[5,2.5;Radiation: armor_radiation]"
+ .."list[current_player;main;0,4.5;8,4;]"
+ if minetest.get_modpath("crafting") then
+ inventory_plus.get_formspec = function(player, page)
+ end
+ end
+elseif minetest.get_modpath("unified_inventory") then
+ inv_mod = "unified_inventory"
+ unified_inventory.register_button("armor", {
+ type = "image",
+ image = "inventory_plus_armor.png",
+ })
+ unified_inventory.register_page("armor", {
+ get_formspec = function(player, perplayer_formspec)
+ local fy = perplayer_formspec.formspec_y
+ local name = player:get_player_name()
+ local formspec = "background[0.06,"..fy..";7.92,7.52;3d_armor_ui_form.png]"
+ .."label[0,0;Armor]"
+ .."list[detached:"..name.."_armor;armor;0,"..fy..";2,3;]"
+ .."image[2.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]"
+ .."label[5.0,"..(fy + 0.0)..";Level: "..armor.def[name].level.."]"
+ .."label[5.0,"..(fy + 0.5)..";Heal: "..armor.def[name].heal.."]"
+ .."label[5.0,"..(fy + 1.0)..";Fire: "..armor.def[name].fire.."]"
+ .."label[5.0,"..(fy + 1.5)..";Radiation: "..armor.def[name].radiation.."]"
+ .."listring[current_player;main]"
+ .."listring[detached:"..name.."_armor;armor]"
+ return {formspec=formspec}
+ end,
+ })
+elseif minetest.get_modpath("inventory_enhanced") then
+ inv_mod = "inventory_enhanced"
+end
+
+if minetest.get_modpath("skins") then
+ skin_mod = "skins"
+elseif minetest.get_modpath("simple_skins") then
+ skin_mod = "simple_skins"
+elseif minetest.get_modpath("u_skins") then
+ skin_mod = "u_skins"
+elseif minetest.get_modpath("wardrobe") then
+ skin_mod = "wardrobe"
+end
+
+armor.def = {
+ state = 0,
+ count = 0,
+}
+
+armor.update_player_visuals = function(self, player)
+ if not player then
+ return
+ end
+ local name = player:get_player_name()
+ if self.textures[name] then
+ default.player_set_textures(player, {
+ self.textures[name].skin,
+ self.textures[name].armor,
+ self.textures[name].wielditem,
+ })
+ end
+end
+
+armor.set_player_armor = function(self, player)
+ local name, player_inv = armor:get_valid_player(player, "[set_player_armor]")
+ if not name then
+ return
+ end
+ local armor_texture = "3d_armor_trans.png"
+ local armor_level = 0
+ local armor_heal = 0
+ local armor_fire = 0
+ local armor_water = 0
+ local armor_radiation = 0
+ local state = 0
+ local items = 0
+ local elements = {}
+ local textures = {}
+ local physics_o = {speed=1,gravity=1,jump=1}
+ local material = {type=nil, count=1}
+ local preview = armor:get_preview(name) or "character_preview.png"
+ for _,v in ipairs(self.elements) do
+ elements[v] = false
+ end
+ for i=1, 6 do
+ local stack = player_inv:get_stack("armor", i)
+ local item = stack:get_name()
+ if stack:get_count() == 1 then
+ local def = stack:get_definition()
+ for k, v in pairs(elements) do
+ if v == false then
+ local level = def.groups["armor_"..k]
+ if level then
+ local texture = def.texture or item:gsub("%:", "_")
+ table.insert(textures, texture..".png")
+ preview = preview.."^"..texture.."_preview.png"
+ armor_level = armor_level + level
+ state = state + stack:get_wear()
+ items = items + 1
+ armor_heal = armor_heal + (def.groups["armor_heal"] or 0)
+ armor_fire = armor_fire + (def.groups["armor_fire"] or 0)
+ armor_water = armor_water + (def.groups["armor_water"] or 0)
+ armor_radiation = armor_radiation + (def.groups["armor_radiation"] or 0)
+ for kk,vv in ipairs(self.physics) do
+ local o_value = def.groups["physics_"..vv]
+ if o_value then
+ physics_o[vv] = physics_o[vv] + o_value
+ end
+ end
+ local mat = string.match(item, "%:.+_(.+)$")
+ if material.type then
+ if material.type == mat then
+ material.count = material.count + 1
+ end
+ else
+ material.type = mat
+ end
+ elements[k] = true
+ end
+ end
+ end
+ end
+ end
+ if minetest.get_modpath("shields") then
+ armor_level = armor_level * 0.9
+ end
+ if material.type and material.count == #self.elements then
+ armor_level = armor_level * 1.1
+ end
+ armor_level = armor_level * ARMOR_LEVEL_MULTIPLIER
+ armor_heal = armor_heal * ARMOR_HEAL_MULTIPLIER
+ armor_radiation = armor_radiation * ARMOR_RADIATION_MULTIPLIER
+ if #textures > 0 then
+ armor_texture = table.concat(textures, "^")
+ end
+ local armor_groups = {fleshy=100}
+ if armor_level > 0 then
+ armor_groups.level = math.floor(armor_level / 20)
+ armor_groups.fleshy = 100 - armor_level
+ armor_groups.radiation = 100 - armor_radiation
+ end
+ player:set_armor_groups(armor_groups)
+ player:set_physics_override(physics_o)
+ self.textures[name].armor = armor_texture
+ self.textures[name].preview = preview
+ self.def[name].state = state
+ self.def[name].count = items
+ self.def[name].level = armor_level
+ self.def[name].heal = armor_heal
+ self.def[name].jump = physics_o.jump
+ self.def[name].speed = physics_o.speed
+ self.def[name].gravity = physics_o.gravity
+ self.def[name].fire = armor_fire
+ self.def[name].water = armor_water
+ self.def[name].radiation = armor_radiation
+ self:update_player_visuals(player)
+end
+
+armor.update_armor = function(self, player)
+ -- Legacy support: Called when armor levels are changed
+ -- Other mods can hook on to this function, see hud mod for example
+end
+
+armor.get_player_skin = function(self, name)
+ local skin = nil
+ if skin_mod == "skins" or skin_mod == "simple_skins" then
+ skin = skins.skins[name]
+ elseif skin_mod == "u_skins" then
+ skin = u_skins.u_skins[name]
+ elseif skin_mod == "wardrobe" then
+ skin = string.gsub(wardrobe.playerSkins[name], "%.png$","")
+ end
+ return skin or armor.default_skin
+end
+
+armor.get_preview = function(self, name)
+ if skin_mod == "skins" then
+ return armor:get_player_skin(name).."_preview.png"
+ end
+end
+
+armor.get_armor_formspec = function(self, name)
+ if not armor.textures[name] then
+ minetest.log("error", "3d_armor: Player texture["..name.."] is nil [get_armor_formspec]")
+ return ""
+ end
+ if not armor.def[name] then
+ minetest.log("error", "3d_armor: Armor def["..name.."] is nil [get_armor_formspec]")
+ return ""
+ end
+ local formspec = armor.formspec.."list[detached:"..name.."_armor;armor;0,1;2,3;]"
+ formspec = formspec:gsub("armor_preview", armor.textures[name].preview)
+ formspec = formspec:gsub("armor_level", armor.def[name].level)
+ formspec = formspec:gsub("armor_heal", armor.def[name].heal)
+ formspec = formspec:gsub("armor_fire", armor.def[name].fire)
+ formspec = formspec:gsub("armor_radiation", armor.def[name].radiation)
+ return formspec
+end
+
+armor.update_inventory = function(self, player)
+ local name = armor:get_valid_player(player, "[set_player_armor]")
+ if not name or inv_mod == "inventory_enhanced" then
+ return
+ end
+ if inv_mod == "unified_inventory" then
+ if unified_inventory.current_page[name] == "armor" then
+ unified_inventory.set_inventory_formspec(player, "armor")
+ end
+ else
+ local formspec = armor:get_armor_formspec(name)
+ if inv_mod == "inventory_plus" then
+ formspec = formspec.."listring[current_player;main]"
+ .."listring[detached:"..name.."_armor;armor]"
+ local page = player:get_inventory_formspec()
+ if page:find("detached:"..name.."_armor") then
+ inventory_plus.set_inventory_formspec(player, formspec)
+ end
+ elseif not core.setting_getbool("creative_mode") then
+ player:set_inventory_formspec(formspec)
+ end
+ end
+end
+
+armor.get_valid_player = function(self, player, msg)
+ msg = msg or ""
+ if not player then
+ minetest.log("error", "3d_armor: Player reference is nil "..msg)
+ return
+ end
+ local name = player:get_player_name()
+ if not name then
+ minetest.log("error", "3d_armor: Player name is nil "..msg)
+ return
+ end
+ local pos = player:getpos()
+ local player_inv = player:get_inventory()
+ local armor_inv = minetest.get_inventory({type="detached", name=name.."_armor"})
+ if not pos then
+ minetest.log("error", "3d_armor: Player position is nil "..msg)
+ return
+ elseif not player_inv then
+ minetest.log("error", "3d_armor: Player inventory is nil "..msg)
+ return
+ elseif not armor_inv then
+ minetest.log("error", "3d_armor: Detached armor inventory is nil "..msg)
+ return
+ end
+ return name, player_inv, armor_inv, pos
+end
+
+-- Register Player Model
+
+default.player_register_model("3d_armor_character.b3d", {
+ animation_speed = 30,
+ textures = {
+ armor.default_skin..".png",
+ "3d_armor_trans.png",
+ "3d_armor_trans.png",
+ },
+ animations = {
+ stand = {x=0, y=79},
+ lay = {x=162, y=166},
+ walk = {x=168, y=187},
+ mine = {x=189, y=198},
+ walk_mine = {x=200, y=219},
+ sit = {x=81, y=160},
+ },
+})
+
+-- Register Callbacks
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local name = armor:get_valid_player(player, "[on_player_receive_fields]")
+ if not name or inv_mod == "inventory_enhanced" then
+ return
+ end
+ if inv_mod == "inventory_plus" and fields.armor then
+ local formspec = armor:get_armor_formspec(name)
+ inventory_plus.set_inventory_formspec(player, formspec)
+ return
+ end
+ for field, _ in pairs(fields) do
+ if string.find(field, "skins_set") then
+ minetest.after(0, function(player)
+ local skin = armor:get_player_skin(name)
+ armor.textures[name].skin = skin..".png"
+ armor:set_player_armor(player)
+ end, player)
+ end
+ end
+end)
+
+minetest.register_on_joinplayer(function(player)
+ default.player_set_model(player, "3d_armor_character.b3d")
+ local name = player:get_player_name()
+ local player_inv = player:get_inventory()
+ local armor_inv = minetest.create_detached_inventory(name.."_armor", {
+ on_put = function(inv, listname, index, stack, player)
+ player:get_inventory():set_stack(listname, index, stack)
+ armor:set_player_armor(player)
+ armor:update_inventory(player)
+ end,
+ on_take = function(inv, listname, index, stack, player)
+ player:get_inventory():set_stack(listname, index, nil)
+ armor:set_player_armor(player)
+ armor:update_inventory(player)
+ end,
+ on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ local plaver_inv = player:get_inventory()
+ local stack = inv:get_stack(to_list, to_index)
+ player_inv:set_stack(to_list, to_index, stack)
+ player_inv:set_stack(from_list, from_index, nil)
+ armor:set_player_armor(player)
+ armor:update_inventory(player)
+ end,
+ allow_put = function(inv, listname, index, stack, player)
+ return 1
+ end,
+ allow_take = function(inv, listname, index, stack, player)
+ return stack:get_count()
+ end,
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ return count
+ end,
+ })
+ if inv_mod == "inventory_plus" then
+ inventory_plus.register_button(player,"armor", "Armor")
+ end
+ armor_inv:set_size("armor", 6)
+ player_inv:set_size("armor", 6)
+ for i=1, 6 do
+ local stack = player_inv:get_stack("armor", i)
+ armor_inv:set_stack("armor", i, stack)
+ end
+ armor.def[name] = {
+ state = 0,
+ count = 0,
+ level = 0,
+ heal = 0,
+ jump = 1,
+ speed = 1,
+ gravity = 1,
+ fire = 0,
+ water = 0,
+ radiation = 0,
+ }
+ armor.textures[name] = {
+ skin = armor.default_skin..".png",
+ armor = "3d_armor_trans.png",
+ wielditem = "3d_armor_trans.png",
+ preview = armor.default_skin.."_preview.png",
+ }
+ if skin_mod == "skins" then
+ local skin = skins.skins[name]
+ if skin and skins.get_type(skin) == skins.type.MODEL then
+ armor.textures[name].skin = skin..".png"
+ end
+ elseif skin_mod == "simple_skins" then
+ local skin = skins.skins[name]
+ if skin then
+ armor.textures[name].skin = skin..".png"
+ end
+ elseif skin_mod == "u_skins" then
+ local skin = u_skins.u_skins[name]
+ if skin and u_skins.get_type(skin) == u_skins.type.MODEL then
+ armor.textures[name].skin = skin..".png"
+ end
+ elseif skin_mod == "wardrobe" then
+ local skin = wardrobe.playerSkins[name]
+ if skin then
+ armor.textures[name].skin = skin
+ end
+ end
+ if minetest.get_modpath("player_textures") then
+ local filename = minetest.get_modpath("player_textures").."/textures/player_"..name
+ local f = io.open(filename..".png")
+ if f then
+ f:close()
+ armor.textures[name].skin = "player_"..name..".png"
+ end
+ end
+ for i=1, ARMOR_INIT_TIMES do
+ minetest.after(ARMOR_INIT_DELAY * i, function(player)
+ armor:set_player_armor(player)
+ if not inv_mod then
+ armor:update_inventory(player)
+ end
+ end, player)
+ end
+end)
+
+if ARMOR_DROP == true or ARMOR_DESTROY == true then
+ armor.drop_armor = function(pos, stack)
+ local obj = minetest.add_item(pos, stack)
+ if obj then
+ obj:setvelocity({x=math.random(-1, 1), y=5, z=math.random(-1, 1)})
+ end
+ end
+ minetest.register_on_dieplayer(function(player)
+ local name, player_inv, armor_inv, pos = armor:get_valid_player(player, "[on_dieplayer]")
+ if not name then
+ return
+ end
+ local drop = {}
+ for i=1, player_inv:get_size("armor") do
+ local stack = armor_inv:get_stack("armor", i)
+ if stack:get_count() > 0 then
+ table.insert(drop, stack)
+ armor_inv:set_stack("armor", i, nil)
+ player_inv:set_stack("armor", i, nil)
+ end
+ end
+ armor:set_player_armor(player)
+ if inv_mod == "unified_inventory" then
+ unified_inventory.set_inventory_formspec(player, "craft")
+ elseif inv_mod == "inventory_plus" then
+ local formspec = inventory_plus.get_formspec(player,"main")
+ inventory_plus.set_inventory_formspec(player, formspec)
+ else
+ armor:update_inventory(player)
+ end
+ if ARMOR_DESTROY == false then
+ minetest.after(ARMOR_BONES_DELAY, function()
+ local node = minetest.get_node(vector.round(pos))
+ if node then
+ if node.name ~= "bones:bones" then
+ pos.y = pos.y+1
+ node = minetest.get_node(vector.round(pos))
+ if node.name ~= "bones:bones" then
+ minetest.log("warning", "Failed to add armor to bones node.")
+ return
+ end
+ end
+ local meta = minetest.get_meta(vector.round(pos))
+ local owner = meta:get_string("owner")
+ local inv = meta:get_inventory()
+ for _,stack in ipairs(drop) do
+ if name == owner and inv:room_for_item("main", stack) then
+ inv:add_item("main", stack)
+ else
+ armor.drop_armor(pos, stack)
+ end
+ end
+ else
+ for _,stack in ipairs(drop) do
+ armor.drop_armor(pos, stack)
+ end
+ end
+ end)
+ end
+ end)
+end
+
+minetest.register_on_player_hpchange(function(player, hp_change)
+ local name, player_inv, armor_inv = armor:get_valid_player(player, "[on_hpchange]")
+ if name and hp_change < 0 then
+
+ -- used for insta kill tools/commands like /kill (doesnt damage armor)
+ if hp_change < -100 then
+ return hp_change
+ end
+
+ local heal_max = 0
+ local state = 0
+ local items = 0
+ for i=1, 6 do
+ local stack = player_inv:get_stack("armor", i)
+ if stack:get_count() > 0 then
+ local use = stack:get_definition().groups["armor_use"] or 0
+ local heal = stack:get_definition().groups["armor_heal"] or 0
+ local item = stack:get_name()
+ stack:add_wear(use)
+ armor_inv:set_stack("armor", i, stack)
+ player_inv:set_stack("armor", i, stack)
+ state = state + stack:get_wear()
+ items = items + 1
+ if stack:get_count() == 0 then
+ local desc = minetest.registered_items[item].description
+ if desc then
+ minetest.chat_send_player(name, "Your "..desc.." got destroyed!")
+ end
+ armor:set_player_armor(player)
+ armor:update_inventory(player)
+ end
+ heal_max = heal_max + heal
+ end
+ end
+ armor.def[name].state = state
+ armor.def[name].count = items
+ heal_max = heal_max * ARMOR_HEAL_MULTIPLIER
+ if heal_max > math.random(100) then
+ hp_change = 0
+ end
+ armor:update_armor(player)
+ end
+ return hp_change
+end, true)
+
+-- Fire Protection and water breating, added by TenPlus1
+
+if ARMOR_FIRE_PROTECT == true then
+ -- override hot nodes so they do not hurt player anywhere but mod
+ for _, row in pairs(ARMOR_FIRE_NODES) do
+ if minetest.registered_nodes[row[1]] then
+ minetest.override_item(row[1], {damage_per_second = 0})
+ end
+ end
+else
+ print ("[3d_armor] Fire Nodes disabled")
+end
+
+minetest.register_globalstep(function(dtime)
+ armor.timer = armor.timer + dtime
+ if armor.timer < ARMOR_UPDATE_TIME then
+ return
+ end
+ for _,player in pairs(minetest.get_connected_players()) do
+ local name = player:get_player_name()
+ local pos = player:getpos()
+ local hp = player:get_hp()
+ -- water breathing
+ if name and armor.def[name].water > 0 then
+ if player:get_breath() < 10 then
+ player:set_breath(10)
+ end
+ end
+ -- fire protection
+ if ARMOR_FIRE_PROTECT == true
+ and name and pos and hp then
+ pos.y = pos.y + 1.4 -- head level
+ local node_head = minetest.get_node(pos).name
+ pos.y = pos.y - 1.2 -- feet level
+ local node_feet = minetest.get_node(pos).name
+ -- is player inside a hot node?
+ for _, row in pairs(ARMOR_FIRE_NODES) do
+ -- check fire protection, if not enough then get hurt
+ if row[1] == node_head or row[1] == node_feet then
+ if hp > 0 and armor.def[name].fire < row[2] then
+ hp = hp - row[3] * ARMOR_UPDATE_TIME
+ player:set_hp(hp)
+ break
+ end
+ end
+ end
+ end
+ end
+ armor.timer = 0
+end)
+
+-- kill player when command issued
+minetest.register_chatcommand("kill", {
+ params = "<name>",
+ description = "Kills player instantly",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if player then
+ player:set_hp(-1001)
+ end
+ end,
+})
diff --git a/3d_armor/crafting_guide.txt b/3d_armor/crafting_guide.txt
new file mode 100644
index 0000000..abd1519
--- /dev/null
+++ b/3d_armor/crafting_guide.txt
@@ -0,0 +1,79 @@
+3d_armor -- Crafting Guide
+--------------------------
+
+Helmets:
+
++---+---+---+
+| X | X | X |
++---+---+---+
+| X | | X |
++---+---+---+
+| | | |
++---+---+---+
+
+[3d_armor:helmet_wood] X = [default:wood]
+[3d_armor:helmet_cactus] X = [default:cactus]
+[3d_armor:helmet_steel] X = [default:steel_ingot]
+[3d_armor:helmet_bronze] X = [default:bronze_ingot]
+[3d_armor:helmet_diamond] X = [default:diamond]
+[3d_armor:helmet_gold] X = [default:gold_ingot]
+[3d_armor:helmet_mithril] X = [moreores:mithril_ingot] *
+[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] **
+
+Chestplates:
+
++---+---+---+
+| X | | X |
++---+---+---+
+| X | X | X |
++---+---+---+
+| X | X | X |
++---+---+---+
+
+[3d_armor:chestplate_wood] X = [default:wood]
+[3d_armor:chestplate_cactus] X = [default:cactus]
+[3d_armor:chestplate_steel] X = [default:steel_ingot]
+[3d_armor:chestplate_bronze] X = [default:bronze_ingot]
+[3d_armor:chestplate_diamond] X = [default:diamond]
+[3d_armor:chestplate_gold] X = [default:gold_ingot]
+[3d_armor:chestplate_mithril] X = [moreores:mithril_ingot] *
+[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] **
+
+Leggings:
+
++---+---+---+
+| X | X | X |
++---+---+---+
+| X | | X |
++---+---+---+
+| X | | X |
++---+---+---+
+
+[3d_armor:leggings_wood] X = [default:wood]
+[3d_armor:leggings_cactus] X = [default:cactus]
+[3d_armor:leggings_steel] X = [default:steel_ingot]
+[3d_armor:leggings_bronze] X = [default:bronze_ingot]
+[3d_armor:leggings_diamond] X = [default:diamond]
+[3d_armor:leggings_gold] X = [default:gold_ingot]
+[3d_armor:leggings_mithril] X = [moreores:mithril_ingot] *
+[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] **
+
+Boots:
+
++---+---+---+
+| X | | X |
++---+---+---+
+| X | | X |
++---+---+---+
+
+[3d_armor:boots_wood] X = [default:wood]
+[3d_armor:boots_cactus] X = [default:cactus]
+[3d_armor:boots_steel] X = [default:steel_ingot]
+[3d_armor:boots_bronze] X = [default:bronze_ingot
+[3d_armor:boots_diamond] X = [default:diamond]
+[3d_armor:boots_gold] X = [default:gold_ingot]
+[3d_armor:boots_mithril] X = [moreores:mithril_ingot] *
+[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] **
+
+ * Requires moreores mod by Calinou - https://forum.minetest.net/viewtopic.php?id=549
+** Requires ethereal mod by Chinchow & TenPlus1 - https://github.com/tenplus1/ethereal
diff --git a/3d_armor/depends.txt b/3d_armor/depends.txt
new file mode 100644
index 0000000..3acf737
--- /dev/null
+++ b/3d_armor/depends.txt
@@ -0,0 +1,6 @@
+default
+inventory_plus?
+unified_inventory?
+fire?
+ethereal?
+bakedclay?
diff --git a/3d_armor/description.txt b/3d_armor/description.txt
new file mode 100644
index 0000000..b0a9b0a
--- /dev/null
+++ b/3d_armor/description.txt
@@ -0,0 +1 @@
+Adds craftable armor that is visible to other players.
diff --git a/3d_armor/init.lua b/3d_armor/init.lua
new file mode 100644
index 0000000..4a2116f
--- /dev/null
+++ b/3d_armor/init.lua
@@ -0,0 +1,254 @@
+ARMOR_MOD_NAME = minetest.get_current_modname()
+dofile(minetest.get_modpath(ARMOR_MOD_NAME).."/armor.lua")
+dofile(minetest.get_modpath(ARMOR_MOD_NAME).."/admin.lua")
+
+if ARMOR_MATERIALS.wood then
+ minetest.register_tool("3d_armor:helmet_wood", {
+ description = "Wood Helmet",
+ inventory_image = "3d_armor_inv_helmet_wood.png",
+ groups = {armor_head=5, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_wood", {
+ description = "Wood Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_wood.png",
+ groups = {armor_torso=10, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_wood", {
+ description = "Wood Leggings",
+ inventory_image = "3d_armor_inv_leggings_wood.png",
+ groups = {armor_legs=5, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_wood", {
+ description = "Wood Boots",
+ inventory_image = "3d_armor_inv_boots_wood.png",
+ groups = {armor_feet=5, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.cactus then
+ minetest.register_tool("3d_armor:helmet_cactus", {
+ description = "Cactuc Helmet",
+ inventory_image = "3d_armor_inv_helmet_cactus.png",
+ groups = {armor_head=5, armor_heal=0, armor_use=1000},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_cactus", {
+ description = "Cactus Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_cactus.png",
+ groups = {armor_torso=10, armor_heal=0, armor_use=1000},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_cactus", {
+ description = "Cactus Leggings",
+ inventory_image = "3d_armor_inv_leggings_cactus.png",
+ groups = {armor_legs=5, armor_heal=0, armor_use=1000},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_cactus", {
+ description = "Cactus Boots",
+ inventory_image = "3d_armor_inv_boots_cactus.png",
+ groups = {armor_feet=5, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.steel then
+ minetest.register_tool("3d_armor:helmet_steel", {
+ description = "Steel Helmet",
+ inventory_image = "3d_armor_inv_helmet_steel.png",
+ groups = {armor_head=10, armor_heal=0, armor_use=500},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_steel", {
+ description = "Steel Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_steel.png",
+ groups = {armor_torso=15, armor_heal=0, armor_use=500},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_steel", {
+ description = "Steel Leggings",
+ inventory_image = "3d_armor_inv_leggings_steel.png",
+ groups = {armor_legs=15, armor_heal=0, armor_use=500},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_steel", {
+ description = "Steel Boots",
+ inventory_image = "3d_armor_inv_boots_steel.png",
+ groups = {armor_feet=10, armor_heal=0, armor_use=500},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.bronze then
+ minetest.register_tool("3d_armor:helmet_bronze", {
+ description = "Bronze Helmet",
+ inventory_image = "3d_armor_inv_helmet_bronze.png",
+ groups = {armor_head=10, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_bronze", {
+ description = "Bronze Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_bronze.png",
+ groups = {armor_torso=15, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_bronze", {
+ description = "Bronze Leggings",
+ inventory_image = "3d_armor_inv_leggings_bronze.png",
+ groups = {armor_legs=15, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_bronze", {
+ description = "Bronze Boots",
+ inventory_image = "3d_armor_inv_boots_bronze.png",
+ groups = {armor_feet=10, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.diamond then
+ minetest.register_tool("3d_armor:helmet_diamond", {
+ description = "Diamond Helmet",
+ inventory_image = "3d_armor_inv_helmet_diamond.png",
+ groups = {armor_head=15, armor_heal=12, armor_use=100},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_diamond", {
+ description = "Diamond Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_diamond.png",
+ groups = {armor_torso=20, armor_heal=12, armor_use=100},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_diamond", {
+ description = "Diamond Leggings",
+ inventory_image = "3d_armor_inv_leggings_diamond.png",
+ groups = {armor_legs=20, armor_heal=12, armor_use=100},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_diamond", {
+ description = "Diamond Boots",
+ inventory_image = "3d_armor_inv_boots_diamond.png",
+ groups = {armor_feet=15, armor_heal=12, armor_use=100},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.gold then
+ minetest.register_tool("3d_armor:helmet_gold", {
+ description = "Gold Helmet",
+ inventory_image = "3d_armor_inv_helmet_gold.png",
+ groups = {armor_head=10, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_gold", {
+ description = "Gold Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_gold.png",
+ groups = {armor_torso=15, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_gold", {
+ description = "Gold Leggings",
+ inventory_image = "3d_armor_inv_leggings_gold.png",
+ groups = {armor_legs=15, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_gold", {
+ description = "Gold Boots",
+ inventory_image = "3d_armor_inv_boots_gold.png",
+ groups = {armor_feet=10, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.mithril then
+ minetest.register_tool("3d_armor:helmet_mithril", {
+ description = "Mithril Helmet",
+ inventory_image = "3d_armor_inv_helmet_mithril.png",
+ groups = {armor_head=15, armor_heal=12, armor_use=50},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_mithril", {
+ description = "Mithril Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_mithril.png",
+ groups = {armor_torso=20, armor_heal=12, armor_use=50},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_mithril", {
+ description = "Mithril Leggings",
+ inventory_image = "3d_armor_inv_leggings_mithril.png",
+ groups = {armor_legs=20, armor_heal=12, armor_use=50},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_mithril", {
+ description = "Mithril Boots",
+ inventory_image = "3d_armor_inv_boots_mithril.png",
+ groups = {armor_feet=15, armor_heal=12, armor_use=50},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.crystal then
+ minetest.register_tool("3d_armor:helmet_crystal", {
+ description = "Crystal Helmet",
+ inventory_image = "3d_armor_inv_helmet_crystal.png",
+ groups = {armor_head=15, armor_heal=12, armor_use=50, armor_fire=1},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:chestplate_crystal", {
+ description = "Crystal Chestplate",
+ inventory_image = "3d_armor_inv_chestplate_crystal.png",
+ groups = {armor_torso=20, armor_heal=12, armor_use=50, armor_fire=1},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:leggings_crystal", {
+ description = "Crystal Leggings",
+ inventory_image = "3d_armor_inv_leggings_crystal.png",
+ groups = {armor_legs=20, armor_heal=12, armor_use=50, armor_fire=1},
+ wear = 0,
+ })
+ minetest.register_tool("3d_armor:boots_crystal", {
+ description = "Crystal Boots",
+ inventory_image = "3d_armor_inv_boots_crystal.png",
+ groups = {armor_feet=15, armor_heal=12, armor_use=50, physics_speed=1, physics_jump=0.5, armor_fire=1},
+ wear = 0,
+ })
+end
+
+for k, v in pairs(ARMOR_MATERIALS) do
+ minetest.register_craft({
+ output = "3d_armor:helmet_"..k,
+ recipe = {
+ {v, v, v},
+ {v, "", v},
+ {"", "", ""},
+ },
+ })
+ minetest.register_craft({
+ output = "3d_armor:chestplate_"..k,
+ recipe = {
+ {v, "", v},
+ {v, v, v},
+ {v, v, v},
+ },
+ })
+ minetest.register_craft({
+ output = "3d_armor:leggings_"..k,
+ recipe = {
+ {v, v, v},
+ {v, "", v},
+ {v, "", v},
+ },
+ })
+ minetest.register_craft({
+ output = "3d_armor:boots_"..k,
+ recipe = {
+ {v, "", v},
+ {v, "", v},
+ },
+ })
+end
+
diff --git a/3d_armor/models/3d_armor_character.b3d b/3d_armor/models/3d_armor_character.b3d
new file mode 100644
index 0000000..a24cb65
Binary files /dev/null and b/3d_armor/models/3d_armor_character.b3d differ
diff --git a/3d_armor/models/3d_armor_character.blend b/3d_armor/models/3d_armor_character.blend
new file mode 100644
index 0000000..d2031ce
Binary files /dev/null and b/3d_armor/models/3d_armor_character.blend differ
diff --git a/3d_armor/textures/3d_armor_boots_admin.png b/3d_armor/textures/3d_armor_boots_admin.png
new file mode 100644
index 0000000..a05e4c5
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_admin.png differ
diff --git a/3d_armor/textures/3d_armor_boots_admin_preview.png b/3d_armor/textures/3d_armor_boots_admin_preview.png
new file mode 100644
index 0000000..d61ab25
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_admin_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_bronze.png b/3d_armor/textures/3d_armor_boots_bronze.png
new file mode 100644
index 0000000..7cfe378
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_boots_bronze_preview.png b/3d_armor/textures/3d_armor_boots_bronze_preview.png
new file mode 100644
index 0000000..6da8019
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_bronze_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_cactus.png b/3d_armor/textures/3d_armor_boots_cactus.png
new file mode 100644
index 0000000..7dc43e3
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_boots_cactus_preview.png b/3d_armor/textures/3d_armor_boots_cactus_preview.png
new file mode 100644
index 0000000..33f9221
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_cactus_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_crystal.png b/3d_armor/textures/3d_armor_boots_crystal.png
new file mode 100644
index 0000000..50bbf20
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_boots_crystal_preview.png b/3d_armor/textures/3d_armor_boots_crystal_preview.png
new file mode 100644
index 0000000..a3ab7d1
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_crystal_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_diamond.png b/3d_armor/textures/3d_armor_boots_diamond.png
new file mode 100644
index 0000000..6678b16
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_boots_diamond_preview.png b/3d_armor/textures/3d_armor_boots_diamond_preview.png
new file mode 100644
index 0000000..eb99c4e
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_diamond_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_gold.png b/3d_armor/textures/3d_armor_boots_gold.png
new file mode 100644
index 0000000..2de3966
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_gold.png differ
diff --git a/3d_armor/textures/3d_armor_boots_gold_preview.png b/3d_armor/textures/3d_armor_boots_gold_preview.png
new file mode 100644
index 0000000..5ca40ac
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_gold_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_mithril.png b/3d_armor/textures/3d_armor_boots_mithril.png
new file mode 100644
index 0000000..3e4173b
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_boots_mithril_preview.png b/3d_armor/textures/3d_armor_boots_mithril_preview.png
new file mode 100644
index 0000000..b0c4684
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_mithril_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_steel.png b/3d_armor/textures/3d_armor_boots_steel.png
new file mode 100644
index 0000000..4664be5
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_steel.png differ
diff --git a/3d_armor/textures/3d_armor_boots_steel_preview.png b/3d_armor/textures/3d_armor_boots_steel_preview.png
new file mode 100644
index 0000000..25fc47a
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_steel_preview.png differ
diff --git a/3d_armor/textures/3d_armor_boots_wood.png b/3d_armor/textures/3d_armor_boots_wood.png
new file mode 100644
index 0000000..0ec5d6c
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_wood.png differ
diff --git a/3d_armor/textures/3d_armor_boots_wood_preview.png b/3d_armor/textures/3d_armor_boots_wood_preview.png
new file mode 100644
index 0000000..53d6d15
Binary files /dev/null and b/3d_armor/textures/3d_armor_boots_wood_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_admin.png b/3d_armor/textures/3d_armor_chestplate_admin.png
new file mode 100644
index 0000000..404d6e8
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_admin.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_admin_preview.png b/3d_armor/textures/3d_armor_chestplate_admin_preview.png
new file mode 100644
index 0000000..09325a5
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_admin_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_bronze.png b/3d_armor/textures/3d_armor_chestplate_bronze.png
new file mode 100644
index 0000000..d9c7267
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_bronze_preview.png b/3d_armor/textures/3d_armor_chestplate_bronze_preview.png
new file mode 100644
index 0000000..90d887a
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_bronze_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_cactus.png b/3d_armor/textures/3d_armor_chestplate_cactus.png
new file mode 100644
index 0000000..ee433de
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_cactus_preview.png b/3d_armor/textures/3d_armor_chestplate_cactus_preview.png
new file mode 100644
index 0000000..32bf6f6
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_cactus_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_crystal.png b/3d_armor/textures/3d_armor_chestplate_crystal.png
new file mode 100644
index 0000000..e36aa49
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_crystal_preview.png b/3d_armor/textures/3d_armor_chestplate_crystal_preview.png
new file mode 100644
index 0000000..c43015c
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_crystal_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_diamond.png b/3d_armor/textures/3d_armor_chestplate_diamond.png
new file mode 100644
index 0000000..81a7b21
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_diamond_preview.png b/3d_armor/textures/3d_armor_chestplate_diamond_preview.png
new file mode 100644
index 0000000..17e2eb8
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_diamond_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_gold.png b/3d_armor/textures/3d_armor_chestplate_gold.png
new file mode 100644
index 0000000..91b1631
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_gold.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_gold_preview.png b/3d_armor/textures/3d_armor_chestplate_gold_preview.png
new file mode 100644
index 0000000..cb11321
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_gold_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_mithril.png b/3d_armor/textures/3d_armor_chestplate_mithril.png
new file mode 100644
index 0000000..2bbeab8
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_mithril_preview.png b/3d_armor/textures/3d_armor_chestplate_mithril_preview.png
new file mode 100644
index 0000000..eca051c
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_mithril_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_steel.png b/3d_armor/textures/3d_armor_chestplate_steel.png
new file mode 100644
index 0000000..23cdbda
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_steel.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_steel_preview.png b/3d_armor/textures/3d_armor_chestplate_steel_preview.png
new file mode 100644
index 0000000..0e45907
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_steel_preview.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_wood.png b/3d_armor/textures/3d_armor_chestplate_wood.png
new file mode 100644
index 0000000..ea7a1d7
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_wood.png differ
diff --git a/3d_armor/textures/3d_armor_chestplate_wood_preview.png b/3d_armor/textures/3d_armor_chestplate_wood_preview.png
new file mode 100644
index 0000000..cdca575
Binary files /dev/null and b/3d_armor/textures/3d_armor_chestplate_wood_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_admin.png b/3d_armor/textures/3d_armor_helmet_admin.png
new file mode 100644
index 0000000..3a75a85
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_admin.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_admin_preview.png b/3d_armor/textures/3d_armor_helmet_admin_preview.png
new file mode 100644
index 0000000..51ecb9b
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_admin_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_bronze.png b/3d_armor/textures/3d_armor_helmet_bronze.png
new file mode 100644
index 0000000..91d15d7
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_bronze_preview.png b/3d_armor/textures/3d_armor_helmet_bronze_preview.png
new file mode 100644
index 0000000..61fa1af
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_bronze_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_cactus.png b/3d_armor/textures/3d_armor_helmet_cactus.png
new file mode 100644
index 0000000..3021f20
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_cactus_preview.png b/3d_armor/textures/3d_armor_helmet_cactus_preview.png
new file mode 100644
index 0000000..4e3bfe2
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_cactus_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_crystal.png b/3d_armor/textures/3d_armor_helmet_crystal.png
new file mode 100644
index 0000000..7a2c774
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_crystal_preview.png b/3d_armor/textures/3d_armor_helmet_crystal_preview.png
new file mode 100644
index 0000000..451a15d
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_crystal_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_diamond.png b/3d_armor/textures/3d_armor_helmet_diamond.png
new file mode 100644
index 0000000..e1768b3
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_diamond_preview.png b/3d_armor/textures/3d_armor_helmet_diamond_preview.png
new file mode 100644
index 0000000..33a273a
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_diamond_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_gold.png b/3d_armor/textures/3d_armor_helmet_gold.png
new file mode 100644
index 0000000..4d701b4
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_gold.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_gold_preview.png b/3d_armor/textures/3d_armor_helmet_gold_preview.png
new file mode 100644
index 0000000..d2e7ac8
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_gold_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_mithril.png b/3d_armor/textures/3d_armor_helmet_mithril.png
new file mode 100644
index 0000000..916e69d
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_mithril_preview.png b/3d_armor/textures/3d_armor_helmet_mithril_preview.png
new file mode 100644
index 0000000..a331f6a
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_mithril_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_steel.png b/3d_armor/textures/3d_armor_helmet_steel.png
new file mode 100644
index 0000000..e0a5afd
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_steel.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_steel_preview.png b/3d_armor/textures/3d_armor_helmet_steel_preview.png
new file mode 100644
index 0000000..2c8721c
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_steel_preview.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_wood.png b/3d_armor/textures/3d_armor_helmet_wood.png
new file mode 100644
index 0000000..fd5f712
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_wood.png differ
diff --git a/3d_armor/textures/3d_armor_helmet_wood_preview.png b/3d_armor/textures/3d_armor_helmet_wood_preview.png
new file mode 100644
index 0000000..fe1cead
Binary files /dev/null and b/3d_armor/textures/3d_armor_helmet_wood_preview.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_admin.png b/3d_armor/textures/3d_armor_inv_boots_admin.png
new file mode 100644
index 0000000..f94c844
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_admin.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_bronze.png b/3d_armor/textures/3d_armor_inv_boots_bronze.png
new file mode 100644
index 0000000..7f5f968
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_cactus.png b/3d_armor/textures/3d_armor_inv_boots_cactus.png
new file mode 100644
index 0000000..b665eb8
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_crystal.png b/3d_armor/textures/3d_armor_inv_boots_crystal.png
new file mode 100644
index 0000000..5709a17
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_diamond.png b/3d_armor/textures/3d_armor_inv_boots_diamond.png
new file mode 100644
index 0000000..6bcd620
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_gold.png b/3d_armor/textures/3d_armor_inv_boots_gold.png
new file mode 100644
index 0000000..8598cf9
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_gold.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_mithril.png b/3d_armor/textures/3d_armor_inv_boots_mithril.png
new file mode 100644
index 0000000..a4c180d
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_steel.png b/3d_armor/textures/3d_armor_inv_boots_steel.png
new file mode 100644
index 0000000..77286b5
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_steel.png differ
diff --git a/3d_armor/textures/3d_armor_inv_boots_wood.png b/3d_armor/textures/3d_armor_inv_boots_wood.png
new file mode 100644
index 0000000..66993a1
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_boots_wood.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_admin.png b/3d_armor/textures/3d_armor_inv_chestplate_admin.png
new file mode 100644
index 0000000..29f3897
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_admin.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_bronze.png b/3d_armor/textures/3d_armor_inv_chestplate_bronze.png
new file mode 100644
index 0000000..da2f3e0
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_cactus.png b/3d_armor/textures/3d_armor_inv_chestplate_cactus.png
new file mode 100644
index 0000000..a695e78
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_crystal.png b/3d_armor/textures/3d_armor_inv_chestplate_crystal.png
new file mode 100644
index 0000000..4d23066
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_diamond.png b/3d_armor/textures/3d_armor_inv_chestplate_diamond.png
new file mode 100644
index 0000000..eee800b
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_gold.png b/3d_armor/textures/3d_armor_inv_chestplate_gold.png
new file mode 100644
index 0000000..1dddc3d
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_gold.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_mithril.png b/3d_armor/textures/3d_armor_inv_chestplate_mithril.png
new file mode 100644
index 0000000..e4c50a7
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_steel.png b/3d_armor/textures/3d_armor_inv_chestplate_steel.png
new file mode 100644
index 0000000..421b3e3
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_steel.png differ
diff --git a/3d_armor/textures/3d_armor_inv_chestplate_wood.png b/3d_armor/textures/3d_armor_inv_chestplate_wood.png
new file mode 100644
index 0000000..434374f
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_chestplate_wood.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_admin.png b/3d_armor/textures/3d_armor_inv_helmet_admin.png
new file mode 100644
index 0000000..e019702
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_admin.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_bronze.png b/3d_armor/textures/3d_armor_inv_helmet_bronze.png
new file mode 100644
index 0000000..53cdaf1
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_cactus.png b/3d_armor/textures/3d_armor_inv_helmet_cactus.png
new file mode 100644
index 0000000..746c264
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_crystal.png b/3d_armor/textures/3d_armor_inv_helmet_crystal.png
new file mode 100644
index 0000000..8a29eec
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_diamond.png b/3d_armor/textures/3d_armor_inv_helmet_diamond.png
new file mode 100644
index 0000000..2eb3a5c
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_gold.png b/3d_armor/textures/3d_armor_inv_helmet_gold.png
new file mode 100644
index 0000000..e8f83d8
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_gold.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_mithril.png b/3d_armor/textures/3d_armor_inv_helmet_mithril.png
new file mode 100644
index 0000000..abdd0ca
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_steel.png b/3d_armor/textures/3d_armor_inv_helmet_steel.png
new file mode 100644
index 0000000..4c636f2
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_steel.png differ
diff --git a/3d_armor/textures/3d_armor_inv_helmet_wood.png b/3d_armor/textures/3d_armor_inv_helmet_wood.png
new file mode 100644
index 0000000..e8ee2fe
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_helmet_wood.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_admin.png b/3d_armor/textures/3d_armor_inv_leggings_admin.png
new file mode 100644
index 0000000..04b64c0
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_admin.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_bronze.png b/3d_armor/textures/3d_armor_inv_leggings_bronze.png
new file mode 100644
index 0000000..b574108
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_cactus.png b/3d_armor/textures/3d_armor_inv_leggings_cactus.png
new file mode 100644
index 0000000..c011db8
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_crystal.png b/3d_armor/textures/3d_armor_inv_leggings_crystal.png
new file mode 100644
index 0000000..5b3f703
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_diamond.png b/3d_armor/textures/3d_armor_inv_leggings_diamond.png
new file mode 100644
index 0000000..2ab1c8e
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_gold.png b/3d_armor/textures/3d_armor_inv_leggings_gold.png
new file mode 100644
index 0000000..7424833
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_gold.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_mithril.png b/3d_armor/textures/3d_armor_inv_leggings_mithril.png
new file mode 100644
index 0000000..b9b1b3c
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_steel.png b/3d_armor/textures/3d_armor_inv_leggings_steel.png
new file mode 100644
index 0000000..77ee17e
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_steel.png differ
diff --git a/3d_armor/textures/3d_armor_inv_leggings_wood.png b/3d_armor/textures/3d_armor_inv_leggings_wood.png
new file mode 100644
index 0000000..f162e51
Binary files /dev/null and b/3d_armor/textures/3d_armor_inv_leggings_wood.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_admin.png b/3d_armor/textures/3d_armor_leggings_admin.png
new file mode 100644
index 0000000..6752256
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_admin.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_admin_preview.png b/3d_armor/textures/3d_armor_leggings_admin_preview.png
new file mode 100644
index 0000000..fe47999
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_admin_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_bronze.png b/3d_armor/textures/3d_armor_leggings_bronze.png
new file mode 100644
index 0000000..3394288
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_bronze.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_bronze_preview.png b/3d_armor/textures/3d_armor_leggings_bronze_preview.png
new file mode 100644
index 0000000..c4aa7b9
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_bronze_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_cactus.png b/3d_armor/textures/3d_armor_leggings_cactus.png
new file mode 100644
index 0000000..7d22404
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_cactus.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_cactus_preview.png b/3d_armor/textures/3d_armor_leggings_cactus_preview.png
new file mode 100644
index 0000000..1a24863
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_cactus_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_crystal.png b/3d_armor/textures/3d_armor_leggings_crystal.png
new file mode 100644
index 0000000..cc61390
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_crystal.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_crystal_preview.png b/3d_armor/textures/3d_armor_leggings_crystal_preview.png
new file mode 100644
index 0000000..559d008
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_crystal_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_diamond.png b/3d_armor/textures/3d_armor_leggings_diamond.png
new file mode 100644
index 0000000..a646ba2
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_diamond.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_diamond_preview.png b/3d_armor/textures/3d_armor_leggings_diamond_preview.png
new file mode 100644
index 0000000..a6ac2e2
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_diamond_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_gold.png b/3d_armor/textures/3d_armor_leggings_gold.png
new file mode 100644
index 0000000..d207dff
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_gold.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_gold_preview.png b/3d_armor/textures/3d_armor_leggings_gold_preview.png
new file mode 100644
index 0000000..75e6ca4
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_gold_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_mithril.png b/3d_armor/textures/3d_armor_leggings_mithril.png
new file mode 100644
index 0000000..ffff3ee
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_mithril.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_mithril_preview.png b/3d_armor/textures/3d_armor_leggings_mithril_preview.png
new file mode 100644
index 0000000..ee99178
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_mithril_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_steel.png b/3d_armor/textures/3d_armor_leggings_steel.png
new file mode 100644
index 0000000..78d5874
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_steel.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_steel_preview.png b/3d_armor/textures/3d_armor_leggings_steel_preview.png
new file mode 100644
index 0000000..3e3ec85
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_steel_preview.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_wood.png b/3d_armor/textures/3d_armor_leggings_wood.png
new file mode 100644
index 0000000..3880fc0
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_wood.png differ
diff --git a/3d_armor/textures/3d_armor_leggings_wood_preview.png b/3d_armor/textures/3d_armor_leggings_wood_preview.png
new file mode 100644
index 0000000..f8ee8e8
Binary files /dev/null and b/3d_armor/textures/3d_armor_leggings_wood_preview.png differ
diff --git a/3d_armor/textures/3d_armor_trans.png b/3d_armor/textures/3d_armor_trans.png
new file mode 100644
index 0000000..4d7beb8
Binary files /dev/null and b/3d_armor/textures/3d_armor_trans.png differ
diff --git a/3d_armor/textures/3d_armor_ui_form.png b/3d_armor/textures/3d_armor_ui_form.png
new file mode 100644
index 0000000..6e5cfee
Binary files /dev/null and b/3d_armor/textures/3d_armor_ui_form.png differ
diff --git a/3d_armor/textures/character_preview.png b/3d_armor/textures/character_preview.png
new file mode 100644
index 0000000..4ac4602
Binary files /dev/null and b/3d_armor/textures/character_preview.png differ
diff --git a/3d_armor/textures/inventory_plus_armor.png b/3d_armor/textures/inventory_plus_armor.png
new file mode 100644
index 0000000..6cde640
Binary files /dev/null and b/3d_armor/textures/inventory_plus_armor.png differ
diff --git a/3d_armor_stand/LICENSE.txt b/3d_armor_stand/LICENSE.txt
new file mode 100644
index 0000000..5c8246a
--- /dev/null
+++ b/3d_armor_stand/LICENSE.txt
@@ -0,0 +1,7 @@
+[mod] 3d Armor Stand [3d_armor_stand]
+=====================================
+
+License Source Code: LGPL v2.1
+
+Lecense Media: CC BY-SA 3.0
+
diff --git a/3d_armor_stand/README.txt b/3d_armor_stand/README.txt
new file mode 100644
index 0000000..6a98ab9
--- /dev/null
+++ b/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/3d_armor_stand/depends.txt b/3d_armor_stand/depends.txt
new file mode 100644
index 0000000..fdbb290
--- /dev/null
+++ b/3d_armor_stand/depends.txt
@@ -0,0 +1,2 @@
+3d_armor
+
diff --git a/3d_armor_stand/init.lua b/3d_armor_stand/init.lua
new file mode 100644
index 0000000..0a4e91c
--- /dev/null
+++ b/3d_armor_stand/init.lua
@@ -0,0 +1,301 @@
+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 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
+ local texture = def.texture or item:gsub("%:", "_")
+ table.insert(textures, texture..".png")
+ 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
+
+minetest.register_node("3d_armor_stand:armor_stand", {
+ description = "Armor stand",
+ drawtype = "mesh",
+ mesh = "3d_armor_stand.obj",
+ tiles = {"default_wood.png", "default_steel_block.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5,-0.5,-0.5, 0.5,1.4,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", "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)
+ minetest.add_entity(pos, "3d_armor_stand:armor_entity")
+ 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)
+ end,
+ on_blast = function(pos)
+ local object = get_stand_object(pos)
+ if object then
+ object:remove()
+ end
+ minetest.after(1, function(pos)
+ update_entity(pos)
+ end, pos)
+ end,
+})
+
+minetest.register_node("3d_armor_stand:locked_armor_stand", {
+ description = "Locked Armor stand",
+ drawtype = "mesh",
+ mesh = "3d_armor_stand.obj",
+ tiles = {"default_wood.png", "default_steel_block.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5,-0.5,-0.5, 0.5,1.4,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", "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", "Armor Stand (owned by " ..
+ meta:get_string("owner") .. ")")
+ 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)
+ end,
+ on_blast = function(pos)
+ local object = get_stand_object(pos)
+ if object then
+ object:remove()
+ end
+ minetest.after(1, function(pos)
+ update_entity(pos)
+ end, pos)
+ 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.1,-0.4,-0.1, 0.1,1.3,0.1},
+ textures = {"3d_armor_trans.png"},
+ pos = nil,
+ timer = 0,
+ on_activate = function(self)
+ local pos = self.object:getpos()
+ if pos then
+ self.pos = vector.round(pos)
+ update_entity(pos)
+ end
+ end,
+ on_step = function(self, dtime)
+ if not self.pos then
+ return
+ end
+ self.timer = self.timer + dtime
+ if self.timer > 1 then
+ self.timer = 0
+ local pos = self.object:getpos()
+ if pos then
+ if vector.equals(vector.round(pos), self.pos) then
+ return
+ end
+ end
+ update_entity(self.pos)
+ self.object:remove()
+ end
+ end,
+})
+
+minetest.register_craft({
+ output = "3d_armor_stand:armor_stand",
+ recipe = {
+ {"", "default:fence_wood", ""},
+ {"", "default:fence_wood", ""},
+ {"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/3d_armor_stand/models/3d_armor_entity.obj b/3d_armor_stand/models/3d_armor_entity.obj
new file mode 100644
index 0000000..052f692
--- /dev/null
+++ b/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/3d_armor_stand/models/3d_armor_stand.obj b/3d_armor_stand/models/3d_armor_stand.obj
new file mode 100644
index 0000000..89f3793
--- /dev/null
+++ b/3d_armor_stand/models/3d_armor_stand.obj
@@ -0,0 +1,191 @@
+# Blender v2.73 (sub 0) OBJ File: '3d_armor_stand.blend'
+# www.blender.org
+mtllib 3d_armor_stand.mtl
+o Player_Cube
+v 0.062500 1.312500 -0.062500
+v 0.062500 1.312500 0.062500
+v -0.062500 1.312500 -0.062500
+v -0.062500 1.312500 0.062500
+v -0.187500 -0.437504 0.062500
+v -0.187500 -0.437504 -0.062500
+v -0.187500 0.937500 0.062500
+v -0.187500 0.937500 -0.062500
+v -0.250000 0.250000 0.062500
+v -0.250000 0.250000 -0.062500
+v -0.250000 0.125003 0.062500
+v -0.250000 0.125003 -0.062500
+v 0.250000 0.250000 0.062500
+v 0.250000 0.250000 -0.062500
+v 0.250000 0.125003 0.062500
+v 0.250000 0.125003 -0.062500
+v -0.062500 -0.437504 -0.062500
+v -0.062500 -0.437504 0.062500
+v -0.062500 0.937500 0.062500
+v -0.062500 0.937500 -0.062500
+v 0.062500 0.250000 0.062500
+v 0.062500 0.250000 -0.062500
+v 0.187500 0.250000 -0.062500
+v 0.187500 0.250000 0.062500
+v 0.187500 0.937500 -0.062500
+v 0.187500 0.937500 0.062500
+v 0.187500 -0.437504 -0.062500
+v 0.187500 -0.437504 0.062500
+v 0.062500 -0.437504 -0.062500
+v 0.062500 -0.437504 0.062500
+v 0.062500 0.937500 0.062500
+v 0.062500 0.937500 -0.062500
+v -0.062500 0.812500 -0.062500
+v -0.187500 0.812500 -0.062500
+v -0.062500 0.812500 0.062500
+v -0.187500 0.812500 0.062500
+v 0.062500 0.812500 -0.062500
+v 0.187500 0.812500 -0.062500
+v 0.187500 0.812500 0.062500
+v 0.062500 0.812500 0.062500
+v 0.375000 0.812500 0.062500
+v 0.375000 0.812500 -0.062500
+v 0.375000 0.937500 0.062500
+v 0.375000 0.937500 -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.062500 0.250000 -0.062500
+v -0.187500 0.250000 -0.062500
+v -0.062500 0.250000 0.062500
+v -0.187500 0.250000 0.062500
+v -0.375000 0.937500 0.062500
+v -0.375000 0.937500 -0.062500
+v -0.375000 0.812500 -0.062500
+v -0.375000 0.812500 0.062500
+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
+v 0.187500 0.124998 0.062500
+v 0.187500 0.124998 -0.062500
+v 0.062500 0.124998 0.062500
+v 0.062500 0.124998 -0.062500
+v -0.062500 0.124998 -0.062500
+v -0.187500 0.124998 -0.062500
+v -0.062500 0.124998 0.062500
+v -0.187500 0.124998 0.062500
+vt 0.000000 0.000000
+vt 0.875000 0.000000
+vt 0.875000 0.250000
+vt 0.000000 0.250000
+vt 0.125000 0.500000
+vt 0.125000 0.750000
+vt -0.000000 0.750000
+vt -0.000000 0.500000
+vt 0.750000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.250000
+vt 0.750000 0.250000
+vt 0.375000 0.500000
+vt 0.375000 0.750000
+vt 0.875000 0.750000
+vt 0.875000 1.000000
+vt 0.000000 1.000000
+vt 0.875000 0.500000
+vt 0.750000 0.500000
+vt 1.000000 0.500000
+vt 1.000000 0.750000
+vt 0.750000 0.750000
+vt 0.625000 1.000000
+vt 0.375000 1.000000
+vt 0.625000 0.750000
+vt 0.625000 0.500000
+vt 0.250000 0.500000
+vt 0.250000 0.750000
+vt 0.625000 0.250000
+vt 0.625000 -0.000000
+vt 0.250000 0.250000
+vt 0.250000 0.000000
+vt 0.375000 0.250000
+vt 0.250000 1.000000
+vt 1.000000 1.000000
+vt 0.750000 1.000000
+vt 0.375000 -0.000000
+vt 0.125000 0.250000
+vt 0.125000 1.000000
+vt 0.125000 0.000000
+vt -0.000000 0.937500
+vt 1.000000 0.937500
+vt 0.937500 0.000000
+vt 0.937500 1.000000
+vt 1.000000 0.062500
+vt 0.000000 0.062500
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+g Player_Cube_Stand
+usemtl Stand
+s off
+f 64/1 29/2 30/3 63/4
+f 52/5 50/6 10/7 9/8
+f 17/9 18/10 5/11 6/12
+f 68/3 66/2 6/1 5/4
+f 7/13 8/14 54/7 53/8
+f 67/15 68/16 5/17 18/7
+f 62/4 27/3 29/18 64/8
+f 66/3 65/18 17/8 6/4
+f 9/19 10/20 12/21 11/22
+f 63/7 30/15 28/16 61/17
+f 65/18 67/15 18/7 17/8
+f 61/8 28/18 27/15 62/7
+f 19/23 7/24 36/14 35/25
+f 8/14 7/13 19/26 20/25
+f 23/15 24/18 13/20 14/21
+f 13/8 15/27 16/28 14/7
+f 39/29 38/30 42/10 41/11
+f 29/31 27/4 28/1 30/32
+f 25/28 26/27 43/26 44/25
+f 38/12 25/19 44/13 42/33
+f 25/28 32/7 31/8 26/27
+f 8/26 20/13 33/33 34/29
+f 25/19 38/12 37/11 32/20
+f 31/17 40/7 39/28 26/34
+f 26/34 39/28 41/25 43/23
+f 43/7 41/28 42/34 44/17
+f 53/22 54/21 55/35 56/36
+f 36/14 7/24 53/17 56/7
+f 8/26 34/29 55/11 54/20
+f 34/37 36/33 56/4 55/1
+f 51/13 21/26 22/25 49/14
+f 20/4 3/12 1/19 32/8
+f 40/15 31/16 19/23 35/25
+f 35/29 33/30 37/2 40/3
+f 33/33 20/13 32/5 37/38
+f 3/14 4/24 2/23 1/25
+f 19/12 4/4 3/1 20/9
+f 31/36 2/17 4/7 19/22
+f 32/22 1/7 2/8 31/19
+f 23/5 62/38 64/33 22/13
+f 21/14 63/24 61/39 24/6
+f 61/3 62/2 16/10 15/11
+f 62/38 23/5 14/8 16/4
+f 24/6 61/39 15/17 13/7
+f 50/18 66/3 12/11 10/20
+f 66/40 68/38 11/4 12/1
+f 50/18 49/26 65/29 66/3
+f 51/25 52/15 68/16 67/23
+f 68/16 52/15 9/21 11/35
+f 49/26 22/13 64/33 65/29
+f 51/25 67/23 63/24 21/14
+f 67/33 65/37 64/30 63/29
+f 37/1 22/2 21/3 40/4
+f 38/4 23/3 22/18 37/8
+f 40/7 21/15 24/16 39/17
+f 39/8 24/18 23/15 38/7
+f 36/2 34/3 50/4 52/1
+f 35/15 36/16 52/17 51/7
+f 34/3 33/18 49/8 50/4
+f 33/18 35/15 51/7 49/8
+g Player_Cube_Base
+usemtl Base
+f 47/17 48/1 46/10 45/35
+f 59/1 57/10 58/35 60/17
+f 48/17 60/41 58/42 46/35
+f 46/43 58/10 57/35 45/44
+f 47/1 45/10 57/45 59/46
+f 48/47 47/48 59/17 60/1
diff --git a/3d_armor_stand/textures/3d_armor_stand_feet.png b/3d_armor_stand/textures/3d_armor_stand_feet.png
new file mode 100644
index 0000000..d04f9e3
Binary files /dev/null and b/3d_armor_stand/textures/3d_armor_stand_feet.png differ
diff --git a/3d_armor_stand/textures/3d_armor_stand_head.png b/3d_armor_stand/textures/3d_armor_stand_head.png
new file mode 100644
index 0000000..228c08e
Binary files /dev/null and b/3d_armor_stand/textures/3d_armor_stand_head.png differ
diff --git a/3d_armor_stand/textures/3d_armor_stand_legs.png b/3d_armor_stand/textures/3d_armor_stand_legs.png
new file mode 100644
index 0000000..66ec357
Binary files /dev/null and b/3d_armor_stand/textures/3d_armor_stand_legs.png differ
diff --git a/3d_armor_stand/textures/3d_armor_stand_torso.png b/3d_armor_stand/textures/3d_armor_stand_torso.png
new file mode 100644
index 0000000..af95ec7
Binary files /dev/null and b/3d_armor_stand/textures/3d_armor_stand_torso.png differ
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..d383270
--- /dev/null
+++ b/LICENSE.md
@@ -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 - LGPL
+
+Special credit to Jordach and MirceaKitsune for providing the default 3d character model.
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f74ce04
--- /dev/null
+++ b/README.md
@@ -0,0 +1,83 @@
+Modpack - 3d Armor [0.4.5]
+==========================
+
+### Table of Contents
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+- [[mod] Visible Player Armor [3d_armor]](#mod-visible-player-armor-3d_armor)
+- [[mod] Visible Wielded Items [wieldview]](#mod-visible-wielded-items-wieldview)
+- [[mod] Shields [shields]](#mod-shields-shields)
+- [[mod] Technic Armor [technic_armor]](#mod-technic-armor-technic_armor)
+- [[mod] Hazmat Suit [hazmat_suit]](#mod-hazmat-suit-hazmat_suit)
+- [[mod] 3d Armor Stand [3d_armor_stand]](#mod-3d-armor-stand-3d_armor_stand)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+
+[mod] Visible Player Armor [3d_armor]
+-------------------------------------
+
+Minetest Version: 0.4.13
+
+Game: minetest_game and many derivatives
+
+Depends: default
+
+Recommends: inventory_plus or unified_inventory (use only one)
+
+Adds craftable armor that is visible to other players. Each armor item worn contributes to
+a player's armor group level making them less vulnerable to attack.
+
+Armor takes damage when a player is hurt, however, many armor items offer a 'stackable'
+percentage chance of restoring the lost health points. Overall armor level is boosted by 10%
+when wearing a full matching set (helmet, chestplate, leggings and boots of the same material)
+
+Fire protection has been added by TenPlus1 and in use when ethereal mod is found and crystal
+armor has been enabled. each piece of armor offers 1 fire protection, level 1 protects
+against torches, level 2 against crystal spikes, 3 for fire and 5 protects when in lava.
+
+Compatible with player skins [skins] by Zeg9 and Player Textures [player_textures] by PilzAdam
+and [simple_skins] by TenPlus1.
+
+Armor can be configured by adding a file called armor.conf in 3d_armor mod or world directory.
+see armor.conf.example for all available options.
+
+[mod] Visible Wielded Items [wieldview]
+---------------------------------------
+
+Depends: 3d_armor
+
+Makes hand wielded items visible to other players.
+
+[mod] Shields [shields]
+-----------------------
+
+Depends: 3d_armor
+
+Originally a part of 3d_armor, shields have been re-included as an optional extra.
+If you do not want shields then simply remove the shields folder from the modpack.
+
+[mod] Technic Armor [technic_armor]
+-----------------------------------
+
+Depends: 3d_armor, technic_worldgen
+
+Adds tin, silver and technic materials to 3d_armor.
+Requires technic (technic_worldgen at least) mod.
+
+[mod] Hazmat Suit [hazmat_suit]
+-------------------------------
+
+Depends: 3d_armor, technic
+
+Adds hazmat suit to 3d_armor. It protects rather well from fire (if enabled in configuration) and radiation, and it has built-in oxygen supply.
+Requires technic mod.
+
+[mod] 3d Armor Stand [3d_armor_stand]
+-------------------------------------
+
+Depends: 3d_armor
+
+Adds a chest-like armor stand for armor storage and display.
diff --git a/description.txt b/description.txt
new file mode 100644
index 0000000..2da5ba4
--- /dev/null
+++ b/description.txt
@@ -0,0 +1 @@
+Visible player armor & wielded items.
diff --git a/hazmat_suit/README.txt b/hazmat_suit/README.txt
new file mode 100644
index 0000000..eb61e26
--- /dev/null
+++ b/hazmat_suit/README.txt
@@ -0,0 +1,10 @@
+[mod] Hazmat Suit [hazmat_suit]
+===================================
+
+Adds hazmat suit to 3d_armor. It protects rather well from fire (if enabled in configuration) and radiation, and it has built-in oxygen supply.
+Requires technic mod.
+
+Depends: 3d_armor, technic
+
+Source code by numZero
+Textures by HybridDog and numZero
diff --git a/hazmat_suit/depends.txt b/hazmat_suit/depends.txt
new file mode 100644
index 0000000..c83abc0
--- /dev/null
+++ b/hazmat_suit/depends.txt
@@ -0,0 +1,2 @@
+3d_armor
+technic
diff --git a/hazmat_suit/description.txt b/hazmat_suit/description.txt
new file mode 100644
index 0000000..bba80d0
--- /dev/null
+++ b/hazmat_suit/description.txt
@@ -0,0 +1 @@
+Adds hazmat suit (protects from water, fire and radiation) to 3d_armor.
diff --git a/hazmat_suit/init.lua b/hazmat_suit/init.lua
new file mode 100644
index 0000000..9e84aef
--- /dev/null
+++ b/hazmat_suit/init.lua
@@ -0,0 +1,126 @@
+local part_count = 4
+
+local level = 35
+local heal = 20
+local use = 1000
+local fire = 4
+local water = 1
+local radiation = 50
+
+if minetest.get_modpath("shields") then
+ level = level / 0.9
+end
+
+if part_count == #armor.elements then
+ level = level / 1.1
+end
+
+level = math.floor(level / part_count)
+heal = math.floor(heal / part_count)
+fire = math.floor(fire / part_count)
+radiation = math.floor(radiation / part_count)
+
+minetest.register_craftitem("hazmat_suit:helmet_hazmat", {
+ description = "Hazmat Helmet",
+ inventory_image = "hazmat_suit_inv_helmet_hazmat.png",
+ stack_max = 1,
+})
+
+minetest.register_craftitem("hazmat_suit:chestplate_hazmat", {
+ description = "Hazmat Chestplate",
+ inventory_image = "hazmat_suit_inv_chestplate_hazmat.png",
+ stack_max = 1,
+})
+
+minetest.register_craftitem("hazmat_suit:sleeve_hazmat", {
+ description = "Hazmat Sleeve",
+ inventory_image = "hazmat_suit_inv_sleeve_hazmat.png",
+ stack_max = 1,
+})
+
+minetest.register_craftitem("hazmat_suit:leggings_hazmat", {
+ description = "Hazmat Leggins",
+ inventory_image = "hazmat_suit_inv_leggings_hazmat.png",
+ stack_max = 1,
+})
+
+minetest.register_craftitem("hazmat_suit:boots_hazmat", {
+ description = "Hazmat Boots",
+ inventory_image = "hazmat_suit_inv_boots_hazmat.png",
+ stack_max = 1,
+})
+
+minetest.register_tool("hazmat_suit:suit_hazmat", {
+ description = "Hazmat Suit",
+ inventory_image = "hazmat_suit_inv_suit_hazmat.png",
+ groups = {
+ armor_head = level,
+ armor_torso = level,
+ armor_legs = level,
+ armor_feet = level,
+ armor_heal = heal,
+ armor_use = use,
+ armor_fire = fire,
+ armor_water = water,
+ armor_radiation = radiation,
+ },
+ wear = 0,
+})
+
+minetest.register_craft({
+ output = "hazmat_suit:helmet_hazmat",
+ recipe = {
+ {"", "technic:stainless_steel_ingot", ""},
+ {"technic:stainless_steel_ingot", "default:glass", "technic:stainless_steel_ingot"},
+ {"technic:rubber", "technic:rubber", "technic:rubber"},
+ },
+})
+
+minetest.register_craft({
+ output = "hazmat_suit:chestplate_hazmat",
+ recipe = {
+ {"technic:lead_ingot", "dye:yellow", "technic:lead_ingot"},
+ {"technic:stainless_steel_ingot", "technic:lead_ingot", "technic:stainless_steel_ingot"},
+ {"technic:lead_ingot", "technic:stainless_steel_ingot", "technic:lead_ingot"},
+ },
+})
+
+minetest.register_craft({
+ output = "hazmat_suit:sleeve_hazmat",
+ recipe = {
+ {"technic:rubber", "dye:yellow"},
+ {"", "technic:stainless_steel_ingot"},
+ {"", "technic:rubber"},
+ },
+})
+
+minetest.register_craft({
+ output = "hazmat_suit:leggings_hazmat",
+ recipe = {
+ {"technic:rubber", "technic:lead_ingot", "technic:rubber"},
+ {"technic:stainless_steel_ingot", "technic:rubber", "technic:stainless_steel_ingot"},
+ {"technic:lead_ingot", "", "technic:lead_ingot"},
+ },
+})
+
+minetest.register_craft({
+ output = "hazmat_suit:boots_hazmat",
+ recipe = {
+ {"", "", ""},
+ {"technic:rubber", "", "technic:rubber"},
+ {"technic:stainless_steel_ingot", "", "technic:stainless_steel_ingot"},
+ },
+})
+
+minetest.register_craft({
+ output = "hazmat_suit:suit_hazmat",
+ type = "shapeless",
+ recipe = {
+ "hazmat_suit:helmet_hazmat",
+ "hazmat_suit:chestplate_hazmat",
+ "hazmat_suit:leggings_hazmat",
+ "hazmat_suit:boots_hazmat",
+ "hazmat_suit:sleeve_hazmat",
+ "hazmat_suit:sleeve_hazmat",
+ },
+})
diff --git a/hazmat_suit/textures/hazmat_suit_inv_boots_hazmat.png b/hazmat_suit/textures/hazmat_suit_inv_boots_hazmat.png
new file mode 100644
index 0000000..5f737e7
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_inv_boots_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_inv_chestplate_hazmat.png b/hazmat_suit/textures/hazmat_suit_inv_chestplate_hazmat.png
new file mode 100644
index 0000000..2421d54
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_inv_chestplate_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_inv_helmet_hazmat.png b/hazmat_suit/textures/hazmat_suit_inv_helmet_hazmat.png
new file mode 100644
index 0000000..39a39ea
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_inv_helmet_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_inv_leggings_hazmat.png b/hazmat_suit/textures/hazmat_suit_inv_leggings_hazmat.png
new file mode 100644
index 0000000..1ca9d25
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_inv_leggings_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_inv_sleeve_hazmat.png b/hazmat_suit/textures/hazmat_suit_inv_sleeve_hazmat.png
new file mode 100644
index 0000000..0503bb0
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_inv_sleeve_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_inv_suit_hazmat.png b/hazmat_suit/textures/hazmat_suit_inv_suit_hazmat.png
new file mode 100644
index 0000000..57ccd6d
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_inv_suit_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_suit_hazmat.png b/hazmat_suit/textures/hazmat_suit_suit_hazmat.png
new file mode 100644
index 0000000..97311fe
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_suit_hazmat.png differ
diff --git a/hazmat_suit/textures/hazmat_suit_suit_hazmat_preview.png b/hazmat_suit/textures/hazmat_suit_suit_hazmat_preview.png
new file mode 100644
index 0000000..4c0ba18
Binary files /dev/null and b/hazmat_suit/textures/hazmat_suit_suit_hazmat_preview.png differ
diff --git a/modpack.txt b/modpack.txt
new file mode 100644
index 0000000..e69de29
diff --git a/screenshot.png b/screenshot.png
new file mode 100644
index 0000000..f568cea
Binary files /dev/null and b/screenshot.png differ
diff --git a/shields/README.txt b/shields/README.txt
new file mode 100644
index 0000000..3146bcb
--- /dev/null
+++ b/shields/README.txt
@@ -0,0 +1,6 @@
+Adds shields to 3d_armor
+
+Depends: 3d_armor
+
+Originally a part of 3d_armor, shields have been re-included as an optional extra.
+If you do not what shields then simply remove the shields folder from the modpack.
diff --git a/shields/crafting_guide.txt b/shields/crafting_guide.txt
new file mode 100644
index 0000000..9b61dde
--- /dev/null
+++ b/shields/crafting_guide.txt
@@ -0,0 +1,36 @@
+Shields -- Crafting Guide
+--------------------------
+
++---+---+---+
+| X | X | X |
++---+---+---+
+| X | X | X |
++---+---+---+
+| | X | |
++---+---+---+
+
+[shields:shield_wood] X = [default:wood]
+[shields:shield_cactus] X = [default:cactus]
+[shields:shield_steel] X = [default:steel_ingot]
+[shields:shield_bronze] X = [default:bronze_ingot]
+[shields:shield_diamond] X = [default:diamond]
+[shields:shield_gold] X = [default:gold_ingot]
+[shields:shield_mithril] X = [moreores:mithril_ingot]
+[shields:shield_crystal] X = [ethereal:crystal_ingot]
+
+Enhanced Shields
+----------------
+
++---+
+| S |
++---+
+| X |
++---+
+| S |
++---+
+
+[shields:shield_enhanced_wood] X = [shields:shield_wood]
+[shields:shield_enhanced_cactus] X = [shields:shield_cactus]
+
+S = [default:steel_ingot]
+
diff --git a/shields/depends.txt b/shields/depends.txt
new file mode 100644
index 0000000..585cc7a
--- /dev/null
+++ b/shields/depends.txt
@@ -0,0 +1,2 @@
+default
+3d_armor
diff --git a/shields/description.txt b/shields/description.txt
new file mode 100644
index 0000000..cb378bb
--- /dev/null
+++ b/shields/description.txt
@@ -0,0 +1 @@
+Adds visible shields to 3d armor.
diff --git a/shields/init.lua b/shields/init.lua
new file mode 100644
index 0000000..2234fa4
--- /dev/null
+++ b/shields/init.lua
@@ -0,0 +1,126 @@
+local use_moreores = minetest.get_modpath("moreores")
+
+-- Regisiter Shields
+
+minetest.register_tool("shields:shield_admin", {
+ description = "Admin Shield",
+ inventory_image = "shields_inv_shield_admin.png",
+ groups = {armor_shield=1000, armor_heal=100, armor_use=0, not_in_creative_inventory=1},
+ wear = 0,
+})
+
+if ARMOR_MATERIALS.wood then
+ minetest.register_tool("shields:shield_wood", {
+ description = "Wooden Shield",
+ inventory_image = "shields_inv_shield_wood.png",
+ groups = {armor_shield=5, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+ minetest.register_tool("shields:shield_enhanced_wood", {
+ description = "Enhanced Wood Shield",
+ inventory_image = "shields_inv_shield_enhanced_wood.png",
+ groups = {armor_shield=8, armor_heal=0, armor_use=1000},
+ wear = 0,
+ })
+ minetest.register_craft({
+ output = "shields:shield_enhanced_wood",
+ recipe = {
+ {"default:steel_ingot"},
+ {"shields:shield_wood"},
+ {"default:steel_ingot"},
+ },
+ })
+end
+
+if ARMOR_MATERIALS.cactus then
+ minetest.register_tool("shields:shield_cactus", {
+ description = "Cactus Shield",
+ inventory_image = "shields_inv_shield_cactus.png",
+ groups = {armor_shield=5, armor_heal=0, armor_use=2000},
+ wear = 0,
+ })
+ minetest.register_tool("shields:shield_enhanced_cactus", {
+ description = "Enhanced Cactus Shield",
+ inventory_image = "shields_inv_shield_enhanced_cactus.png",
+ groups = {armor_shield=8, armor_heal=0, armor_use=1000},
+ wear = 0,
+ })
+ minetest.register_craft({
+ output = "shields:shield_enhanced_cactus",
+ recipe = {
+ {"default:steel_ingot"},
+ {"shields:shield_cactus"},
+ {"default:steel_ingot"},
+ },
+ })
+end
+
+if ARMOR_MATERIALS.steel then
+ minetest.register_tool("shields:shield_steel", {
+ description = "Steel Shield",
+ inventory_image = "shields_inv_shield_steel.png",
+ groups = {armor_shield=10, armor_heal=0, armor_use=500},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.bronze then
+ minetest.register_tool("shields:shield_bronze", {
+ description = "Bronze Shield",
+ inventory_image = "shields_inv_shield_bronze.png",
+ groups = {armor_shield=10, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.diamond then
+ minetest.register_tool("shields:shield_diamond", {
+ description = "Diamond Shield",
+ inventory_image = "shields_inv_shield_diamond.png",
+ groups = {armor_shield=15, armor_heal=12, armor_use=100},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.gold then
+ minetest.register_tool("shields:shield_gold", {
+ description = "Gold Shield",
+ inventory_image = "shields_inv_shield_gold.png",
+ groups = {armor_shield=10, armor_heal=6, armor_use=250},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.mithril then
+ minetest.register_tool("shields:shield_mithril", {
+ description = "Mithril Shield",
+ inventory_image = "shields_inv_shield_mithril.png",
+ groups = {armor_shield=15, armor_heal=12, armor_use=50},
+ wear = 0,
+ })
+end
+
+if ARMOR_MATERIALS.crystal then
+ minetest.register_tool("shields:shield_crystal", {
+ description = "Crystal Shield",
+ inventory_image = "shields_inv_shield_crystal.png",
+ groups = {armor_shield=15, armor_heal=12, armor_use=50, armor_fire=1},
+ wear = 0,
+ })
+end
+
+for k, v in pairs(ARMOR_MATERIALS) do
+ minetest.register_craft({
+ output = "shields:shield_"..k,
+ recipe = {
+ {v, v, v},
+ {v, v, v},
+ {"", v, ""},
+ },
+ })
+end
+
+minetest.after(0, function()
+ table.insert(armor.elements, "shield")
+end)
+
diff --git a/shields/textures/shields_inv_shield_admin.png b/shields/textures/shields_inv_shield_admin.png
new file mode 100644
index 0000000..ae5ab7d
Binary files /dev/null and b/shields/textures/shields_inv_shield_admin.png differ
diff --git a/shields/textures/shields_inv_shield_bronze.png b/shields/textures/shields_inv_shield_bronze.png
new file mode 100644
index 0000000..67bac0f
Binary files /dev/null and b/shields/textures/shields_inv_shield_bronze.png differ
diff --git a/shields/textures/shields_inv_shield_cactus.png b/shields/textures/shields_inv_shield_cactus.png
new file mode 100644
index 0000000..00d1d58
Binary files /dev/null and b/shields/textures/shields_inv_shield_cactus.png differ
diff --git a/shields/textures/shields_inv_shield_crystal.png b/shields/textures/shields_inv_shield_crystal.png
new file mode 100644
index 0000000..1ec1981
Binary files /dev/null and b/shields/textures/shields_inv_shield_crystal.png differ
diff --git a/shields/textures/shields_inv_shield_diamond.png b/shields/textures/shields_inv_shield_diamond.png
new file mode 100644
index 0000000..ea7c567
Binary files /dev/null and b/shields/textures/shields_inv_shield_diamond.png differ
diff --git a/shields/textures/shields_inv_shield_enhanced_cactus.png b/shields/textures/shields_inv_shield_enhanced_cactus.png
new file mode 100644
index 0000000..39436cd
Binary files /dev/null and b/shields/textures/shields_inv_shield_enhanced_cactus.png differ
diff --git a/shields/textures/shields_inv_shield_enhanced_wood.png b/shields/textures/shields_inv_shield_enhanced_wood.png
new file mode 100644
index 0000000..058e042
Binary files /dev/null and b/shields/textures/shields_inv_shield_enhanced_wood.png differ
diff --git a/shields/textures/shields_inv_shield_gold.png b/shields/textures/shields_inv_shield_gold.png
new file mode 100644
index 0000000..8995834
Binary files /dev/null and b/shields/textures/shields_inv_shield_gold.png differ
diff --git a/shields/textures/shields_inv_shield_mithril.png b/shields/textures/shields_inv_shield_mithril.png
new file mode 100644
index 0000000..d32665a
Binary files /dev/null and b/shields/textures/shields_inv_shield_mithril.png differ
diff --git a/shields/textures/shields_inv_shield_steel.png b/shields/textures/shields_inv_shield_steel.png
new file mode 100644
index 0000000..178b507
Binary files /dev/null and b/shields/textures/shields_inv_shield_steel.png differ
diff --git a/shields/textures/shields_inv_shield_wood.png b/shields/textures/shields_inv_shield_wood.png
new file mode 100644
index 0000000..dcbe933
Binary files /dev/null and b/shields/textures/shields_inv_shield_wood.png differ
diff --git a/shields/textures/shields_shield_admin.png b/shields/textures/shields_shield_admin.png
new file mode 100644
index 0000000..430c3e3
Binary files /dev/null and b/shields/textures/shields_shield_admin.png differ
diff --git a/shields/textures/shields_shield_admin_preview.png b/shields/textures/shields_shield_admin_preview.png
new file mode 100644
index 0000000..762c2d2
Binary files /dev/null and b/shields/textures/shields_shield_admin_preview.png differ
diff --git a/shields/textures/shields_shield_bronze.png b/shields/textures/shields_shield_bronze.png
new file mode 100644
index 0000000..89d6799
Binary files /dev/null and b/shields/textures/shields_shield_bronze.png differ
diff --git a/shields/textures/shields_shield_bronze_preview.png b/shields/textures/shields_shield_bronze_preview.png
new file mode 100644
index 0000000..5f9ca7b
Binary files /dev/null and b/shields/textures/shields_shield_bronze_preview.png differ
diff --git a/shields/textures/shields_shield_cactus.png b/shields/textures/shields_shield_cactus.png
new file mode 100644
index 0000000..8679aa5
Binary files /dev/null and b/shields/textures/shields_shield_cactus.png differ
diff --git a/shields/textures/shields_shield_cactus_preview.png b/shields/textures/shields_shield_cactus_preview.png
new file mode 100644
index 0000000..ae83661
Binary files /dev/null and b/shields/textures/shields_shield_cactus_preview.png differ
diff --git a/shields/textures/shields_shield_crystal.png b/shields/textures/shields_shield_crystal.png
new file mode 100644
index 0000000..888bc5a
Binary files /dev/null and b/shields/textures/shields_shield_crystal.png differ
diff --git a/shields/textures/shields_shield_crystal_preview.png b/shields/textures/shields_shield_crystal_preview.png
new file mode 100644
index 0000000..299776f
Binary files /dev/null and b/shields/textures/shields_shield_crystal_preview.png differ
diff --git a/shields/textures/shields_shield_diamond.png b/shields/textures/shields_shield_diamond.png
new file mode 100644
index 0000000..e4938f9
Binary files /dev/null and b/shields/textures/shields_shield_diamond.png differ
diff --git a/shields/textures/shields_shield_diamond_preview.png b/shields/textures/shields_shield_diamond_preview.png
new file mode 100644
index 0000000..afd004e
Binary files /dev/null and b/shields/textures/shields_shield_diamond_preview.png differ
diff --git a/shields/textures/shields_shield_enhanced_cactus.png b/shields/textures/shields_shield_enhanced_cactus.png
new file mode 100644
index 0000000..50d7673
Binary files /dev/null and b/shields/textures/shields_shield_enhanced_cactus.png differ
diff --git a/shields/textures/shields_shield_enhanced_cactus_preview.png b/shields/textures/shields_shield_enhanced_cactus_preview.png
new file mode 100644
index 0000000..b15df06
Binary files /dev/null and b/shields/textures/shields_shield_enhanced_cactus_preview.png differ
diff --git a/shields/textures/shields_shield_enhanced_wood.png b/shields/textures/shields_shield_enhanced_wood.png
new file mode 100644
index 0000000..14bd057
Binary files /dev/null and b/shields/textures/shields_shield_enhanced_wood.png differ
diff --git a/shields/textures/shields_shield_enhanced_wood_preview.png b/shields/textures/shields_shield_enhanced_wood_preview.png
new file mode 100644
index 0000000..9298383
Binary files /dev/null and b/shields/textures/shields_shield_enhanced_wood_preview.png differ
diff --git a/shields/textures/shields_shield_gold.png b/shields/textures/shields_shield_gold.png
new file mode 100644
index 0000000..b198d18
Binary files /dev/null and b/shields/textures/shields_shield_gold.png differ
diff --git a/shields/textures/shields_shield_gold_preview.png b/shields/textures/shields_shield_gold_preview.png
new file mode 100644
index 0000000..66d8f2e
Binary files /dev/null and b/shields/textures/shields_shield_gold_preview.png differ
diff --git a/shields/textures/shields_shield_mithril.png b/shields/textures/shields_shield_mithril.png
new file mode 100644
index 0000000..2fb622e
Binary files /dev/null and b/shields/textures/shields_shield_mithril.png differ
diff --git a/shields/textures/shields_shield_mithril_preview.png b/shields/textures/shields_shield_mithril_preview.png
new file mode 100644
index 0000000..45306e3
Binary files /dev/null and b/shields/textures/shields_shield_mithril_preview.png differ
diff --git a/shields/textures/shields_shield_steel.png b/shields/textures/shields_shield_steel.png
new file mode 100644
index 0000000..cfe58a1
Binary files /dev/null and b/shields/textures/shields_shield_steel.png differ
diff --git a/shields/textures/shields_shield_steel_preview.png b/shields/textures/shields_shield_steel_preview.png
new file mode 100644
index 0000000..0a3d36a
Binary files /dev/null and b/shields/textures/shields_shield_steel_preview.png differ
diff --git a/shields/textures/shields_shield_wood.png b/shields/textures/shields_shield_wood.png
new file mode 100644
index 0000000..baf092d
Binary files /dev/null and b/shields/textures/shields_shield_wood.png differ
diff --git a/shields/textures/shields_shield_wood_preview.png b/shields/textures/shields_shield_wood_preview.png
new file mode 100644
index 0000000..b446e4e
Binary files /dev/null and b/shields/textures/shields_shield_wood_preview.png differ
diff --git a/technic_armor/README.txt b/technic_armor/README.txt
new file mode 100644
index 0000000..93038e9
--- /dev/null
+++ b/technic_armor/README.txt
@@ -0,0 +1,9 @@
+[mod] Technic Armor [technic_armor]
+===================================
+
+Adds tin, silver and technic materials to 3d_armor.
+Requires technic (technic_worldgen at least) mod.
+
+Depends: 3d_armor, technic_worldgen
+
+Source code and textures by poet.nohit and numzero
diff --git a/technic_armor/depends.txt b/technic_armor/depends.txt
new file mode 100644
index 0000000..2546a84
--- /dev/null
+++ b/technic_armor/depends.txt
@@ -0,0 +1,3 @@
+3d_armor
+technic_worldgen
+moreores?
diff --git a/technic_armor/description.txt b/technic_armor/description.txt
new file mode 100644
index 0000000..5738c4f
--- /dev/null
+++ b/technic_armor/description.txt
@@ -0,0 +1 @@
+Adds tin, silver and technic materials to 3d_armor.
diff --git a/technic_armor/init.lua b/technic_armor/init.lua
new file mode 100644
index 0000000..e1a663d
--- /dev/null
+++ b/technic_armor/init.lua
@@ -0,0 +1,56 @@
+local stats = {
+ lead = { name="Lead", material="technic:lead_ingot", armor=1.6, heal=0, use=500, radiation=80*1.1 },
+ brass = { name="Brass", material="technic:brass_ingot", armor=1.8, heal=0, use=650, radiation=43 },
+ cast = { name="Cast Iron", material="technic:cast_iron_ingot", armor=2.5, heal=8, use=200, radiation=40 },
+ carbon = { name="Carbon Steel", material="technic:carbon_steel_ingot", armor=2.7, heal=10, use=100, radiation=40 },
+ stainless = { name="Stainless Steel", material="technic:stainless_steel_ingot", armor=2.7, heal=10, use=75, radiation=40 },
+}
+if minetest.get_modpath("moreores") then
+ stats.tin = { name="Tin", material="moreores:tin_ingot", armor=1.6, heal=0, use=750, radiation=37 }
+ stats.silver = { name="Silver", material="moreores:silver_ingot", armor=1.8, heal=6, use=650, radiation=53 }
+end
+
+local parts = {
+ helmet = { place="head", name="Helmet", level=5, radlevel = 0.10, craft={{1,1,1},{1,0,1}} },
+ chestplate = { place="torso", name="Chestplate", level=8, radlevel = 0.35, craft={{1,0,1},{1,1,1},{1,1,1}} },
+ leggings = { place="legs", name="Leggings", level=7, radlevel = 0.15, craft={{1,1,1},{1,0,1},{1,0,1}} },
+ boots = { place="feet", name="Boots", level=4, radlevel = 0.10, craft={{1,0,1},{1,0,1}} },
+}
+if minetest.get_modpath("shields") then
+ parts.shield = { place="shield", name="Shield", level=5, radlevel=0.00, craft={{1,1,1},{1,1,1},{0,1,0}} }
+end
+
+-- Makes a craft recipe based on a template
+-- template is a recipe-like table but indices are used instead of actual item names:
+-- 0 means nothing, everything else is treated as an index in the materials table
+local function make_recipe(template, materials)
+ local recipe = {}
+ for j, trow in ipairs(template) do
+ local rrow = {}
+ for i, tcell in ipairs(trow) do
+ if tcell == 0 then
+ rrow[i] = ""
+ else
+ rrow[i] = materials[tcell]
+ end
+ end
+ recipe[j] = rrow
+ end
+ return recipe
+end
+
+for key, armor in pairs(stats) do
+ for partkey, part in pairs(parts) do
+ local partname = "technic_armor:"..partkey.."_"..key
+ minetest.register_tool(partname, {
+ description = armor.name.." "..part.name,
+ inventory_image = "technic_armor_inv_"..partkey.."_"..key..".png",
+ groups = {["armor_"..part.place]=math.floor(part.level*armor.armor), armor_heal=armor.heal, armor_use=armor.use, armor_radiation=math.floor(part.radlevel*armor.radiation)},
+ wear = 0,
+ })
+ minetest.register_craft({
+ output = partname,
+ recipe = make_recipe(part.craft, {armor.material}),
+ })
+ end
+end
diff --git a/technic_armor/textures/technic_armor_boots_brass.png b/technic_armor/textures/technic_armor_boots_brass.png
new file mode 100644
index 0000000..a54b970
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_brass.png differ
diff --git a/technic_armor/textures/technic_armor_boots_brass_preview.png b/technic_armor/textures/technic_armor_boots_brass_preview.png
new file mode 100644
index 0000000..b054d4f
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_brass_preview.png differ
diff --git a/technic_armor/textures/technic_armor_boots_carbon.png b/technic_armor/textures/technic_armor_boots_carbon.png
new file mode 100644
index 0000000..379cc8e
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_boots_carbon_preview.png b/technic_armor/textures/technic_armor_boots_carbon_preview.png
new file mode 100644
index 0000000..8d7e480
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_carbon_preview.png differ
diff --git a/technic_armor/textures/technic_armor_boots_cast.png b/technic_armor/textures/technic_armor_boots_cast.png
new file mode 100644
index 0000000..5aa0aaa
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_cast.png differ
diff --git a/technic_armor/textures/technic_armor_boots_cast_preview.png b/technic_armor/textures/technic_armor_boots_cast_preview.png
new file mode 100644
index 0000000..22699f2
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_cast_preview.png differ
diff --git a/technic_armor/textures/technic_armor_boots_lead.png b/technic_armor/textures/technic_armor_boots_lead.png
new file mode 100644
index 0000000..a809e62
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_lead.png differ
diff --git a/technic_armor/textures/technic_armor_boots_lead_preview.png b/technic_armor/textures/technic_armor_boots_lead_preview.png
new file mode 100644
index 0000000..a6e7690
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_lead_preview.png differ
diff --git a/technic_armor/textures/technic_armor_boots_silver.png b/technic_armor/textures/technic_armor_boots_silver.png
new file mode 100644
index 0000000..1af5ccc
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_silver.png differ
diff --git a/technic_armor/textures/technic_armor_boots_silver_preview.png b/technic_armor/textures/technic_armor_boots_silver_preview.png
new file mode 100644
index 0000000..01e0caf
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_silver_preview.png differ
diff --git a/technic_armor/textures/technic_armor_boots_stainless.png b/technic_armor/textures/technic_armor_boots_stainless.png
new file mode 100644
index 0000000..eaa86c4
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_boots_stainless_preview.png b/technic_armor/textures/technic_armor_boots_stainless_preview.png
new file mode 100644
index 0000000..53cc9e7
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_stainless_preview.png differ
diff --git a/technic_armor/textures/technic_armor_boots_tin.png b/technic_armor/textures/technic_armor_boots_tin.png
new file mode 100644
index 0000000..11c740a
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_tin.png differ
diff --git a/technic_armor/textures/technic_armor_boots_tin_preview.png b/technic_armor/textures/technic_armor_boots_tin_preview.png
new file mode 100644
index 0000000..b1085af
Binary files /dev/null and b/technic_armor/textures/technic_armor_boots_tin_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_brass.png b/technic_armor/textures/technic_armor_chestplate_brass.png
new file mode 100644
index 0000000..d123aff
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_brass.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_brass_preview.png b/technic_armor/textures/technic_armor_chestplate_brass_preview.png
new file mode 100644
index 0000000..94c2a47
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_brass_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_carbon.png b/technic_armor/textures/technic_armor_chestplate_carbon.png
new file mode 100644
index 0000000..7f2b9f1
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_carbon_preview.png b/technic_armor/textures/technic_armor_chestplate_carbon_preview.png
new file mode 100644
index 0000000..da747e5
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_carbon_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_cast.png b/technic_armor/textures/technic_armor_chestplate_cast.png
new file mode 100644
index 0000000..6fa0628
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_cast.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_cast_preview.png b/technic_armor/textures/technic_armor_chestplate_cast_preview.png
new file mode 100644
index 0000000..bfbd4ec
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_cast_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_lead.png b/technic_armor/textures/technic_armor_chestplate_lead.png
new file mode 100644
index 0000000..8b91c7e
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_lead.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_lead_preview.png b/technic_armor/textures/technic_armor_chestplate_lead_preview.png
new file mode 100644
index 0000000..8429cbc
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_lead_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_silver.png b/technic_armor/textures/technic_armor_chestplate_silver.png
new file mode 100644
index 0000000..6790049
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_silver.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_silver_preview.png b/technic_armor/textures/technic_armor_chestplate_silver_preview.png
new file mode 100644
index 0000000..abf63b6
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_silver_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_stainless.png b/technic_armor/textures/technic_armor_chestplate_stainless.png
new file mode 100644
index 0000000..c2db5f6
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_stainless_preview.png b/technic_armor/textures/technic_armor_chestplate_stainless_preview.png
new file mode 100644
index 0000000..1266e6e
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_stainless_preview.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_tin.png b/technic_armor/textures/technic_armor_chestplate_tin.png
new file mode 100644
index 0000000..562354e
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_tin.png differ
diff --git a/technic_armor/textures/technic_armor_chestplate_tin_preview.png b/technic_armor/textures/technic_armor_chestplate_tin_preview.png
new file mode 100644
index 0000000..362a4ad
Binary files /dev/null and b/technic_armor/textures/technic_armor_chestplate_tin_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_brass.png b/technic_armor/textures/technic_armor_helmet_brass.png
new file mode 100644
index 0000000..9107a10
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_brass.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_brass_preview.png b/technic_armor/textures/technic_armor_helmet_brass_preview.png
new file mode 100644
index 0000000..cd625f4
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_brass_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_carbon.png b/technic_armor/textures/technic_armor_helmet_carbon.png
new file mode 100644
index 0000000..2a6eb6f
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_carbon_preview.png b/technic_armor/textures/technic_armor_helmet_carbon_preview.png
new file mode 100644
index 0000000..02a67b8
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_carbon_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_cast.png b/technic_armor/textures/technic_armor_helmet_cast.png
new file mode 100644
index 0000000..87ec50b
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_cast.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_cast_preview.png b/technic_armor/textures/technic_armor_helmet_cast_preview.png
new file mode 100644
index 0000000..c8d30c5
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_cast_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_lead.png b/technic_armor/textures/technic_armor_helmet_lead.png
new file mode 100644
index 0000000..251a95e
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_lead.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_lead_preview.png b/technic_armor/textures/technic_armor_helmet_lead_preview.png
new file mode 100644
index 0000000..ebc6454
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_lead_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_silver.png b/technic_armor/textures/technic_armor_helmet_silver.png
new file mode 100644
index 0000000..413625e
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_silver.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_silver_preview.png b/technic_armor/textures/technic_armor_helmet_silver_preview.png
new file mode 100644
index 0000000..a1d33d7
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_silver_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_stainless.png b/technic_armor/textures/technic_armor_helmet_stainless.png
new file mode 100644
index 0000000..b37bfcb
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_stainless_preview.png b/technic_armor/textures/technic_armor_helmet_stainless_preview.png
new file mode 100644
index 0000000..d08cc69
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_stainless_preview.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_tin.png b/technic_armor/textures/technic_armor_helmet_tin.png
new file mode 100644
index 0000000..4e0dae2
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_tin.png differ
diff --git a/technic_armor/textures/technic_armor_helmet_tin_preview.png b/technic_armor/textures/technic_armor_helmet_tin_preview.png
new file mode 100644
index 0000000..efb95be
Binary files /dev/null and b/technic_armor/textures/technic_armor_helmet_tin_preview.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_brass.png b/technic_armor/textures/technic_armor_inv_boots_brass.png
new file mode 100644
index 0000000..145d6c3
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_brass.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_carbon.png b/technic_armor/textures/technic_armor_inv_boots_carbon.png
new file mode 100644
index 0000000..dbf043f
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_cast.png b/technic_armor/textures/technic_armor_inv_boots_cast.png
new file mode 100644
index 0000000..ba33d07
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_cast.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_lead.png b/technic_armor/textures/technic_armor_inv_boots_lead.png
new file mode 100644
index 0000000..5fb7067
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_lead.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_silver.png b/technic_armor/textures/technic_armor_inv_boots_silver.png
new file mode 100644
index 0000000..7af9003
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_silver.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_stainless.png b/technic_armor/textures/technic_armor_inv_boots_stainless.png
new file mode 100644
index 0000000..6d114e7
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_inv_boots_tin.png b/technic_armor/textures/technic_armor_inv_boots_tin.png
new file mode 100644
index 0000000..6fbc5b3
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_boots_tin.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_brass.png b/technic_armor/textures/technic_armor_inv_chestplate_brass.png
new file mode 100644
index 0000000..4984954
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_brass.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_carbon.png b/technic_armor/textures/technic_armor_inv_chestplate_carbon.png
new file mode 100644
index 0000000..b921799
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_cast.png b/technic_armor/textures/technic_armor_inv_chestplate_cast.png
new file mode 100644
index 0000000..5e6749e
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_cast.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_lead.png b/technic_armor/textures/technic_armor_inv_chestplate_lead.png
new file mode 100644
index 0000000..b2ca61d
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_lead.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_silver.png b/technic_armor/textures/technic_armor_inv_chestplate_silver.png
new file mode 100644
index 0000000..442caa2
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_silver.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_stainless.png b/technic_armor/textures/technic_armor_inv_chestplate_stainless.png
new file mode 100644
index 0000000..5462100
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_inv_chestplate_tin.png b/technic_armor/textures/technic_armor_inv_chestplate_tin.png
new file mode 100644
index 0000000..eeb7328
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_chestplate_tin.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_brass.png b/technic_armor/textures/technic_armor_inv_helmet_brass.png
new file mode 100644
index 0000000..e56ec30
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_brass.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_carbon.png b/technic_armor/textures/technic_armor_inv_helmet_carbon.png
new file mode 100644
index 0000000..fc2a592
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_cast.png b/technic_armor/textures/technic_armor_inv_helmet_cast.png
new file mode 100644
index 0000000..15092c1
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_cast.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_lead.png b/technic_armor/textures/technic_armor_inv_helmet_lead.png
new file mode 100644
index 0000000..5e54cd6
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_lead.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_silver.png b/technic_armor/textures/technic_armor_inv_helmet_silver.png
new file mode 100644
index 0000000..4a17003
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_silver.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_stainless.png b/technic_armor/textures/technic_armor_inv_helmet_stainless.png
new file mode 100644
index 0000000..1cc480e
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_inv_helmet_tin.png b/technic_armor/textures/technic_armor_inv_helmet_tin.png
new file mode 100644
index 0000000..c37cb75
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_helmet_tin.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_brass.png b/technic_armor/textures/technic_armor_inv_leggings_brass.png
new file mode 100644
index 0000000..876bf7c
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_brass.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_carbon.png b/technic_armor/textures/technic_armor_inv_leggings_carbon.png
new file mode 100644
index 0000000..e4673a9
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_cast.png b/technic_armor/textures/technic_armor_inv_leggings_cast.png
new file mode 100644
index 0000000..df61ca6
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_cast.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_lead.png b/technic_armor/textures/technic_armor_inv_leggings_lead.png
new file mode 100644
index 0000000..6e456a3
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_lead.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_silver.png b/technic_armor/textures/technic_armor_inv_leggings_silver.png
new file mode 100644
index 0000000..ad8c91b
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_silver.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_stainless.png b/technic_armor/textures/technic_armor_inv_leggings_stainless.png
new file mode 100644
index 0000000..7e4feaf
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_inv_leggings_tin.png b/technic_armor/textures/technic_armor_inv_leggings_tin.png
new file mode 100644
index 0000000..bbaeb6a
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_leggings_tin.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_brass.png b/technic_armor/textures/technic_armor_inv_shield_brass.png
new file mode 100644
index 0000000..dbb63cd
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_brass.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_carbon.png b/technic_armor/textures/technic_armor_inv_shield_carbon.png
new file mode 100644
index 0000000..c6ae42a
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_cast.png b/technic_armor/textures/technic_armor_inv_shield_cast.png
new file mode 100644
index 0000000..f1bcfb9
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_cast.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_lead.png b/technic_armor/textures/technic_armor_inv_shield_lead.png
new file mode 100644
index 0000000..751e050
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_lead.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_silver.png b/technic_armor/textures/technic_armor_inv_shield_silver.png
new file mode 100644
index 0000000..39dd7f4
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_silver.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_stainless.png b/technic_armor/textures/technic_armor_inv_shield_stainless.png
new file mode 100644
index 0000000..2455726
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_inv_shield_tin.png b/technic_armor/textures/technic_armor_inv_shield_tin.png
new file mode 100644
index 0000000..e6fb9d8
Binary files /dev/null and b/technic_armor/textures/technic_armor_inv_shield_tin.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_brass.png b/technic_armor/textures/technic_armor_leggings_brass.png
new file mode 100644
index 0000000..f9c84fd
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_brass.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_brass_preview.png b/technic_armor/textures/technic_armor_leggings_brass_preview.png
new file mode 100644
index 0000000..05048e3
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_brass_preview.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_carbon.png b/technic_armor/textures/technic_armor_leggings_carbon.png
new file mode 100644
index 0000000..2c83e23
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_carbon_preview.png b/technic_armor/textures/technic_armor_leggings_carbon_preview.png
new file mode 100644
index 0000000..9fb6391
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_carbon_preview.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_cast.png b/technic_armor/textures/technic_armor_leggings_cast.png
new file mode 100644
index 0000000..e7ca67f
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_cast.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_cast_preview.png b/technic_armor/textures/technic_armor_leggings_cast_preview.png
new file mode 100644
index 0000000..67dd933
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_cast_preview.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_lead.png b/technic_armor/textures/technic_armor_leggings_lead.png
new file mode 100644
index 0000000..75be6c9
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_lead.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_lead_preview.png b/technic_armor/textures/technic_armor_leggings_lead_preview.png
new file mode 100644
index 0000000..2777c6d
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_lead_preview.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_silver.png b/technic_armor/textures/technic_armor_leggings_silver.png
new file mode 100644
index 0000000..6ae30f3
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_silver.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_silver_preview.png b/technic_armor/textures/technic_armor_leggings_silver_preview.png
new file mode 100644
index 0000000..0f6ecd2
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_silver_preview.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_stainless.png b/technic_armor/textures/technic_armor_leggings_stainless.png
new file mode 100644
index 0000000..5eab543
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_stainless_preview.png b/technic_armor/textures/technic_armor_leggings_stainless_preview.png
new file mode 100644
index 0000000..6504d9d
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_stainless_preview.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_tin.png b/technic_armor/textures/technic_armor_leggings_tin.png
new file mode 100644
index 0000000..5973135
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_tin.png differ
diff --git a/technic_armor/textures/technic_armor_leggings_tin_preview.png b/technic_armor/textures/technic_armor_leggings_tin_preview.png
new file mode 100644
index 0000000..a6d105f
Binary files /dev/null and b/technic_armor/textures/technic_armor_leggings_tin_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_brass.png b/technic_armor/textures/technic_armor_shield_brass.png
new file mode 100644
index 0000000..7ffdb63
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_brass.png differ
diff --git a/technic_armor/textures/technic_armor_shield_brass_preview.png b/technic_armor/textures/technic_armor_shield_brass_preview.png
new file mode 100644
index 0000000..83d65c4
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_brass_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_carbon.png b/technic_armor/textures/technic_armor_shield_carbon.png
new file mode 100644
index 0000000..f78e1a9
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_carbon.png differ
diff --git a/technic_armor/textures/technic_armor_shield_carbon_preview.png b/technic_armor/textures/technic_armor_shield_carbon_preview.png
new file mode 100644
index 0000000..2b275cf
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_carbon_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_cast.png b/technic_armor/textures/technic_armor_shield_cast.png
new file mode 100644
index 0000000..0911277
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_cast.png differ
diff --git a/technic_armor/textures/technic_armor_shield_cast_preview.png b/technic_armor/textures/technic_armor_shield_cast_preview.png
new file mode 100644
index 0000000..2d0aea6
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_cast_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_lead.png b/technic_armor/textures/technic_armor_shield_lead.png
new file mode 100644
index 0000000..96a82b5
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_lead.png differ
diff --git a/technic_armor/textures/technic_armor_shield_lead_preview.png b/technic_armor/textures/technic_armor_shield_lead_preview.png
new file mode 100644
index 0000000..8f29f6b
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_lead_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_silver.png b/technic_armor/textures/technic_armor_shield_silver.png
new file mode 100644
index 0000000..8573eec
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_silver.png differ
diff --git a/technic_armor/textures/technic_armor_shield_silver_preview.png b/technic_armor/textures/technic_armor_shield_silver_preview.png
new file mode 100644
index 0000000..1b04681
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_silver_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_stainless.png b/technic_armor/textures/technic_armor_shield_stainless.png
new file mode 100644
index 0000000..6d6adb3
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_stainless.png differ
diff --git a/technic_armor/textures/technic_armor_shield_stainless_preview.png b/technic_armor/textures/technic_armor_shield_stainless_preview.png
new file mode 100644
index 0000000..8bdcbb4
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_stainless_preview.png differ
diff --git a/technic_armor/textures/technic_armor_shield_tin.png b/technic_armor/textures/technic_armor_shield_tin.png
new file mode 100644
index 0000000..048927c
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_tin.png differ
diff --git a/technic_armor/textures/technic_armor_shield_tin_preview.png b/technic_armor/textures/technic_armor_shield_tin_preview.png
new file mode 100644
index 0000000..25fa7a0
Binary files /dev/null and b/technic_armor/textures/technic_armor_shield_tin_preview.png differ
diff --git a/wieldview/README.txt b/wieldview/README.txt
new file mode 100644
index 0000000..cffae46
--- /dev/null
+++ b/wieldview/README.txt
@@ -0,0 +1,15 @@
+[mod] visible wielded items [wieldview]
+=======================================
+
+depends: default, 3d_armor
+
+Makes hand wielded items visible to other players.
+
+default settings: [minetest.conf]
+
+# Set number of seconds between visible wielded item updates.
+wieldview_update_time = 2
+
+# Show nodes as tiles, disabled by default
+wieldview_node_tiles = false
+
diff --git a/wieldview/depends.txt b/wieldview/depends.txt
new file mode 100644
index 0000000..585cc7a
--- /dev/null
+++ b/wieldview/depends.txt
@@ -0,0 +1,2 @@
+default
+3d_armor
diff --git a/wieldview/description.txt b/wieldview/description.txt
new file mode 100644
index 0000000..0d51ad9
--- /dev/null
+++ b/wieldview/description.txt
@@ -0,0 +1 @@
+Makes hand wielded items visible to other players.
diff --git a/wieldview/init.lua b/wieldview/init.lua
new file mode 100644
index 0000000..7a5a619
--- /dev/null
+++ b/wieldview/init.lua
@@ -0,0 +1,76 @@
+local time = 0
+local update_time = tonumber(minetest.setting_get("wieldview_update_time"))
+if not update_time then
+ update_time = 2
+ minetest.setting_set("wieldview_update_time", tostring(update_time))
+end
+local node_tiles = minetest.setting_getbool("wieldview_node_tiles")
+if not node_tiles then
+ node_tiles = false
+ minetest.setting_set("wieldview_node_tiles", "false")
+end
+
+wieldview = {
+ wielded_item = {},
+ transform = {},
+}
+
+dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua")
+
+wieldview.get_item_texture = function(self, item)
+ local texture = "3d_armor_trans.png"
+ if item ~= "" then
+ if minetest.registered_items[item] then
+ if minetest.registered_items[item].inventory_image ~= "" then
+ texture = minetest.registered_items[item].inventory_image
+ elseif node_tiles == true and minetest.registered_items[item].tiles
+ and type(minetest.registered_items[item].tiles[1]) == "string"
+ and minetest.registered_items[item].tiles[1] ~= "" then
+ texture = minetest.inventorycube(minetest.registered_items[item].tiles[1])
+ end
+ end
+ if wieldview.transform[item] then
+ texture = texture.."^[transform"..wieldview.transform[item]
+ end
+ end
+ return texture
+end
+
+wieldview.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_item[name] then
+ if self.wielded_item[name] == item then
+ return
+ end
+ armor.textures[name].wielditem = self:get_item_texture(item)
+ armor:update_player_visuals(player)
+ end
+ self.wielded_item[name] = item
+end
+
+minetest.register_on_joinplayer(function(player)
+ local name = player:get_player_name()
+ wieldview.wielded_item[name] = ""
+ minetest.after(0, function(player)
+ wieldview:update_wielded_item(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
+ wieldview:update_wielded_item(player)
+ end
+ time = 0
+ end
+end)
+
diff --git a/wieldview/transform.lua b/wieldview/transform.lua
new file mode 100644
index 0000000..4d5133e
--- /dev/null
+++ b/wieldview/transform.lua
@@ -0,0 +1,24 @@
+-- Wielded Item Transformations - http://dev.minetest.net/texture
+
+wieldview.transform = {
+ ["default:torch"]="R270",
+ ["default:sapling"]="R270",
+ ["flowers:dandelion_white"]="R270",
+ ["flowers:dandelion_yellow"]="R270",
+ ["flowers:geranium"]="R270",
+ ["flowers:rose"]="R270",
+ ["flowers:tulip"]="R270",
+ ["flowers:viola"]="R270",
+ ["bucket:bucket_empty"]="R270",
+ ["bucket:bucket_water"]="R270",
+ ["bucket:bucket_lava"]="R270",
+ ["screwdriver:screwdriver"]="R270",
+ ["screwdriver:screwdriver1"]="R270",
+ ["screwdriver:screwdriver2"]="R270",
+ ["screwdriver:screwdriver3"]="R270",
+ ["screwdriver:screwdriver4"]="R270",
+ ["vessels:glass_bottle"]="R270",
+ ["vessels:drinking_glass"]="R270",
+ ["vessels:steel_bottle"]="R270",
+}
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/minetest-mod-3d-armor.git
More information about the Pkg-games-commits
mailing list