From 4d2e0bd2a755f7a8ffc6b9b9244dad2a1985d00d Mon Sep 17 00:00:00 2001 From: David Leal Date: Wed, 23 Oct 2019 22:07:13 -0500 Subject: [PATCH] Update all MinetestForFun mods (#540) --- mods/3d_armor/.gitignore | 3 + mods/3d_armor/3d_armor/LICENSE.txt | 26 + mods/3d_armor/3d_armor/README.txt | 179 ++- mods/3d_armor/3d_armor/admin.lua | 45 - mods/3d_armor/3d_armor/api.lua | 552 +++++++++ mods/3d_armor/3d_armor/armor.conf | 37 - mods/3d_armor/3d_armor/armor.conf.example | 10 +- mods/3d_armor/3d_armor/armor.lua | 1059 ++++++----------- mods/3d_armor/3d_armor/crafting_guide.txt | 19 +- mods/3d_armor/3d_armor/depends.txt | 7 - mods/3d_armor/3d_armor/description.txt | 1 - mods/3d_armor/3d_armor/init.lua | 731 ++++++++---- mods/3d_armor/3d_armor/intllib.lua | 45 + mods/3d_armor/3d_armor/locale/es.po | 384 ++++++ mods/3d_armor/3d_armor/locale/fr.po | 295 +++++ mods/3d_armor/3d_armor/locale/it.po | 295 +++++ mods/3d_armor/3d_armor/locale/ms.po | 296 +++++ mods/3d_armor/3d_armor/locale/pt.po | 295 +++++ mods/3d_armor/3d_armor/locale/pt_BR.po | 295 +++++ mods/3d_armor/3d_armor/locale/ru.po | 294 +++++ mods/3d_armor/3d_armor/locale/template.pot | 294 +++++ mods/3d_armor/3d_armor/mod.conf | 4 + .../3d_armor/models/3d_armor_character.b3d | Bin 138994 -> 151606 bytes .../3d_armor/models/3d_armor_character.blend | Bin 648828 -> 775480 bytes .../3d_armor/textures/3d_armor_trans.png | Bin 75 -> 274 bytes .../3d_armor/textures/3d_armor_ui_form.png | Bin 366 -> 9116 bytes .../3d_armor/textures/character_preview.png | Bin 303 -> 349 bytes .../textures/inventory_plus_armor.png | Bin 544 -> 533 bytes .../3d_armor/textures/preview_index.txt | 44 + mods/3d_armor/3d_armor/tools/README.md | 7 + mods/3d_armor/3d_armor/tools/updatepo.sh | 24 + mods/3d_armor/3d_armor_ip/LICENSE.txt | 18 + mods/3d_armor/3d_armor_ip/init.lua | 38 + mods/3d_armor/3d_armor_ip/mod.conf | 4 + mods/3d_armor/3d_armor_sfinv/LICENSE.txt | 18 + mods/3d_armor/3d_armor_sfinv/init.lua | 21 + mods/3d_armor/3d_armor_sfinv/mod.conf | 4 + mods/3d_armor/3d_armor_stand/LICENSE.txt | 40 +- mods/3d_armor/3d_armor_stand/depends.txt | 2 - mods/3d_armor/3d_armor_stand/init.lua | 146 ++- mods/3d_armor/3d_armor_stand/mod.conf | 2 + .../3d_armor_stand/models/3d_armor_stand.obj | 449 ++++--- .../3d_armor_stand/models/3d_armor_stand.png | Bin 0 -> 1628 bytes .../models/3d_armor_stand_locked.png | Bin 0 -> 1992 bytes .../textures/3d_armor_stand_feet.png | Bin 243 -> 160 bytes .../textures/3d_armor_stand_head.png | Bin 262 -> 164 bytes .../textures/3d_armor_stand_legs.png | Bin 249 -> 159 bytes .../textures/3d_armor_stand_shield.png | Bin 0 -> 166 bytes .../textures/3d_armor_stand_torso.png | Bin 274 -> 191 bytes mods/3d_armor/3d_armor_ui/LICENSE.txt | 18 + mods/3d_armor/3d_armor_ui/init.lua | 53 + mods/3d_armor/3d_armor_ui/mod.conf | 4 + mods/3d_armor/LICENSE.md | 6 +- mods/3d_armor/README.md | 45 +- mods/3d_armor/description.txt | 1 - mods/3d_armor/modpack.conf | 2 + mods/3d_armor/modpack.txt | 0 mods/3d_armor/preview_gen.py | 81 ++ mods/3d_armor/screenshot.png | Bin 0 -> 66964 bytes mods/3d_armor/settingtypes.txt | 65 + mods/3d_armor/shields/LICENSE.txt | 26 + mods/3d_armor/shields/README.txt | 10 + mods/3d_armor/shields/depends.txt | 2 - mods/3d_armor/shields/description.txt | 1 - mods/3d_armor/shields/init.lua | 222 +++- mods/3d_armor/shields/mod.conf | 3 + .../shields/textures/preview_index.txt | 11 + .../textures/shields_shield_blackmithril.png | Bin mods/3d_armor/wieldview/LICENSE.txt | 18 + mods/3d_armor/wieldview/README.txt | 10 +- mods/3d_armor/wieldview/depends.txt | 2 - mods/3d_armor/wieldview/description.txt | 1 - mods/3d_armor/wieldview/init.lua | 34 +- mods/3d_armor/wieldview/mod.conf | 3 + .../3d_armor_classes/blackmithril/depends.txt | 2 - mods/3d_armor_classes/blackmithril/init.lua | 33 +- mods/3d_armor_classes/blackmithril/mod.conf | 2 + .../hardenedleather/depends.txt | 2 - .../3d_armor_classes/hardenedleather/init.lua | 23 +- .../3d_armor_classes/hardenedleather/mod.conf | 2 + .../3d_armor_classes/magicmithril/depends.txt | 2 - mods/3d_armor_classes/magicmithril/mod.conf | 2 + mods/3d_armor_classes/modpack.conf | 1 + mods/3d_armor_classes/modpack.txt | 0 mods/3d_armor_classes/obsidian/depends.txt | 2 - mods/3d_armor_classes/obsidian/mod.conf | 2 + .../reinforcedleather/depends.txt | 2 - .../reinforcedleather/init.lua | 25 +- .../reinforcedleather/mod.conf | 2 + mods/action_timers/mod.conf | 1 + mods/arrow_signs/depends.txt | 2 - mods/arrow_signs/init.lua | 21 +- mods/arrow_signs/mod.conf | 3 + mods/automappercolors/init.lua | 6 +- mods/automappercolors/mod.conf | 1 + mods/bones/depends.txt | 4 - mods/bones/init.lua | 12 +- mods/bones/mod.conf | 3 + mods/broomstick/depends.txt | 4 - mods/broomstick/mod.conf | 2 + mods/chesttools/depends.txt | 1 - mods/chesttools/mod.conf | 2 + mods/christmas_craft/depends.txt | 3 - mods/christmas_craft/init.lua | 99 +- mods/christmas_craft/mod.conf | 3 + mods/christmas_craft/mods.lua | 10 +- mods/christmas_craft/settings.lua | 6 +- mods/death_messages/depends.txt | 1 - mods/death_messages/init.lua | 4 +- mods/death_messages/mod.conf | 2 + mods/eventobjects/depends.txt | 1 - mods/eventobjects/init.lua | 2 +- mods/eventobjects/mod.conf | 2 + mods/glow/glow/depends.txt | 1 - mods/glow/glow/mod.conf | 2 + mods/glow/modpack.conf | 2 + mods/glow/modpack.txt | 0 mods/hbhunger/hunger.lua | 6 +- mods/interact/depends.txt | 0 mods/interact/mod.conf | 2 + mods/inventory_icon/depends.txt | 1 - mods/inventory_icon/description.txt | 1 - mods/inventory_icon/mod.conf | 6 + mods/inventorycheck/depends.txt | 1 - mods/inventorycheck/init.lua | 19 +- mods/inventorycheck/mod.conf | 3 + mods/invtweak/README.txt | 2 +- mods/invtweak/depends.txt | 3 - mods/invtweak/init.lua | 52 +- mods/invtweak/mod.conf | 3 + mods/jumping/init.lua | 2 +- mods/jumping/mod.conf | 2 + mods/maze/.gitignore | 4 + mods/maze/mod.conf | 1 + mods/meru/depends.txt | 1 - mods/meru/mod.conf | 2 + mods/mff/mff_core/mod.conf | 1 + mods/mff/mff_pclasses/depends.txt | 3 - mods/mff/mff_pclasses/mod.conf | 2 + mods/mff/mff_quests/depends.txt | 3 - mods/mff/mff_quests/init.lua | 2 +- mods/mff/mff_quests/mod.conf | 2 + mods/mff/modpack.conf | 1 + mods/mff/modpack.txt | 0 mods/multitest/depends.txt | 3 - mods/multitest/mod.conf | 2 + mods/music/depends.txt | 1 - mods/music/init.lua | 2 +- mods/music/mod.conf | 2 + mods/news/mod.conf | 1 + mods/notice/mod.conf | 1 + mods/paintings/depends.txt | 2 - mods/paintings/init.lua | 4 +- mods/paintings/mod.conf | 2 + mods/pclasses/api.lua | 4 + mods/pclasses/depends.txt | 3 - mods/pclasses/mod.conf | 2 + mods/peace_areas/init.lua | 6 +- mods/peace_areas/mod.conf | 1 + mods/profnsched/init.lua | 15 +- mods/profnsched/mod.conf | 1 + mods/report/depends.txt | 3 - mods/report/mod.conf | 4 + mods/riesenpilz/depends.txt | 4 - mods/riesenpilz/mod.conf | 3 + mods/runes/depends.txt | 3 - mods/runes/glyphs.lua | 10 +- mods/runes/handlers.lua | 8 +- mods/runes/mod.conf | 2 + mods/sea/clams/depends.txt | 1 - mods/sea/clams/init.lua | 30 +- mods/sea/clams/mod.conf | 2 + mods/sea/modpack.conf | 1 + mods/sea/modpack.txt | 0 mods/sea/noairblocks/depends.txt | 1 - mods/sea/noairblocks/mod.conf | 2 + mods/sea/seacobble/depends.txt | 6 - mods/sea/seacobble/mod.conf | 3 + mods/sea/seacoral/depends.txt | 4 - mods/sea/seacoral/mod.conf | 3 + mods/sea/seaglass/depends.txt | 6 - mods/sea/seaglass/init.lua | 274 ++--- mods/sea/seaglass/mod.conf | 3 + mods/sea/seagravel/depends.txt | 6 - mods/sea/seagravel/init.lua | 8 +- mods/sea/seagravel/mod.conf | 3 + mods/sea/sealamps/depends.txt | 3 - mods/sea/sealamps/init.lua | 8 +- mods/sea/sealamps/mod.conf | 2 + mods/sea/seaplants/depends.txt | 2 - mods/sea/seaplants/init.lua | 23 +- mods/sea/seaplants/mod.conf | 2 + mods/sea/seastone/depends.txt | 6 - mods/sea/seastone/init.lua | 14 +- mods/sea/seastone/mod.conf | 3 + mods/sea/seastonebrick/depends.txt | 4 - mods/sea/seastonebrick/init.lua | 11 +- mods/sea/seastonebrick/mod.conf | 3 + mods/sea/seawrecks/depends.txt | 1 - mods/sea/seawrecks/init.lua | 11 +- mods/sea/seawrecks/mod.conf | 2 + mods/sea/stairsshine/depends.txt | 1 - mods/sea/stairsshine/mod.conf | 2 + mods/sea/whiteshell/depends.txt | 2 - mods/sea/whiteshell/init.lua | 16 +- mods/sea/whiteshell/mod.conf | 2 + mods/serverguide/depends.txt | 1 - mods/serverguide/mod.conf | 2 + mods/shutdown/depends.txt | 1 - mods/shutdown/init.lua | 10 +- mods/shutdown/mod.conf | 2 + mods/soundset/depends.txt | 1 - mods/soundset/init.lua | 33 +- mods/soundset/mod.conf | 2 + mods/spears/depends.txt | 1 - mods/spears/functions.lua | 20 +- mods/spears/init.lua | 7 +- mods/spears/mod.conf | 2 + mods/spears/tools.lua | 15 +- mods/sponge/init.lua | 2 +- mods/sponge/mod.conf | 1 + mods/track_players/init.lua | 4 +- mods/track_players/mod.conf | 1 + mods/vector_extras/mod.conf | 1 + mods/vector_extras/vector_meta.lua | 4 +- mods/watershed/README.txt | 15 +- mods/watershed/depends.txt | 3 - mods/watershed/init.lua | 27 +- mods/watershed/license.txt | 26 +- mods/watershed/mod.conf | 2 + mods/watershed/nodes.lua | 4 +- mods/whoison/functions.lua | 7 +- mods/whoison/init.lua | 4 +- mods/whoison/mod.conf | 1 + 234 files changed, 5833 insertions(+), 1954 deletions(-) create mode 100644 mods/3d_armor/3d_armor/LICENSE.txt delete mode 100755 mods/3d_armor/3d_armor/admin.lua create mode 100644 mods/3d_armor/3d_armor/api.lua delete mode 100755 mods/3d_armor/3d_armor/armor.conf delete mode 100755 mods/3d_armor/3d_armor/depends.txt delete mode 100644 mods/3d_armor/3d_armor/description.txt create mode 100644 mods/3d_armor/3d_armor/intllib.lua create mode 100644 mods/3d_armor/3d_armor/locale/es.po create mode 100644 mods/3d_armor/3d_armor/locale/fr.po create mode 100644 mods/3d_armor/3d_armor/locale/it.po create mode 100644 mods/3d_armor/3d_armor/locale/ms.po create mode 100644 mods/3d_armor/3d_armor/locale/pt.po create mode 100644 mods/3d_armor/3d_armor/locale/pt_BR.po create mode 100644 mods/3d_armor/3d_armor/locale/ru.po create mode 100644 mods/3d_armor/3d_armor/locale/template.pot create mode 100644 mods/3d_armor/3d_armor/mod.conf create mode 100644 mods/3d_armor/3d_armor/textures/preview_index.txt create mode 100644 mods/3d_armor/3d_armor/tools/README.md create mode 100644 mods/3d_armor/3d_armor/tools/updatepo.sh create mode 100644 mods/3d_armor/3d_armor_ip/LICENSE.txt create mode 100644 mods/3d_armor/3d_armor_ip/init.lua create mode 100644 mods/3d_armor/3d_armor_ip/mod.conf create mode 100644 mods/3d_armor/3d_armor_sfinv/LICENSE.txt create mode 100644 mods/3d_armor/3d_armor_sfinv/init.lua create mode 100644 mods/3d_armor/3d_armor_sfinv/mod.conf delete mode 100644 mods/3d_armor/3d_armor_stand/depends.txt create mode 100644 mods/3d_armor/3d_armor_stand/mod.conf create mode 100644 mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png create mode 100644 mods/3d_armor/3d_armor_stand/models/3d_armor_stand_locked.png create mode 100644 mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_shield.png create mode 100644 mods/3d_armor/3d_armor_ui/LICENSE.txt create mode 100644 mods/3d_armor/3d_armor_ui/init.lua create mode 100644 mods/3d_armor/3d_armor_ui/mod.conf delete mode 100644 mods/3d_armor/description.txt create mode 100644 mods/3d_armor/modpack.conf delete mode 100755 mods/3d_armor/modpack.txt create mode 100644 mods/3d_armor/preview_gen.py create mode 100644 mods/3d_armor/screenshot.png create mode 100644 mods/3d_armor/settingtypes.txt create mode 100644 mods/3d_armor/shields/LICENSE.txt delete mode 100755 mods/3d_armor/shields/depends.txt delete mode 100644 mods/3d_armor/shields/description.txt create mode 100644 mods/3d_armor/shields/mod.conf create mode 100644 mods/3d_armor/shields/textures/preview_index.txt mode change 100755 => 100644 mods/3d_armor/shields/textures/shields_shield_blackmithril.png create mode 100644 mods/3d_armor/wieldview/LICENSE.txt delete mode 100755 mods/3d_armor/wieldview/depends.txt delete mode 100644 mods/3d_armor/wieldview/description.txt create mode 100644 mods/3d_armor/wieldview/mod.conf delete mode 100755 mods/3d_armor_classes/blackmithril/depends.txt create mode 100644 mods/3d_armor_classes/blackmithril/mod.conf delete mode 100755 mods/3d_armor_classes/hardenedleather/depends.txt create mode 100644 mods/3d_armor_classes/hardenedleather/mod.conf delete mode 100755 mods/3d_armor_classes/magicmithril/depends.txt create mode 100644 mods/3d_armor_classes/magicmithril/mod.conf create mode 100644 mods/3d_armor_classes/modpack.conf delete mode 100755 mods/3d_armor_classes/modpack.txt delete mode 100755 mods/3d_armor_classes/obsidian/depends.txt create mode 100644 mods/3d_armor_classes/obsidian/mod.conf delete mode 100755 mods/3d_armor_classes/reinforcedleather/depends.txt create mode 100644 mods/3d_armor_classes/reinforcedleather/mod.conf create mode 100644 mods/action_timers/mod.conf delete mode 100755 mods/arrow_signs/depends.txt create mode 100644 mods/arrow_signs/mod.conf create mode 100644 mods/automappercolors/mod.conf delete mode 100755 mods/bones/depends.txt create mode 100644 mods/bones/mod.conf delete mode 100755 mods/broomstick/depends.txt create mode 100644 mods/broomstick/mod.conf delete mode 100755 mods/chesttools/depends.txt create mode 100644 mods/chesttools/mod.conf delete mode 100755 mods/christmas_craft/depends.txt create mode 100644 mods/christmas_craft/mod.conf delete mode 100755 mods/death_messages/depends.txt create mode 100644 mods/death_messages/mod.conf delete mode 100755 mods/eventobjects/depends.txt create mode 100644 mods/eventobjects/mod.conf delete mode 100755 mods/glow/glow/depends.txt create mode 100644 mods/glow/glow/mod.conf create mode 100644 mods/glow/modpack.conf delete mode 100755 mods/glow/modpack.txt delete mode 100755 mods/interact/depends.txt create mode 100644 mods/interact/mod.conf delete mode 100755 mods/inventory_icon/depends.txt delete mode 100755 mods/inventory_icon/description.txt create mode 100644 mods/inventory_icon/mod.conf delete mode 100755 mods/inventorycheck/depends.txt create mode 100644 mods/inventorycheck/mod.conf delete mode 100755 mods/invtweak/depends.txt create mode 100644 mods/invtweak/mod.conf create mode 100644 mods/jumping/mod.conf create mode 100644 mods/maze/.gitignore create mode 100644 mods/maze/mod.conf delete mode 100755 mods/meru/depends.txt create mode 100644 mods/meru/mod.conf create mode 100644 mods/mff/mff_core/mod.conf delete mode 100755 mods/mff/mff_pclasses/depends.txt create mode 100644 mods/mff/mff_pclasses/mod.conf delete mode 100755 mods/mff/mff_quests/depends.txt create mode 100644 mods/mff/mff_quests/mod.conf create mode 100644 mods/mff/modpack.conf delete mode 100755 mods/mff/modpack.txt delete mode 100755 mods/multitest/depends.txt create mode 100644 mods/multitest/mod.conf delete mode 100755 mods/music/depends.txt create mode 100644 mods/music/mod.conf create mode 100644 mods/news/mod.conf create mode 100644 mods/notice/mod.conf delete mode 100755 mods/paintings/depends.txt create mode 100644 mods/paintings/mod.conf delete mode 100755 mods/pclasses/depends.txt create mode 100644 mods/pclasses/mod.conf create mode 100644 mods/peace_areas/mod.conf create mode 100644 mods/profnsched/mod.conf delete mode 100644 mods/report/depends.txt create mode 100644 mods/report/mod.conf delete mode 100755 mods/riesenpilz/depends.txt create mode 100644 mods/riesenpilz/mod.conf delete mode 100755 mods/runes/depends.txt create mode 100644 mods/runes/mod.conf delete mode 100755 mods/sea/clams/depends.txt create mode 100644 mods/sea/clams/mod.conf create mode 100644 mods/sea/modpack.conf delete mode 100755 mods/sea/modpack.txt delete mode 100755 mods/sea/noairblocks/depends.txt create mode 100644 mods/sea/noairblocks/mod.conf delete mode 100755 mods/sea/seacobble/depends.txt create mode 100644 mods/sea/seacobble/mod.conf delete mode 100755 mods/sea/seacoral/depends.txt create mode 100644 mods/sea/seacoral/mod.conf delete mode 100755 mods/sea/seaglass/depends.txt create mode 100644 mods/sea/seaglass/mod.conf delete mode 100755 mods/sea/seagravel/depends.txt create mode 100644 mods/sea/seagravel/mod.conf delete mode 100755 mods/sea/sealamps/depends.txt create mode 100644 mods/sea/sealamps/mod.conf delete mode 100755 mods/sea/seaplants/depends.txt create mode 100644 mods/sea/seaplants/mod.conf delete mode 100755 mods/sea/seastone/depends.txt create mode 100644 mods/sea/seastone/mod.conf delete mode 100755 mods/sea/seastonebrick/depends.txt create mode 100644 mods/sea/seastonebrick/mod.conf delete mode 100755 mods/sea/seawrecks/depends.txt create mode 100644 mods/sea/seawrecks/mod.conf delete mode 100755 mods/sea/stairsshine/depends.txt create mode 100644 mods/sea/stairsshine/mod.conf delete mode 100755 mods/sea/whiteshell/depends.txt create mode 100644 mods/sea/whiteshell/mod.conf delete mode 100644 mods/serverguide/depends.txt create mode 100644 mods/serverguide/mod.conf delete mode 100755 mods/shutdown/depends.txt create mode 100644 mods/shutdown/mod.conf delete mode 100755 mods/soundset/depends.txt create mode 100644 mods/soundset/mod.conf delete mode 100755 mods/spears/depends.txt create mode 100644 mods/spears/mod.conf create mode 100644 mods/sponge/mod.conf create mode 100644 mods/track_players/mod.conf create mode 100644 mods/vector_extras/mod.conf delete mode 100755 mods/watershed/depends.txt create mode 100644 mods/watershed/mod.conf create mode 100644 mods/whoison/mod.conf diff --git a/mods/3d_armor/.gitignore b/mods/3d_armor/.gitignore index 6e4e4593..ba96b081 100755 --- a/mods/3d_armor/.gitignore +++ b/mods/3d_armor/.gitignore @@ -6,3 +6,6 @@ tags *.vim armor.conf +## Eclipse project files & directories +.project +.settings diff --git a/mods/3d_armor/3d_armor/LICENSE.txt b/mods/3d_armor/3d_armor/LICENSE.txt new file mode 100644 index 00000000..f253f299 --- /dev/null +++ b/mods/3d_armor/3d_armor/LICENSE.txt @@ -0,0 +1,26 @@ +[mod] 3d Armor [3d_armor] +========================= + +License Source Code +------------------- + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +License Textures +---------------- + +Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0 diff --git a/mods/3d_armor/3d_armor/README.txt b/mods/3d_armor/3d_armor/README.txt index 224f81c9..7dbe82d0 100755 --- a/mods/3d_armor/3d_armor/README.txt +++ b/mods/3d_armor/3d_armor/README.txt @@ -3,7 +3,9 @@ Depends: default -Recommends: inventory_plus or unified_inventory (use only one) +Recommends: sfinv, unified_inventory or smart_inventory (use only one to avoid conflicts) + +Supports: player_monoids and armor_monoid 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. @@ -14,11 +16,176 @@ 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 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. +Override the following default settings by adding them to your minetest.conf file. -Note: worldpath config settings override any settings made in the mod's directory. +-- Set false to disable individual armor materials. +armor_material_wood = true +armor_material_cactus = true +armor_material_steel = true +armor_material_bronze = true +armor_material_diamond = true +armor_material_gold = true +armor_material_mithril = true +armor_material_crystal = true + +-- Increase this if you get initialization glitches when a player first joins. +armor_init_delay = 2 + +-- Number of initialization attempts. +-- Use in conjunction with armor_init_delay if initialization problems persist. +armor_init_times = 10 + +-- Increase this if armor is not getting into bones due to server lag. +armor_bones_delay = 1 + +-- How often player armor 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: 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 + +-- Enable water protection (periodically restores breath when activated) +armor_water_protect = true + +-- Enable fire protection (defaults true if using ethereal mod) +armor_fire_protect = false + +-- Enable punch damage effects. +armor_punch_damage = true + +-- Enable migration of old armor inventories +armor_migrate_old_inventory = true + +API +--- + +Armor Registration: + +armor:register_armor(name, def) + +Wrapper function for `minetest.register_tool`, while registering armor as +a tool item is still supported, this may be deprecated in future so new code +should use this method. + +Additional fields supported by 3d_armor: + + texture = + preview = + armor_groups = + damage_groups =
+ reciprocate_damage = + on_equip = + on_unequip = + on_destroy = + on_damage = + on_punched = + +armor:register_armor_group(group, base) + +Example: + +armor:register_armor_group("radiation", 100) + +armor:register_armor("mod_name:speed_boots", { + description = "Speed Boots", + inventory_image = "mod_name_speed_boots_inv.png", + texture = "mod_name_speed_boots.png", + preview = "mod_name_speed_boots_preview.png", + groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1}, + armor_groups = {fleshy=10, radiation=10}, + damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1}, + reciprocate_damage = true, + on_destroy = function(player, index, stack) + local pos = player:get_pos() + if pos then + minetest.sound_play({ + name = "mod_name_break_sound", + pos = pos, + gain = 0.5, + }) + end + end, +}) + +See armor.lua, technic_armor and shields mods for more examples. + +Default groups: + +Elements: armor_head, armor_torso, armor_legs, armor_feet +Attributes: armor_heal, armor_fire, armor_water +Physics: physics_jump, physics_speed, physics_gravity +Durability: armor_use, flammable + +Notes: + +Elements may be modified by dependent mods, eg shields adds armor_shield. +Attributes and physics values are 'stackable', durability is determined +by the level of armor_use, total uses == approx (65535/armor_use), non-fleshy +damage groups need to be defined in the tool/weapon used against the player. + +Reciprocal tool damage will be done only by the first armor inventory item + with `reciprocate_damage = true` + +Armor Functions: + +armor:set_player_armor(player) + +Primarily an internal function but can be called externally to apply any +changes that might not otherwise get handled. + +armor:punch(player, hitter, time_from_last_punch, tool_capabilities) + +Used to apply damage to all equipped armor based on the damage groups of +each individual item.`hitter`, `time_from_last_punch` and `tool_capabilities` +are optional but should be valid if included. + +armor:damage(player, index, stack, use) + +Adds wear to a single armor itemstack, triggers `on_damage` callbacks and +updates the necessary inventories. Also handles item destruction callbacks +and so should NOT be called from `on_unequip` to avoid an infinite loop. + +Item Callbacks: + +on_equip = func(player, index, stack) +on_unequip = func(player, index, stack) +on_destroy = func(player, index, stack) +on_damage = func(player, index, stack) +on_punched = func(player, hitter, time_from_last_punch, tool_capabilities) + +Notes: + +`on_punched` is called every time a player is punched or takes damage, `hitter`, +`time_from_last_punch` and `tool_capabilities` can be `nil` and will be in the +case of fall damage, etc. When fire protection is enabled, hitter == "fire" +in the event of fire damage. Return `false` to override armor damage effects. +When armor is destroyed `stack` will contain a copy of the previous stack. + +Global Callbacks: + +armor:register_on_update(func(player)) +armor:register_on_equip(func(player, index, stack)) +armor:register_on_unequip(func(player, index, stack)) +armor:register_on_destroy(func(player, index, stack)) + +Global Callback Example: + +armor:register_on_update(function(player) + print(player:get_player_name().." armor updated!") +end) diff --git a/mods/3d_armor/3d_armor/admin.lua b/mods/3d_armor/3d_armor/admin.lua deleted file mode 100755 index eaa71ad8..00000000 --- a/mods/3d_armor/3d_armor/admin.lua +++ /dev/null @@ -1,45 +0,0 @@ -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,}, - 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}, - 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}, - 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}, - wear = 0, - on_drop = function(itemstack, dropper, pos) - return - end, -}) - diff --git a/mods/3d_armor/3d_armor/api.lua b/mods/3d_armor/3d_armor/api.lua new file mode 100644 index 00000000..38eadff0 --- /dev/null +++ b/mods/3d_armor/3d_armor/api.lua @@ -0,0 +1,552 @@ +-- support for i18n +local S = armor_i18n.gettext + +local skin_previews = {} +local use_player_monoids = minetest.global_exists("player_monoids") +local use_armor_monoid = minetest.global_exists("armor_monoid") +local use_pova_mod = minetest.get_modpath("pova") +local armor_def = setmetatable({}, { + __index = function() + return setmetatable({ + groups = setmetatable({}, { + __index = function() + return 0 + end}) + }, { + __index = function() + return 0 + end + }) + end, +}) +local armor_textures = setmetatable({}, { + __index = function() + return setmetatable({}, { + __index = function() + return "blank.png" + end + }) + end +}) + +armor = { + timer = 0, + elements = {"head", "torso", "legs", "feet"}, + physics = {"jump", "speed", "gravity"}, + attributes = {"heal", "fire", "water"}, + formspec = "image[2.5,0;2,4;armor_preview]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + default.get_hotbar_bg(0, 4.7).. + "list[current_player;main;0,4.7;8,1;]".. + "list[current_player;main;0,5.85;8,3;8]", + def = armor_def, + textures = armor_textures, + default_skin = "character", + 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", + -- Hunter armors (A déc-ommenter quand activation de l'armure au total) + hardenedleather = "3d_armor:hardenedleather", + reinforcedleather = "3d_armor:reinforcedleather", + + -- Warrior armors + blackmithril = "3d_armor:blackmithril_ingot" + + -- Wizard armors + --armor = "xxx", + --armor = "xxx", + }, + 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}, + {"default:torch_ceiling", 1, 1}, + {"default:torch_wall", 1, 1}, + }, + registered_groups = {["fleshy"]=100}, + registered_callbacks = { + on_update = {}, + on_equip = {}, + on_unequip = {}, + on_damage = {}, + on_destroy = {}, + }, + migrate_old_inventory = true, + version = "0.4.13", +} + +armor.config = { + init_delay = 2, + init_times = 10, + bones_delay = 1, + update_time = 1, + drop = minetest.get_modpath("bones") ~= nil, + destroy = false, + level_multiplier = 1, + heal_multiplier = 1, + material_wood = true, + material_cactus = true, + material_steel = true, + material_bronze = true, + material_diamond = true, + material_gold = true, + material_mithril = true, + material_crystal = true, + water_protect = true, + fire_protect = minetest.get_modpath("ethereal") ~= nil, + punch_damage = true, +} + +-- Armor Registration + +armor.register_armor = function(self, name, def) + minetest.register_tool(name, def) +end + +armor.register_armor_group = function(self, group, base) + base = base or 100 + self.registered_groups[group] = base + if use_armor_monoid then + armor_monoid.register_armor_group(group, base) + end +end + +-- Armor callbacks + +armor.register_on_update = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_update, func) + end +end + +armor.register_on_equip = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_equip, func) + end +end + +armor.register_on_unequip = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_unequip, func) + end +end + +armor.register_on_damage = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_damage, func) + end +end + +armor.register_on_destroy = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_destroy, func) + end +end + +armor.run_callbacks = function(self, callback, player, index, stack) + if stack then + local def = stack:get_definition() or {} + if type(def[callback]) == "function" then + def[callback](player, index, stack) + end + end + local callbacks = self.registered_callbacks[callback] + if callbacks then + for _, func in pairs(callbacks) do + func(player, index, stack) + end + end +end + +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 + self:run_callbacks("on_update", player) +end + +armor.set_player_armor = function(self, player) + local name, armor_inv = self:get_valid_player(player, "[set_player_armor]") + if not name then + return + end + local item = stack:get_name() + local state = 0 + local count = 0 + local material = {count=1} + local preview = armor:get_preview(name) + local texture = "3d_armor_trans.png" + local textures = {} + local physics = {} + local attributes = {} + local levels = {} + local groups = {} + local change = {} + for _, phys in pairs(self.physics) do + physics[phys] = 1 + end + for _, attr in pairs(self.attributes) do + attributes[attr] = 0 + end + for group, _ in pairs(self.registered_groups) do + change[group] = 1 + levels[group] = 0 + end + local list = armor_inv:get_list("armor") + if type(list) ~= "table" then + return + end + for i, stack in pairs(list) do + if stack:get_count() == 1 then + local def = stack:get_definition() + for _, element in pairs(self.elements) do + if def.groups["armor_"..element] then + if def.armor_groups then + for group, level in pairs(def.armor_groups) do + if levels[group] then + local texture = item:gsub("%:", "_") + if texture:find("enchanted") then -- MFF xdecor enchanting preview fix (testing needed!). + texture = texture:gsub("_enchanted", "") + texture = texture:gsub("_strong", "") + texture = texture:gsub("_speed", "") + end + table.insert(textures, texture..".png") + if preview == "" then + preview = texture .. "_preview.png" + elseif stack:get_name():find("shield") then -- MFF(Mg | 09/05/15). + preview = preview.. "^" .. texture.."_preview.png" + else + preview = texture .. "_preview.png^" .. preview + end + levels[group] = levels[group] + level + end + end + else + local level = def.groups["armor_"..element] + levels["fleshy"] = levels["fleshy"] + level + end + break + end + -- DEPRECATED, use armor_groups instead + if def.groups["armor_radiation"] and levels["radiation"] then + levels["radiation"] = def.groups["armor_radiation"] + end + end + local tex = def.texture or item:gsub("%:", "_") + tex = tex:gsub(".png$", "") + local prev = def.preview or tex.."_preview" + prev = prev:gsub(".png$", "") + texture = texture.."^"..tex..".png" + preview = preview.."^"..prev..".png" + state = state + stack:get_wear() + count = count + 1 + for _, phys in pairs(self.physics) do + local value = def.groups["physics_"..phys] or 0 + physics[phys] = physics[phys] + value + end + for _, attr in pairs(self.attributes) do + local value = def.groups["armor_"..attr] or 0 + attributes[attr] = attributes[attr] + value + end + local mat = string.match(item, "%:.+_(.+)$") + if material.name then + if material.name == mat then + material.count = material.count + 1 + end + else + material.name = mat + end + end + end + for group, level in pairs(levels) do + if level > 0 then + level = level * armor.config.level_multiplier + if material.name and material.count == #self.elements then + level = level * 1.1 + end + end + local base = self.registered_groups[group] + self.def[name].groups[group] = level + if level > base then + level = base + end + groups[group] = base - level + change[group] = groups[group] / base + end + for _, attr in pairs(self.attributes) do + local mult = attr == "heal" and self.config.heal_multiplier or 1 + self.def[name][attr] = attributes[attr] * mult + end + for _, phys in pairs(self.physics) do + self.def[name][phys] = physics[phys] + end + if use_armor_monoid then + armor_monoid.monoid:add_change(player, change, "3d_armor:armor") + else + player:set_armor_groups(groups) + end + if use_player_monoids then + player_monoids.speed:add_change(player, physics.speed, + "3d_armor:physics") + player_monoids.jump:add_change(player, physics.jump, + "3d_armor:physics") + player_monoids.gravity:add_change(player, physics.gravity, + "3d_armor:physics") + elseif use_pova_mod then + -- only add the changes, not the default 1.0 for each physics setting + pova.add_override(name, "3d_armor", { + speed = physics.speed - 1, + jump = physics.jump - 1, + gravity = physics.gravity - 1, + }) + pova.do_override(player) + else + player:set_physics_override(physics) + end + pclasses.api.util.on_update(name) + self.textures[name].armor = texture + self.textures[name].preview = preview + self.def[name].level = self.def[name].groups.fleshy or 0 + self.def[name].state = state + self.def[name].count = count + self:update_player_visuals(player) +end + +armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabilities) + local name, armor_inv = self:get_valid_player(player, "[punch]") + if not name then + return + end + local state = 0 + local count = 0 + local recip = true + local default_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1} + local list = armor_inv:get_list("armor") + for i, stack in pairs(list) do + if stack:get_count() == 1 then + local name = stack:get_name() + local use = minetest.get_item_group(name, "armor_use") or 0 + local damage = use > 0 + local def = stack:get_definition() or {} + if type(def.on_punched) == "function" then + damage = def.on_punched(player, hitter, time_from_last_punch, + tool_capabilities) ~= false and damage == true + end + if damage == true and tool_capabilities then + local damage_groups = def.damage_groups or default_groups + local level = damage_groups.level or 0 + local groupcaps = tool_capabilities.groupcaps or {} + local uses = 0 + damage = false + for group, caps in pairs(groupcaps) do + local maxlevel = caps.maxlevel or 0 + local diff = maxlevel - level + if diff == 0 then + diff = 1 + end + if diff > 0 and caps.times then + local group_level = damage_groups[group] + if group_level then + local time = caps.times[group_level] + if time then + local dt = time_from_last_punch or 0 + if dt > time / diff then + if caps.uses then + uses = caps.uses * math.pow(3, diff) + end + damage = true + break + end + end + end + end + end + if damage == true and recip == true and hitter and + def.reciprocate_damage == true and uses > 0 then + local item = hitter:get_wielded_item() + if item and item:get_name() ~= "" then + item:add_wear(65535 / uses) + hitter:set_wielded_item(item) + end + -- reciprocate tool damage only once + recip = false + end + end + if damage == true and hitter == "fire" then + damage = minetest.get_item_group(name, "flammable") > 0 + end + if damage == true then + self:damage(player, i, stack, use) + end + state = state + stack:get_wear() + count = count + 1 + end + end + self.def[name].state = state + self.def[name].count = count +end + +armor.damage = function(self, player, index, stack, use) + local old_stack = ItemStack(stack) + stack:add_wear(use) + self:run_callbacks("on_damage", player, index, stack) + self:set_inventory_stack(player, index, stack) + if stack:get_count() == 0 then + self:run_callbacks("on_unequip", player, index, old_stack) + self:run_callbacks("on_destroy", player, index, old_stack) + self:set_player_armor(player) + end +end + +armor.get_player_skin = function(self, name) + if (self.skin_mod == "skins" or self.skin_mod == "simple_skins") and skins.skins[name] then + return skins.skins[name]..".png" + elseif self.skin_mod == "u_skins" and u_skins.u_skins[name] then + return u_skins.u_skins[name]..".png" + elseif self.skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then + return wardrobe.playerSkins[name] + end + return armor.default_skin..".png" +end + +armor.add_preview = function(self, preview) + skin_previews[preview] = true +end + +armor.get_preview = function(self, name) + local preview = string.gsub(armor:get_player_skin(name), ".png", "_preview.png") + if skin_previews[preview] then + return preview + end + return "character_preview.png" +end + +armor.get_armor_formspec = function(self, name, listring) + if armor.def[name].init_time == 0 then + return "label[0,0;Armor not initialized!]" + end + local formspec = armor.formspec.. + "list[detached:"..name.."_armor;armor;0,0.5;2,3;]" + if listring == true then + formspec = formspec.."listring[current_player;main]".. + "listring[detached:"..name.."_armor;armor]" + end + formspec = formspec:gsub("armor_preview", armor.textures[name].preview) + formspec = formspec:gsub("armor_level", armor.def[name].level) + for _, attr in pairs(self.attributes) do + formspec = formspec:gsub("armor_attr_"..attr, armor.def[name][attr]) + end + for group, _ in pairs(self.registered_groups) do + formspec = formspec:gsub("armor_group_"..group, + armor.def[name].groups[group]) + end + return formspec +end + +armor.get_element = function(self, item_name) + for _, element in pairs(armor.elements) do + if minetest.get_item_group(item_name, "armor_"..element) > 0 then + return element + end + end +end + +armor.serialize_inventory_list = function(self, list) + local list_table = {} + for _, stack in ipairs(list) do + table.insert(list_table, stack:to_string()) + end + return minetest.serialize(list_table) +end + +armor.deserialize_inventory_list = function(self, list_string) + local list_table = minetest.deserialize(list_string) + local list = {} + for _, stack in ipairs(list_table or {}) do + table.insert(list, ItemStack(stack)) + end + return list +end + +armor.load_armor_inventory = function(self, player) + local _, inv = self:get_valid_player(player, "[load_armor_inventory]") + if inv then + local meta = player:get_meta() + local armor_list_string = meta:get_string("3d_armor_inventory") + if armor_list_string then + inv:set_list("armor", + self:deserialize_inventory_list(armor_list_string)) + return true + end + end +end + +armor.save_armor_inventory = function(self, player) + local _, inv = self:get_valid_player(player, "[save_armor_inventory]") + if inv then + local meta = player:get_meta() + meta:set_string("3d_armor_inventory", + self:serialize_inventory_list(inv:get_list("armor"))) + end +end + +armor.update_inventory = function(self, player) + -- DEPRECATED: Legacy inventory support +end + +armor.set_inventory_stack = function(self, player, i, stack) + local _, inv = self:get_valid_player(player, "[set_inventory_stack]") + if inv then + inv:set_stack("armor", i, stack) + self:save_armor_inventory(player) + end +end + +armor.get_valid_player = function(self, player, msg) + msg = msg or "" + if not player then + minetest.log("warning", S("3d_armor: Player reference is nil @1", msg)) + return + end + local name = player:get_player_name() + if not name then + minetest.log("warning", S("3d_armor: Player name is nil @1", msg)) + return + end + local inv = minetest.get_inventory({type="detached", name=name.."_armor"}) + if not inv then + minetest.log("warning", S("3d_armor: Detached armor inventory is nil @1", msg)) + return + end + return name, inv +end + +armor.drop_armor = function(pos, stack) + local node = minetest.get_node_or_nil(pos) + if node then + local obj = minetest.add_item(pos, stack) + if obj then + obj:set_velocity({x=math.random(-1, 1), y=5, z=math.random(-1, 1)}) + end + end +end diff --git a/mods/3d_armor/3d_armor/armor.conf b/mods/3d_armor/3d_armor/armor.conf deleted file mode 100755 index 4e4b86fd..00000000 --- a/mods/3d_armor/3d_armor/armor.conf +++ /dev/null @@ -1,37 +0,0 @@ --- Armor Configuration (defaults) - --- Increase this if you get initialization glitches when a player first joins. -ARMOR_INIT_DELAY = 3 - --- Number of initialization attempts. --- Use in conjunction with ARMOR_INIT_DELAY if initialization problems persist. -ARMOR_INIT_TIMES = 3 - --- Increase this if armor is not getting into bones due to server lag. -ARMOR_BONES_DELAY = 3 - --- 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 = 0 - --- You can also use this file to execute arbitary lua code --- eg: Dumb the armor down if using Simple Mobs ---if minetest.get_modpath("mobs") then --- ARMOR_LEVEL_MULTIPLIER = 1 --- ARMOR_HEAL_MULTIPLIER = 0 ---end - diff --git a/mods/3d_armor/3d_armor/armor.conf.example b/mods/3d_armor/3d_armor/armor.conf.example index 2e1149a1..9ce34b45 100755 --- a/mods/3d_armor/3d_armor/armor.conf.example +++ b/mods/3d_armor/3d_armor/armor.conf.example @@ -1,3 +1,7 @@ +-- DEPRECATED, will not be supported in future versions + +-- See README.txt for new configuration options. + -- Armor Configuration (defaults) -- You can remove any unwanted armor materials from this table. @@ -9,7 +13,7 @@ ARMOR_MATERIALS = { bronze = "default:bronze_ingot", diamond = "default:diamond", gold = "default:gold_ingot", - mithril = "default:mithril_ingot", + mithril = "moreores:mithril_ingot", crystal = "ethereal:crystal_ingot", } @@ -55,3 +59,7 @@ ARMOR_LEVEL_MULTIPLIER = 1 -- 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/mods/3d_armor/3d_armor/armor.lua b/mods/3d_armor/3d_armor/armor.lua index 6f561db2..dd124bb6 100755 --- a/mods/3d_armor/3d_armor/armor.lua +++ b/mods/3d_armor/3d_armor/armor.lua @@ -1,721 +1,346 @@ -local armors_no_shields = { ["3d_armor:helmet_hardenedleather"] = true,["3d_armor:chestplate_hardenedleather"] = true, - ["3d_armor:leggings_hardenedleather"] = true,["3d_armor:boots_hardenedleather"] = true, - ["3d_armor:helmet_reinforcedleather"] = true,["3d_armor:chestplate_reinforcedleather"] = true, - ["3d_armor:leggings_reinforcedleather"] = true,["3d_armor:boots_reinforcedleather"] = true, -} -- modif MFF (crabman/24/06/2015) +-- support for i18n +local S = armor_i18n.gettext - -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 = "default:mithril_ingot", - crystal = "ethereal:crystal_ingot", - -- Hunter armors (A déc-ommenter quand activation de l'armure au total) - hardenedleather = "3d_armor:hardenedleather", - reinforcedleather = "3d_armor:reinforcedleather", - -- Warrior armors - blackmithril = "3d_armor:blackmithril_ingot" - -- Wizard armors - --armor = "xxx", - --armor = "xxx", -} -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("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", - tooltip = "Armor inventory", - show_with = false, --Modif MFF (Crabman 30/06/2015) - }) - 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.4)..";Heal: "..armor.def[name].heal.."]" - .."label[5.0,"..(fy + 0.8)..";Fire: "..armor.def[name].fire.."]" - .."label[5.0,"..(fy + 1.2)..";Radiation: "..armor.def[name].radiation.."]" - .."label[5.0,"..(fy + 1.6)..";Speed: "..armor.def[name].speed.."]" - .."label[5.0,"..(fy + 2)..";Jump: "..armor.def[name].jump.."]" - .."label[5.0,"..(fy + 2.4)..";Gravity: "..armor.def[name].gravity.."]" - .."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 +armor:register_armor("3d_armor:helmet_admin", { + description = S("Admin Helmet"), + inventory_image = "3d_armor_inv_helmet_admin.png", + armor_groups = {fleshy=100}, + groups = {armor_head=1, armor_heal=100, armor_use=0, armor_water=1, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) 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 = "" - 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 = item:gsub("%:", "_") - if texture:find("enchanted") then --MFF xdecor enchanting preview fix - texture = texture:gsub("_enchanted", "") - texture = texture:gsub("_strong", "") - texture = texture:gsub("_speed", "") - end - table.insert(textures, texture..".png") - if preview == "" then - preview = texture .. "_preview.png" - elseif stack:get_name():find("shield") then -- //MFF(Mg|09/05/15) - preview = preview.. "^" .. texture.."_preview.png" - else - preview = texture .. "_preview.png^" .. preview - end - 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 preview ~= "" then - preview = "^" .. preview - end - preview = armor:get_preview(name) .. preview -- //MFF(Mg|09/05/15) - 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) - player_physics.set_stats(player, "3d_armor", {speed=physics_o.speed-1, jump=physics_o.jump-1, gravity=physics_o.gravity-1}) - pclasses.api.util.on_update(name) - 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" - elseif skin_mod == "u_skins"then - return string.gsub(armor.textures[name].skin, ".png", "_preview.png") - end - return "character_preview.png" -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) - formspec = formspec:gsub("armor_speed", armor.def[name].speed) - formspec = formspec:gsub("armor_jump", armor.def[name].jump) - formspec = formspec:gsub("armor_gravity", armor.def[name].gravity) - 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 - else - 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 old_stack = inv:get_stack(from_list, from_index) - 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, old_stack) - armor:set_player_armor(player) - armor:update_inventory(player) - end, - allow_put = function(inv, listname, index, stack, player) - --DEBUT modif MFF (crabman/24/06/2015) - local name = stack:get_name() - local player_inv = player:get_inventory() - local size = player_inv:get_size(listname) - if not ( (name:split(":")[1] == "3d_armor" and stack:get_definition().groups["armor_heal"]) or name:split(":")[1] == "shields") then - return 0 - end - - -- if player class != item class - if not pclasses.api.util.can_have_item(player:get_player_name(), name) then - return 0 - end - - --MFF (crabman/27/11/2015) no same item type. *helmet* - local ptype = name:split(":")[2]:split("_")[1] - if ptype == "enchanted" then - ptype = name:split(":")[2]:split("_")[2] - end - for i=1, size do - local stack = player_inv:get_stack(listname, i) - if stack:get_count() > 0 then - if stack:get_name():find(ptype) then - return 0 - end - end - end - - if name:find("shield") then - for i=1, size do - local stack = player_inv:get_stack(listname, i) - if stack:get_count() > 0 then - if armors_no_shields[stack:get_name()] ~= nil then - return 0 - end - end - end - else - if armors_no_shields[name] ~= nil then - for i=1, size do - local stack = player_inv:get_stack(listname, i) - if stack:get_count() > 0 then - if stack:get_name():find("shields:") then - return 0 - end - end - end - end - end - --FIN modif MFF (crabman/24/06/2015) - 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) - -- Modification for MFF - if stack:get_count() > 0 and (not pclasses.data.reserved_items[armor_inv:get_stack("armor", i):get_name()] or - not pclasses.api.util.can_have_item(name, armor_inv:get_stack("armor", i):get_name())) 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)) - -- Modification for MFF - if node and node.name == "bones:bones" then - 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 - minetest.log("info", "[3d_armor] Fire Nodes disabled") -end - -function armor_step() - 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 - minetest.after(ARMOR_UPDATE_TIME, armor_step) -end - --- Launch once started -minetest.after(0, armor_step) - - --- kill player when command issued -minetest.register_chatcommand("kill", { - params = "", - 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, }) + +armor:register_armor("3d_armor:chestplate_admin", { + description = S("Admin Chestplate"), + inventory_image = "3d_armor_inv_chestplate_admin.png", + armor_groups = {fleshy=100}, + groups = {armor_torso=1, armor_heal=100, armor_use=0, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + +armor:register_armor("3d_armor:leggings_admin", { + description = S("Admin Leggings"), + inventory_image = "3d_armor_inv_leggings_admin.png", + armor_groups = {fleshy=100}, + groups = {armor_legs=1, armor_heal=100, armor_use=0, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + +armor:register_armor("3d_armor:boots_admin", { + description = S("Admin Boots"), + inventory_image = "3d_armor_inv_boots_admin.png", + armor_groups = {fleshy=100}, + groups = {armor_feet=1, armor_heal=100, armor_use=0, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + +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") + +if armor.materials.wood then + armor:register_armor("3d_armor:helmet_wood", { + description = S("Wood Helmet"), + inventory_image = "3d_armor_inv_helmet_wood.png", + groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1}, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:chestplate_wood", { + description = S("Wood Chestplate"), + inventory_image = "3d_armor_inv_chestplate_wood.png", + groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:leggings_wood", { + description = S("Wood Leggings"), + inventory_image = "3d_armor_inv_leggings_wood.png", + groups = {armor_legs=1, armor_heal=0, armor_use=2000, flammable=1}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:boots_wood", { + description = S("Wood Boots"), + inventory_image = "3d_armor_inv_boots_wood.png", + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + groups = {armor_feet=1, armor_heal=0, armor_use=2000, flammable=1}, + }) +end + +if armor.materials.cactus then + armor:register_armor("3d_armor:helmet_cactus", { + description = S("Cactus Helmet"), + inventory_image = "3d_armor_inv_helmet_cactus.png", + groups = {armor_head=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:chestplate_cactus", { + description = S("Cactus Chestplate"), + inventory_image = "3d_armor_inv_chestplate_cactus.png", + groups = {armor_torso=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:leggings_cactus", { + description = S("Cactus Leggings"), + inventory_image = "3d_armor_inv_leggings_cactus.png", + groups = {armor_legs=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:boots_cactus", { + description = S("Cactus Boots"), + inventory_image = "3d_armor_inv_boots_cactus.png", + groups = {armor_feet=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) +end + +if armor.materials.steel then + armor:register_armor("3d_armor:helmet_steel", { + description = S("Steel Helmet"), + inventory_image = "3d_armor_inv_helmet_steel.png", + groups = {armor_head=1, armor_heal=0, armor_use=800, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:chestplate_steel", { + description = S("Steel Chestplate"), + inventory_image = "3d_armor_inv_chestplate_steel.png", + groups = {armor_torso=1, armor_heal=0, armor_use=800, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:leggings_steel", { + description = S("Steel Leggings"), + inventory_image = "3d_armor_inv_leggings_steel.png", + groups = {armor_legs=1, armor_heal=0, armor_use=800, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:boots_steel", { + description = S("Steel Boots"), + inventory_image = "3d_armor_inv_boots_steel.png", + groups = {armor_feet=1, armor_heal=0, armor_use=800, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) +end + +if armor.materials.bronze then + armor:register_armor("3d_armor:helmet_bronze", { + description = S("Bronze Helmet"), + inventory_image = "3d_armor_inv_helmet_bronze.png", + groups = {armor_head=1, armor_heal=6, armor_use=400, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:chestplate_bronze", { + description = S("Bronze Chestplate"), + inventory_image = "3d_armor_inv_chestplate_bronze.png", + groups = {armor_torso=1, armor_heal=6, armor_use=400, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:leggings_bronze", { + description = S("Bronze Leggings"), + inventory_image = "3d_armor_inv_leggings_bronze.png", + groups = {armor_legs=1, armor_heal=6, armor_use=400, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:boots_bronze", { + description = S("Bronze Boots"), + inventory_image = "3d_armor_inv_boots_bronze.png", + groups = {armor_feet=1, armor_heal=6, armor_use=400, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) +end + +if armor.materials.diamond then + armor:register_armor("3d_armor:helmet_diamond", { + description = S("Diamond Helmet"), + inventory_image = "3d_armor_inv_helmet_diamond.png", + groups = {armor_head=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) + armor:register_armor("3d_armor:chestplate_diamond", { + description = S("Diamond Chestplate"), + inventory_image = "3d_armor_inv_chestplate_diamond.png", + groups = {armor_torso=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) + armor:register_armor("3d_armor:leggings_diamond", { + description = S("Diamond Leggings"), + inventory_image = "3d_armor_inv_leggings_diamond.png", + groups = {armor_legs=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) + armor:register_armor("3d_armor:boots_diamond", { + description = S("Diamond Boots"), + inventory_image = "3d_armor_inv_boots_diamond.png", + groups = {armor_feet=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) +end + +if armor.materials.gold then + armor:register_armor("3d_armor:helmet_gold", { + description = S("Gold Helmet"), + inventory_image = "3d_armor_inv_helmet_gold.png", + groups = {armor_head=1, armor_heal=6, armor_use=300, + physics_speed=-0.02, physics_gravity=0.02}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) + armor:register_armor("3d_armor:chestplate_gold", { + description = S("Gold Chestplate"), + inventory_image = "3d_armor_inv_chestplate_gold.png", + groups = {armor_torso=1, armor_heal=6, armor_use=300, + physics_speed=-0.05, physics_gravity=0.05}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) + armor:register_armor("3d_armor:leggings_gold", { + description = S("Gold Leggings"), + inventory_image = "3d_armor_inv_leggings_gold.png", + groups = {armor_legs=1, armor_heal=6, armor_use=300, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) + armor:register_armor("3d_armor:boots_gold", { + description = S("Gold Boots"), + inventory_image = "3d_armor_inv_boots_gold.png", + groups = {armor_feet=1, armor_heal=6, armor_use=300, + physics_speed=-0.02, physics_gravity=0.02}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) +end + +if armor.materials.mithril then + armor:register_armor("3d_armor:helmet_mithril", { + description = S("Mithril Helmet (Warrior)"), + inventory_image = "3d_armor_inv_helmet_mithril.png", + groups = {armor_head=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:chestplate_mithril", { + description = S("Mithril Chestplate (Warrior)"), + inventory_image = "3d_armor_inv_chestplate_mithril.png", + groups = {armor_torso=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:leggings_mithril", { + description = S("Mithril Leggings (Warrior)"), + inventory_image = "3d_armor_inv_leggings_mithril.png", + groups = {armor_legs=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:boots_mithril", { + description = S("Mithril Boots (Warrior)"), + inventory_image = "3d_armor_inv_boots_mithril.png", + groups = {armor_feet=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) +end + +if armor.materials.crystal then + armor:register_armor("3d_armor:helmet_crystal", { + description = S("Crystal Helmet"), + inventory_image = "3d_armor_inv_helmet_crystal.png", + groups = {armor_head=1, armor_heal=12, armor_use=100, armor_fire=1}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:chestplate_crystal", { + description = S("Crystal Chestplate"), + inventory_image = "3d_armor_inv_chestplate_crystal.png", + groups = {armor_torso=1, armor_heal=12, armor_use=100, armor_fire=1}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:leggings_crystal", { + description = S("Crystal Leggings"), + inventory_image = "3d_armor_inv_leggings_crystal.png", + groups = {armor_legs=1, armor_heal=12, armor_use=100, armor_fire=1}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:boots_crystal", { + description = S("Crystal Boots"), + inventory_image = "3d_armor_inv_boots_crystal.png", + groups = {armor_feet=1, armor_heal=12, armor_use=100, physics_speed=1, + physics_jump=0.5, armor_fire=1}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) +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/mods/3d_armor/3d_armor/crafting_guide.txt b/mods/3d_armor/3d_armor/crafting_guide.txt index 2086f8cd..f5e94eba 100755 --- a/mods/3d_armor/3d_armor/crafting_guide.txt +++ b/mods/3d_armor/3d_armor/crafting_guide.txt @@ -17,8 +17,8 @@ Helmets: [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 = [default:mithril_ingot] -[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:helmet_mithril] X = [default:mithril_ingot] * +[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] ** Chestplates: @@ -36,8 +36,8 @@ Chestplates: [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 = [default:mithril_ingot] -[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:chestplate_mithril] X = [default:mithril_ingot] * +[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] ** Leggings: @@ -55,8 +55,8 @@ Leggings: [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 = [default:mithril_ingot] -[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:leggings_mithril] X = [default:mithril_ingot] * +[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] ** Boots: @@ -72,7 +72,8 @@ Boots: [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 = [default:mithril_ingot] -[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:boots_mithril] X = [default:mithril_ingot] * +[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] ** - * Requires ethereal mod by Chinchow & TenPlus1 - https://github.com/tenplus1/ethereal + * 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/mods/3d_armor/3d_armor/depends.txt b/mods/3d_armor/3d_armor/depends.txt deleted file mode 100755 index 0dd76f9f..00000000 --- a/mods/3d_armor/3d_armor/depends.txt +++ /dev/null @@ -1,7 +0,0 @@ -default -player_physics -inventory_plus? -unified_inventory? -fire? -ethereal? -bakedclay? diff --git a/mods/3d_armor/3d_armor/description.txt b/mods/3d_armor/3d_armor/description.txt deleted file mode 100644 index b0a9b0a5..00000000 --- a/mods/3d_armor/3d_armor/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds craftable armor that is visible to other players. diff --git a/mods/3d_armor/3d_armor/init.lua b/mods/3d_armor/3d_armor/init.lua index f8aa8626..0f541bcb 100755 --- a/mods/3d_armor/3d_armor/init.lua +++ b/mods/3d_armor/3d_armor/init.lua @@ -1,254 +1,513 @@ -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") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local worldpath = minetest.get_worldpath() +local last_punch_time = {} +local pending_players = {} +local timer = 0 -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=1, 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=3, 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=3, 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=1, armor_heal=0, armor_use=2000}, - wear = 0, - }) +-- support for i18n +armor_i18n = { } +armor_i18n.gettext, armor_i18n.ngettext = dofile(modpath.."/intllib.lua") + +-- local functions +local S = armor_i18n.gettext +local F = minetest.formspec_escape + +dofile(modpath.."/api.lua") +local armors_no_shields = { ["3d_armor:helmet_hardenedleather"] = true,["3d_armor:chestplate_hardenedleather"] = true, + ["3d_armor:leggings_hardenedleather"] = true,["3d_armor:boots_hardenedleather"] = true, + ["3d_armor:helmet_reinforcedleather"] = true,["3d_armor:chestplate_reinforcedleather"] = true, + ["3d_armor:leggings_reinforcedleather"] = true,["3d_armor:boots_reinforcedleather"] = true, +} -- modif MFF (crabman/24/06/2015) + + +-- Legacy Config Support + +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 +for name, _ in pairs(armor.config) do + local global = "ARMOR_"..name:upper() + if minetest.global_exists(global) then + armor.config[name] = _G[global] + end +end +if minetest.global_exists("ARMOR_MATERIALS") then + armor.materials = table.copy(ARMOR_MATERIALS) +end +if minetest.global_exists("ARMOR_FIRE_NODES") then + armor.fire_nodes = table.copy(ARMOR_FIRE_NODES) end -if ARMOR_MATERIALS.cactus then - minetest.register_tool("3d_armor:helmet_cactus", { - description = "Cactus Helmet", - inventory_image = "3d_armor_inv_helmet_cactus.png", - groups = {armor_head=3, 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=5, 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=3, armor_heal=0, armor_use=1000}, - wear = 0, - }) +-- Load Configuration + +for name, config in pairs(armor.config) do + local setting = minetest.settings:get("armor_"..name) + if type(config) == "number" then + setting = tonumber(setting) + elseif type(config) == "boolean" then + setting = minetest.settings:get_bool("armor_"..name) + end + if setting ~= nil then + armor.config[name] = setting + end +end +for material, _ in pairs(armor.materials) do + local key = "material_"..material + if armor.config[key] == false then + armor.materials[material] = nil + end 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=4, 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=8, 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=8, 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=4, armor_heal=0, armor_use=500}, - wear = 0, - }) +-- Mod Compatibility + +if minetest.get_modpath("technic") then + armor.formspec = armor.formspec.. + "label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]" + armor:register_armor_group("radiation") +end +local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"} +for _, mod in pairs(skin_mods) do + local path = minetest.get_modpath(mod) + if path then + local dir_list = minetest.get_dir_list(path.."/textures") + for _, fn in pairs(dir_list) do + if fn:find("_preview.png$") then + armor:add_preview(fn) + end + end + armor.skin_mod = mod + end +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 -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=5, armor_heal=0, 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=9, armor_heal=0, 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=9, armor_heal=0, 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=5, armor_heal=0, armor_use=250}, - wear = 0, - }) +dofile(modpath.."/armor.lua") + +-- Armor Initialization + +armor.formspec = armor.formspec.. + "label[5,1;"..F(S("Level"))..": armor_level]".. + "label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]" +if armor.config.fire_protect then + armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]" +end +armor:register_on_destroy(function(player, index, stack) + local name = player:get_player_name() + local def = stack:get_definition() + if name and def and def.description then + minetest.chat_send_player(name, S("Your @1 got destroyed!", def.description)) + end +end) + +local function validate_armor_inventory(player) + -- Workaround for detached inventory swap exploit + local _, inv = armor:get_valid_player(player, "[validate_armor_inventory]") + if not inv then + return + end + local armor_prev = {} + local attribute_meta = player:get_meta() -- I know, the function's name is weird but let it be like that. ;) + local armor_list_string = attribute_meta:get_string("3d_armor_inventory") + if armor_list_string then + local armor_list = armor:deserialize_inventory_list(armor_list_string) + for i, stack in ipairs(armor_list) do + if stack:get_count() > 0 then + armor_prev[stack:get_name()] = i + end + end + end + local elements = {} + local player_inv = player:get_inventory() + for i = 1, 6 do + local stack = inv:get_stack("armor", i) + if stack:get_count() > 0 then + local item = stack:get_name() + local element = armor:get_element(item) + if element and not elements[element] then + if armor_prev[item] then + armor_prev[item] = nil + else + -- Item was not in previous inventory + armor:run_callbacks("on_equip", player, i, stack) + end + elements[element] = true; + else + inv:remove_item("armor", stack) + -- The following code returns invalid items to the player's main + -- inventory but could open up the possibity for a hacked client + -- to receive items back they never really had. I am not certain + -- so remove the is_singleplayer check at your own risk :] + if minetest.is_singleplayer() and player_inv and + player_inv:room_for_item("main", stack) then + player_inv:add_item("main", stack) + end + end + end + end + for item, i in pairs(armor_prev) do + local stack = ItemStack(item) + -- Previous item is not in current inventory + armor:run_callbacks("on_unequip", player, i, stack) + end 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=7, armor_heal=0, 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=13, armor_heal=0, 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=13, armor_heal=0, 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=7, armor_heal=0, armor_use=100}, - wear = 0, - }) +local function init_player_armor(player) + local name = player:get_player_name() + local pos = player:get_pos() + if not name or not pos then + return false + end + local armor_inv = minetest.create_detached_inventory(name.."_armor", { + on_put = function(inv, listname, index, stack, player) + validate_armor_inventory(player) + armor:save_armor_inventory(player) + armor:set_player_armor(player) + end, + on_take = function(inv, listname, index, stack, player) + validate_armor_inventory(player) + armor:save_armor_inventory(player) + armor:set_player_armor(player) + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player) + validate_armor_inventory(player) + armor:save_armor_inventory(player) + armor:set_player_armor(player) + end, + allow_put = function(inv, listname, index, stack, player) + -- DEBUT modif MFF (crabman/24/06/2015) + local name = stack:get_name() + local player_inv = player:get_inventory() + local size = player_inv:get_size(listname) + if not ( (name:split(":")[1] == "3d_armor" and stack:get_definition().groups["armor_heal"]) or name:split(":")[1] == "shields") then + return 0 + end + + -- if player class != item class + if not pclasses.api.util.can_have_item(player:get_player_name(), name) then + return 0 + end + + -- MFF (crabman/27/11/2015) no same item type. *helmet* + local ptype = name:split(":")[2]:split("_")[1] + if ptype == "enchanted" then + ptype = name:split(":")[2]:split("_")[2] + end + for i=1, size do + local stack = player_inv:get_stack(listname, i) + if stack:get_count() > 0 then + if stack:get_name():find(ptype) then + return 0 + end + end + end + + if name:find("shield") then + for i=1, size do + local stack = player_inv:get_stack(listname, i) + if stack:get_count() > 0 then + if armors_no_shields[stack:get_name()] ~= nil then + return 0 + end + end + end + else + if armors_no_shields[name] ~= nil then + for i=1, size do + local stack = player_inv:get_stack(listname, i) + if stack:get_count() > 0 then + if stack:get_name():find("shields:") then + return 0 + end + end + end + end + end + -- FIN modif MFF (crabman/24/06/2015) + 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, + }, name) + armor_inv:set_size("armor", 6) + if not armor:load_armor_inventory(player) and armor.migrate_old_inventory then + local player_inv = player:get_inventory() + 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:save_armor_inventory(player) + player_inv:set_size("armor", 0) + end + for i=1, 6 do + local stack = armor_inv:get_stack("armor", i) + if stack:get_count() > 0 then + armor:run_callbacks("on_equip", player, i, stack) + end + end + armor.def[name] = { + init_time = minetest.get_gametime(), + level = 0, + state = 0, + count = 0, + groups = {}, + } + for _, phys in pairs(armor.physics) do + armor.def[name][phys] = 1 + end + for _, attr in pairs(armor.attributes) do + armor.def[name][attr] = 0 + end + for group, _ in pairs(armor.registered_groups) do + armor.def[name].groups[group] = 0 + end + local skin = armor:get_player_skin(name) + armor.textures[name] = { + skin = skin, + armor = "3d_armor_trans.png", + wielditem = "3d_armor_trans.png", + preview = armor.default_skin.."_preview.png", + } + local texture_path = minetest.get_modpath("player_textures") + if texture_path then + local dir_list = minetest.get_dir_list(texture_path.."/textures") + for _, fn in pairs(dir_list) do + if fn == "player_"..name..".png" then + armor.textures[name].skin = fn + break + end + end + end + armor:set_player_armor(player) + return true 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=5, armor_heal=0, armor_use=200}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_gold", { - description = "Gold Chestplate", - inventory_image = "3d_armor_inv_chestplate_gold.png", - groups = {armor_torso=11, armor_heal=0, armor_use=200}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_gold", { - description = "Gold Leggings", - inventory_image = "3d_armor_inv_leggings_gold.png", - groups = {armor_legs=11, armor_heal=0, armor_use=200}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_gold", { - description = "Gold Boots", - inventory_image = "3d_armor_inv_boots_gold.png", - groups = {armor_feet=5, armor_heal=0, armor_use=200}, - wear = 0, - }) +-- Armor 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}, + }, +}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = armor:get_valid_player(player, "[on_player_receive_fields]") + if not name then + 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 + 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") + minetest.after(0, function(player) + if init_player_armor(player) == false then + pending_players[player] = 0 + end + end, player) +end) + +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + if name then + armor.def[name] = nil + armor.textures[name] = nil + end + pending_players[player] = nil +end) + +if armor.config.drop == true or armor.config.destroy == true then + minetest.register_on_dieplayer(function(player) + local name, armor_inv = armor:get_valid_player(player, "[on_dieplayer]") + if not name then + return + end + local drop = {} + for i=1, armor_inv:get_size("armor") do + local stack = armor_inv:get_stack("armor", i) + if stack:get_count() > 0 then + table.insert(drop, stack) + armor:run_callbacks("on_unequip", player, i, stack) + armor_inv:set_stack("armor", i, nil) + end + end + armor:save_armor_inventory(player) + armor:set_player_armor(player) + local pos = player:get_pos() + if pos and armor.config.destroy == false then + minetest.after(armor.config.bones_delay, function() + local meta = nil + local maxp = vector.add(pos, 8) + local minp = vector.subtract(pos, 8) + local bones = minetest.find_nodes_in_area(minp, maxp, {"bones:bones"}) + for _, p in pairs(bones) do + local m = minetest.get_meta(p) + if m:get_string("owner") == name then + meta = m + break + end + end + if meta then + local inv = meta:get_inventory() + for _,stack in ipairs(drop) do + if 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 -if ARMOR_MATERIALS.mithril then - minetest.register_tool("3d_armor:helmet_mithril", { - description = "Mithril Helmet (Warrior)", - inventory_image = "3d_armor_inv_helmet_mithril.png", - groups = {armor_head=9, armor_heal=0, armor_use=50}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_mithril", { - description = "Mithril Chestplate (Warrior)", - inventory_image = "3d_armor_inv_chestplate_mithril.png", - groups = {armor_torso=15, armor_heal=0, armor_use=50}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_mithril", { - description = "Mithril Leggings (Warrior)", - inventory_image = "3d_armor_inv_leggings_mithril.png", - groups = {armor_legs=15, armor_heal=0, armor_use=50}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_mithril", { - description = "Mithril Boots (Warrior)", - inventory_image = "3d_armor_inv_boots_mithril.png", - groups = {armor_feet=9, armor_heal=0, armor_use=50}, - wear = 0, - }) +if armor.config.punch_damage == true then + minetest.register_on_punchplayer(function(player, hitter, + time_from_last_punch, tool_capabilities) + local name = player:get_player_name() + if name then + armor:punch(player, hitter, time_from_last_punch, tool_capabilities) + last_punch_time[name] = minetest.get_gametime() + end + end) 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=0, 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=0, 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=0, 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=0, armor_use=50, physics_speed=1, physics_jump=0.5, armor_fire=1}, - wear = 0, - }) +minetest.register_on_player_hpchange(function(player, hp_change) + if player and hp_change < 0 then + local name = player:get_player_name() + if name then + local heal = armor.def[name].heal + if heal >= math.random(100) then + hp_change = 0 + end + -- check if armor damage was handled by fire or on_punchplayer + local time = last_punch_time[name] or 0 + if time == 0 or time + 1 < minetest.get_gametime() then + armor:punch(player) + end + end + end + return hp_change +end, true) + +minetest.register_globalstep(function(dtime) + timer = timer + dtime + if timer > armor.config.init_delay then + for player, count in pairs(pending_players) do + local remove = init_player_armor(player) == true + pending_players[player] = count + 1 + if remove == false and count > armor.config.init_times then + minetest.log("warning", S("3d_armor: Failed to initialize player")) + remove = true + end + if remove == true then + pending_players[player] = nil + end + end + timer = 0 + end +end) + +-- Fire Protection and water breathing, added by TenPlus1. + +if armor.config.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 (S("[3d_armor] Fire Nodes disabled")) 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}, - }, - }) +if armor.config.water_protect == true or armor.config.fire_protect == true then + minetest.register_globalstep(function(dtime) + armor.timer = armor.timer + dtime + if armor.timer < armor.config.update_time then + return + end + for _,player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local pos = player:get_pos() + local hp = player:get_hp() + if not name or not pos or not hp then + return + end + -- water breathing + if armor.config.water_protect == true then + if armor.def[name].water > 0 and + player:get_breath() < 10 then + player:set_breath(10) + end + end + -- fire protection + if armor.config.fire_protect == true then + local fire_damage = true + 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 fire_damage == true then + armor:punch(player, "fire") + last_punch_time[name] = minetest.get_gametime() + fire_damage = false + end + if hp > 0 and armor.def[name].fire < row[2] then + hp = hp - row[3] * armor.config.update_time + player:set_hp(hp) + break + end + end + end + end + end + armor.timer = 0 + end) end - diff --git a/mods/3d_armor/3d_armor/intllib.lua b/mods/3d_armor/3d_armor/intllib.lua new file mode 100644 index 00000000..6669d720 --- /dev/null +++ b/mods/3d_armor/3d_armor/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/3d_armor/3d_armor/locale/es.po b/mods/3d_armor/3d_armor/locale/es.po new file mode 100644 index 00000000..8eeaf6ef --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/es.po @@ -0,0 +1,384 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-06 18:20+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: El nombre del jugador es nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player inventory is nil @1" +msgstr "3d_armor: El inventario del jugador es nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: La armadura desconectada es nula @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: La referencia del jugador es nula @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Casco de admin" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Peto de admin" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Polainas de admin" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Botas de admin" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Casco de madera" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Peto de madera" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Polainas de madera" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Botas de madera" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Casco de cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Peto de cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Polainas de cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Botas de cactus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Casco de acero" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Peto de acero" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Polainas de acero" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Botas de acero" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Casco de bronce" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Peto de bronce" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Polainas de bronce" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Botas de bronce" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Casco de diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Peto de diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Polainas de diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Botas de diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Casco de oro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Peto de oro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Polainas de oro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Botas de oro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Casco de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Peto de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Polainas de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Botas de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Casco de cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Peto de cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Polainas de cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Botas de cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiación" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Nivel" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Salud" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fuego" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "¡Tu @1 fue destruído!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Fallo en la inicialización del jugador" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodos de fuego desabilitados" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod cargado, pero sin ser usado." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Volver" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armadura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod cargado, pero sin ser usado." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Parte arriba maniquí armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Maniquí para armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Maniquí para armadura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Maniquí para armadura (bloqueado)" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Maniquí para armadura (propiedad de @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod cargado, pero sin ser usado." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Armadura 3d" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "¡Armadura no inicializada!" + +#: ../hazmat_suit/init.lua +msgid "hazmat_suit: Mod loaded but unused." +msgstr "hazmat_suit: Mod cargado, pero sin ser usado." + +#: ../hazmat_suit/init.lua +msgid "Hazmat Helmet" +msgstr "Casco de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Chestplate" +msgstr "Peto de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Sleeve" +msgstr "Manga de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Leggins" +msgstr "Polainas de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Boots" +msgstr "Botas de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Suit" +msgstr "Traje de hazmat" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Escudo de admin" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Escudo de madera" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Escudo de madera mejorado" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Escudo de cactus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Escudo de cactus mejorado" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Escudo de acero" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Escudo de bronce" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Escudo de diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Escudo de oro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Escudo de mitrilo" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Escudo de cristal" + +#: ../technic_armor/init.lua +msgid "technic_armor: Mod loaded but unused." +msgstr "technic_armor: Mod cargado, pero no usado." + +#: ../technic_armor/init.lua +msgid "Lead" +msgstr "Plomo" + +#: ../technic_armor/init.lua +msgid "Brass" +msgstr "Latón" + +#: ../technic_armor/init.lua +msgid "Cast Iron" +msgstr "Hierro fundido" + +#: ../technic_armor/init.lua +msgid "Carbon Steel" +msgstr "Acero carbono" + +#: ../technic_armor/init.lua +msgid "Stainless Steel" +msgstr "Acero inoxidable" + +#: ../technic_armor/init.lua +msgid "Tin" +msgstr "Estaño" + +#: ../technic_armor/init.lua +msgid "Silver" +msgstr "Plata" + +#: ../technic_armor/init.lua +msgid "Helmet" +msgstr "Casco" + +#: ../technic_armor/init.lua +msgid "Chestplate" +msgstr "Peto" + +#: ../technic_armor/init.lua +msgid "Leggins" +msgstr "Polainas" + +#: ../technic_armor/init.lua +msgid "Boots" +msgstr "Botas" + +#: ../technic_armor/init.lua +msgid "Shield" +msgstr "Escudo" + +#. Translators: @1 stands for material and @2 for part of the armor, so that you could use a conjunction if in your language part name comes first then material (e.g. in french 'Silver Boots' is translated in 'Bottes en argent' by using '@2 en @1' as translated string) +#: ../technic_armor/init.lua +msgid "@1 @2" +msgstr "@2 de @1" diff --git a/mods/3d_armor/3d_armor/locale/fr.po b/mods/3d_armor/3d_armor/locale/fr.po new file mode 100644 index 00000000..f2d258f4 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/fr.po @@ -0,0 +1,295 @@ +# French translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# fat115 , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: fat115 \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor : Référence au joueur non trouvée @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor : Nom du joueur non trouvé @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor : Inventaire détaché pour l'armure non trouvé @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Casque d'admin" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Cuirasse d'admin" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Jambières d'admin" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Bottes d'admin" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Casque en bois" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Cuirasse en bois" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Jambières en bois" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Bottes en bois" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Casque en cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Cuirasse en cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Jambières en cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Bottes en cactus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Casque en acier" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr " = Cuirasse en acier" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Jambières en acier" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Bottes en acier" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Casque en bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Cuirasse en bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Jambières en bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Bottes en bronze" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Casque en diamant" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Cuirasse en diamant" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Jambières en diamant" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Bottes en diamant" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Casque en or" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Cuirasse en or" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Jambières en or" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Bottes en or" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Casque en mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Cuirasse en mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Jambières en mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Bottes en mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Casque en cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Cuirasse en cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Jambières en cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Bottes en cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiation" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Niveau" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Soins" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fire" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "Une partie de votre armure a été détruite : @1 !" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor : Impossible d'initialiser le joueur" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Noeuds de type feu désactivés" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip : Mod chargé mais inutilisé." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Retour" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armure" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv : Mod chargé mais inutilisé." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Haut de support d'armure" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Support d'armure" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Support d'armure" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Support d'armure verrouillé" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Support d'armure (propriété de @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui : Mod chargé mais inutilisé." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Armure 3d" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armure non initialisée !" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Bouclier d'admin" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Bouclier en bois" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Bouclier en bois amélioré" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Bouclier en cactus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Bouclier en cactus amélioré" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Bouclier en acier" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Bouclier en bronze" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Bouclier en diamant" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Bouclier en or" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Bouclier en mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Bouclier en cristal" diff --git a/mods/3d_armor/3d_armor/locale/it.po b/mods/3d_armor/3d_armor/locale/it.po new file mode 100644 index 00000000..5d6f46b9 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/it.po @@ -0,0 +1,295 @@ +# Italian translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# Hamlet , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: Italian localization file for the 3D Armor module\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: H4mlet \n" +"Language-Team: ITALIANO\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.10\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Il riferimento alla/al giocatrice/tore è nullo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Il nome della/del gicatrice/tore è nullo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: L'inventario staccato dell'armatura è nullo @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Elmo dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Corazza dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Gambali dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Stivali dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Elmo di legno" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Corazza di legno" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Gambali di legno" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Stivali di legno" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Elmo di cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Corazza di cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Gambali di cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Stivali di cactus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Elmo di acciaio" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Corazza di acciaio" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Gambali di acciaio" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Stivali di acciaio" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Elmo di bronzo" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Corazza di bronzo" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Gambali di bronzo" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Stivali di bronzo" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Elmo di diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Corazza di diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Gambali di diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Stivali di diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Elmo d'oro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Corazza d'oro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Gambali d'oro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Stivali d'oro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Elmo di mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Corazza di mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Gambali di mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Stivali di mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Elmo di cristallo" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Corazza di cristallo" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Gambali di cristallo" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Stivali di cristallo" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiazione" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Livello" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Guarigione" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fuoco" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "Il/i vostro/i @1 è/sono stato/i distrutto/i!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Inizializzazione della/del giocatrice/tore fallita" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodi fuoco disabilitati" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod caricato ma inutilizzato." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Indietro" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armatura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod caricato ma inutilizzato." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Parte superiore del supporto per armatura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Supporto per armatura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Supporto per armatura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Supporto per armatura chiuso a chiave" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Supporto per armatura (di proprietà di @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod caricato ma inutilizzato." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Armatura 3D" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armatura non inizializzata!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Scudo dell'amministratrice/tore" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Scudo di legno" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Scudo di legno migliorato" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Scudo di cactus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Scudo di cactus migliorato" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Scudo di acciaio" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Scudo di bronzo" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Scudo di diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Scudo d'oro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Scudo di mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Scudo di cristallo" diff --git a/mods/3d_armor/3d_armor/locale/ms.po b/mods/3d_armor/3d_armor/locale/ms.po new file mode 100644 index 00000000..518e4380 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/ms.po @@ -0,0 +1,296 @@ +# Malay translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# MuhdNurHidayat (MNH48) , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:21+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: MuhdNurHidayat (MNH48) \n" +"Language-Team: \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Rujukan pemain tiada nilai @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Nama pemain tiada nilai @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Inventori perisai terpisah tiada nilai @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Helmet Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Perisai Dada Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Perisai Kaki Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "But Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Helmet Kayu" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Perisai Dada Kayu" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Perisai Kaki Kayu" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "But Kayu" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Helmet Kaktus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Perisai Dada Kaktus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Perisai Kaki Kaktus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "But Kaktus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Helmet Keluli" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Perisai Dada Keluli" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Perisai Kaki Keluli" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "But Keluli" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Helmet Gangsa" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Perisai Dada Gangsa" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Perisai Kaki Gangsa" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "But Gangsa" + +# 'Diamond' should be translated as 'intan' because the more common word 'berlian' is only specifically used for the gemstone diamond. +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Helmet Intan" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Perisai Dada Intan" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Perisai Kaki Intan" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "But Intan" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Helmet Emas" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Perisai Dada Emas" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Perisai Kaki Emas" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "But Emas" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Helmet Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Perisai Dada Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Perisai Kaki Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "But Mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Helmet Kristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Perisai Dada Kristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Perisai Kaki Kristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "But Kristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiasi" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Tahap" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Pulih" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Api" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "@1 anda telah musnah!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Gagal mengasalkan pemain" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nod-nod Api dilumpuhkan" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mods dimuatkan tetapi tidak digunakan." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Kembali" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Perisai" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mods dimuatkan tetapi tidak digunakan." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Bhg atas dirian perisai" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Dirian perisai" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Dirian Perisai" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Dirian perisai Berkunci" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Dirian Perisai (milik @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mods dimuatkan tetapi tidak digunakan." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Perisai 3d" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Perisai tidak diasalkan!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Perisai Pegang Pentadbir" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Perisai Pegang Kayu" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Perisai Pegang Kayu Kukuh" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Perisai Pegang Kaktus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Perisai Pegang Kaktus Kukuh" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Perisai Pegang Keluli" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Perisai Pegang Gangsa" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Perisai Pegang Intan" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Perisai Pegang Emas" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Perisai Pegang Mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Perisai Pegang Kristal" diff --git a/mods/3d_armor/3d_armor/locale/pt.po b/mods/3d_armor/3d_armor/locale/pt.po new file mode 100644 index 00000000..01666372 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/pt.po @@ -0,0 +1,295 @@ +# LANGUAGE translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# BrunoMine , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: 3d_armor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-11-08 13:12-0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Last-Translator: BrunoMine \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: pt\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Referência Jogador é nula @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Nome de jogador é nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Inventario avulso de armadura é nulo @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Capacete de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Peitoral de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Calças de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Botas de Administrador" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Capacete de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Peitoral de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Calças de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Capacete de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Peitoral de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Calças de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Capacete de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Peitoral de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Calças de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Botas de Aço" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Capacete de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Peitoral de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Calças de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Botas de Bronze" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Capacete de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Peitoral de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Calças de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Botas de Diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Capacete de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Peitoral de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Calças de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Botas de Ouro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Capacete de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Peitoral de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Calças de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Botas de Mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Capacete de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Peitoral de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Calças de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Botas de Cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiação" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Nível" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Saúde" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fogo" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "@1 foi destruído(a)!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Falha ao inicializar jogador" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodes de gofo desabilitados" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod carregado mas inoperante." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Voltar" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armadura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod carregado mas inoperante." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Topo de estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Estande de Armadura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Estande de Armadura Trancada" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Estande de Armadura (pertente a @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod carregado mas inoperante." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "3d Armor" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armadura não inicializada!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Escudo de Administrador" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Escudo de Madeira" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Escudo de Madeira Melhorado" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Escudo de Cacto" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Escudo de Cacto Melhorado" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Escudo de Aço" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Escudo de Bronze" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Escudo de Diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Escudo de Ouro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Escudo de Mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Escudo de Cristal" diff --git a/mods/3d_armor/3d_armor/locale/pt_BR.po b/mods/3d_armor/3d_armor/locale/pt_BR.po new file mode 100644 index 00000000..b429d113 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/pt_BR.po @@ -0,0 +1,295 @@ +# LANGUAGE translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# BrunoMine , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: 3d_armor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-11-08 13:12-0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Last-Translator: BrunoMine \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: pt_BR\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Referência Jogador é nula @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Nome de jogador é nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Inventario avulso de armadura é nulo @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Capacete de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Peitoral de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Calças de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Botas de Administrador" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Capacete de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Peitoral de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Calças de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Capacete de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Peitoral de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Calças de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Capacete de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Peitoral de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Calças de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Botas de Aço" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Capacete de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Peitoral de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Calças de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Botas de Bronze" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Capacete de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Peitoral de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Calças de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Botas de Diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Capacete de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Peitoral de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Calças de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Botas de Ouro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Capacete de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Peitoral de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Calças de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Botas de Mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Capacete de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Peitoral de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Calças de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Botas de Cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiação" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Nível" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Saúde" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fogo" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "@1 foi destruído(a)!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Falha ao inicializar jogador" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodes de gofo desabilitados" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod carregado mas inoperante." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Voltar" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armadura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod carregado mas inoperante." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Topo de estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Estande de Armadura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Estande de Armadura Trancada" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Estande de Armadura (pertente a @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod carregado mas inoperante." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "3d Armor" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armadura não inicializada!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Escudo de Administrador" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Escudo de Madeira" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Escudo de Madeira Melhorado" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Escudo de Cacto" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Escudo de Cacto Melhorado" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Escudo de Aço" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Escudo de Bronze" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Escudo de Diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Escudo de Ouro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Escudo de Mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Escudo de Cristal" diff --git a/mods/3d_armor/3d_armor/locale/ru.po b/mods/3d_armor/3d_armor/locale/ru.po new file mode 100644 index 00000000..4beee8a0 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/ru.po @@ -0,0 +1,294 @@ +# Russian translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# CodeXP , 2018. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 3d_armor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:21+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Ссылка игрока является nil @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Имя игрока является nil @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Отдельный инвентарь брони является nil @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "шлем админа" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "бронежилет админа" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "гамаши админа" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "ботинки админа" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "деревянный шлем" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "деревянный бронежилет" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "деревянные гамаши" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "деревянные ботинки" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "кактусовый шлем" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "кактусовый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "кактусовые гамаши" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "кактусовые ботинки" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "стальной шлем" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "стальной бронежилет" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "стальные гамаши" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "стальные ботинки" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "бронзовый шлем" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "бронзовый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "бронзовые гамаши" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "бронзовые ботинки" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "алмазный шлем" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "алмазный бронежилет" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "алмазные гамаши" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "алмазные ботинки" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "золотой шлем" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "золотой бронежилет" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "золотые гамаши" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "золотые ботинки" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "мифриловый шлем" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "мифриловый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "мифриловые гамаши" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "мифриловые ботинки" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "кристалловый шлем" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "кристалловый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "кристалловые гамаши" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "кристалловые ботинки" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "излучение" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "уровень" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "исцеление" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "огонь" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "твой(и) @1 был(и) разрушен(ы)!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: не смог подготовить игрока" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] блоки огня отключены" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: мод загружен но не используется." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "назад" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "бронь" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: мод загружен но не используется." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "стойка для брони (верх)" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "стойка для брони" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "стойка для брони" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "защищенная стойка для брони" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "стойка для брони (принадлежит @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: мод загружен но не используется." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "3D бронь" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "бронь не подготовлена!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "щит админа" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "деревянный щит" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "улучшенный деревянный щит" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "кактусный щит" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "улучшенный кактусный щит" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "стальной щит" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "бронзовый щит" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "алмазный щит" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "золотой щит" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "мифриловый щит" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "кристалловый щит" diff --git a/mods/3d_armor/3d_armor/locale/template.pot b/mods/3d_armor/3d_armor/locale/template.pot new file mode 100644 index 00000000..0b0222c6 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/template.pot @@ -0,0 +1,294 @@ +# LANGUAGE translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "" + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "" + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "" diff --git a/mods/3d_armor/3d_armor/mod.conf b/mods/3d_armor/3d_armor/mod.conf new file mode 100644 index 00000000..56f79738 --- /dev/null +++ b/mods/3d_armor/3d_armor/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor +depends = default +optional_depends = player_monoids, armor_monoid, pova, fire, ethereal, bakedclay, intllib +description = Adds craftable armor that is visible to other players. diff --git a/mods/3d_armor/3d_armor/models/3d_armor_character.b3d b/mods/3d_armor/3d_armor/models/3d_armor_character.b3d index 278956b0c4269bbcce98a529c7a76bf118542d51..c4d45b50e371fd8030dec685c001809526ea1b87 100755 GIT binary patch literal 151606 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

gUX+W!Wzx@0XtlH6GQ}=^ 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�=L3#a68-q zcfwsT7V4n^8etrahr8h(m;m>}eJ~N4pjlQc?S~ea1P{Q2@DMxpHP)4^_xsEGt2_* zU{+`kvq1;w2%TVdm;>g7xnORX2j+$OV18Ht7KDXhVORtfg~ecTSOS)W&af18fu&&? zSQeIpvR)f`{D|CbI&;xoxHS~ftU`<#HdP5)R3;mz~Md%ONC#Ui& z0M>?eU|m=b)`tyXL)Zv5hD~5o*bFv@EnrI+2wTC{unlYr+rjp*1MCPp!OpM?>#cd!x3;K90foh2!9OH~~(C zli*|+3N=s*!{8J+6;6ZGVK|%tXTn)i@efm`5KxD9THJK#>Z3&uh{G(aPagYj@T+yfKf zUbqh?LK8H@{m=rF-~o6L9)gGA5qK0HgU8_scoLq1r{NiR7AC_Kcn+S27vM#B3H}8y z!z=JAyauns8}KH)1#iPU@GiUu@52Z1A$$ZM!zb`5dS=X1(t?oU|CoWmWLH!MOX<|hE-rySPfQ(uFws- zLl5W))zAypfHh$)=nZ|KFZ6=~6rn$4pVX$#|FAZ!1M9+ius&=68^T7gF>C^x!e+2J zYyn%sK-dblhHYS5*bcUb9biY;33i5EU{}~pRx5RfJz!7R3kJd7un+7D`@#Nj02~Mh z!ND*X4uM1AFgP5JfFt23I2wk)F>ov#2gkz+a3Y)pC&N&vfm#>_r@*Oj8k`Qp;S4wv z&VsXH1e^os!g(+fM#1?|2czKvxDYOai{TQu6fT3y;R?7Cu7a!K8n_m&gX`f2xDjrG zn_�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 diff --git a/mods/3d_armor/3d_armor/models/3d_armor_character.blend b/mods/3d_armor/3d_armor/models/3d_armor_character.blend index 5ded978c36511076017d60345ba1a082b0ff4746..44f7e27de38148ebed07926c3a58270ffc2c7bd3 100755 GIT binary patch literal 775480 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�Qa&VerrgK5&FAKkT^lpGY72zy~EBcHuX@9|a!z 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�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 B8EOCk literal 648828 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 zh%6tGw+@d_7 zSw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OqthZEk>w+@ zd_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW z%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_w+@ zd_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW z%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@ zd_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW z%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFp%J|fFUWci3JACcuFvV26AkI3>7Sw14m zM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@ zd_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW z%SUASh%6tGw+@d_w+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx% zmXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx% zmXFBt5m`Rk68VTMACcuFvV26AkI3>7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUAS zh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_-U*sdQd_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14m zM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@ zd_w+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUAS zh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14m zM`ZbkEFY2OBeHx%mXFBt(VHV5k>w+@d_7 zSw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt z5m`PW%SUASh%6tGw+@d_w+@d_7Sw14mM`ZbkEFY2OBeHx%mXFBt5m`PW%SUASh%6tGw+@d_7Sw14mM`ZbkEFY2O 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%0DM;_}uE9TW|Yk&aL9UWa%Dj!~Irwel*-~ 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 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav73>?frmXCVhR3K#&;1lAye_`wXb&YE$)vN=e z$u%3M)NYtoyKyQI)oq+syJ;#A)oq#vMD?4d*KeLyzj=E7nn_iwr&rb2*Q@zINCcY0 zSQ6wH%;50sMjDW_(9^{+q=ND7xjdSIj}=FLf>e9D`njxgN@xNAbYM%J diff --git a/mods/3d_armor/3d_armor/textures/inventory_plus_armor.png b/mods/3d_armor/3d_armor/textures/inventory_plus_armor.png index 6cde640213e403aa8909b840108cfef4bfafc895..f317c709c4c9f97b788c756c63e6eb4bab1e8c6d 100755 GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^+km7#f-x7=Hc-(k~epN(~qoUL`OvSj}Ky5YL|!f7A`A)+WFw#P$FG|Bp|wzP=~^ z{0i^On}Y8iDRk#B@AZ{FU1WPCLFYof7ej6N@k|qjQ~Mcio@EI1W%%@r;r~a57q@{L z1(pd!0L@`63GxeOaCmkj4a7O=u<5X=vX`mo`iKnkC z`$H~XA$`^NYb?(Lg|>LQIEGl9K6-(XuUUbIHQ>gCFe|~G{}Zo=mFR3#IX&s^ahJ*e zS2Psw@4C+OYxXgbe{vR=Q@UhZ1Un2{B=$2;@@Ht^+`{DYV&?le17?O-%pBtXnJs7_Va( zuw)suXBoC<8MkN}y=xl2Y#YFC8^doK$8sFWa~#Zc9nN+g(RUr#dmh?+AK!l<-+&_D zf+gUDC*g-K;fXTgiZkMkH{y;tq)l0oE@L*$l6<(Eq4oKfbTQ|F&p=b&2Wp#ua{v3TsYeeJh^@4t}m!IbdFo$<$>@yVj|(y@V3Sgim6 z019+cPE!B?0000000000bD$V#0002PNkl?~;uFb`Aj*ub)V?(J`#!31YO-l?Y ztE?>d1riJ86HErvYKk-h5kJY8auA0kT=Mz^8hY76(S?-fM~Z&zL1`wK7QXfYa`J1h i#cFc^cAM4W=C}udHyC}1K}qod0000 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/mods/3d_armor/3d_armor_ip/init.lua b/mods/3d_armor/3d_armor_ip/init.lua new file mode 100644 index 00000000..7701a707 --- /dev/null +++ b/mods/3d_armor/3d_armor_ip/init.lua @@ -0,0 +1,38 @@ +-- support for i18n +local S = armor_i18n.gettext +local F = minetest.formspec_escape + +if not minetest.global_exists("inventory_plus") then + minetest.log("warning", S("3d_armor_ip: Mod loaded but unused.")) + return +end + +armor.formspec = "size[8,8.5]button[6,0;2,0.5;main;"..F(S("Back")).."]"..armor.formspec +armor:register_on_update(function(player) + local name = player:get_player_name() + local formspec = armor:get_armor_formspec(name, true) + local page = player:get_inventory_formspec() + if page:find("detached:"..name.."_armor") then + inventory_plus.set_inventory_formspec(player, formspec) + end +end) + +if minetest.get_modpath("crafting") then + inventory_plus.get_formspec = function(player, page) + end +end + +minetest.register_on_joinplayer(function(player) + inventory_plus.register_button(player,"armor", S("Armor")) +end) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if fields.armor then + local name = armor:get_valid_player(player, "[on_player_receive_fields]") + if not name then + return + end + local formspec = armor:get_armor_formspec(name, true) + inventory_plus.set_inventory_formspec(player, formspec) + end +end) diff --git a/mods/3d_armor/3d_armor_ip/mod.conf b/mods/3d_armor/3d_armor_ip/mod.conf new file mode 100644 index 00000000..0fe7f4e3 --- /dev/null +++ b/mods/3d_armor/3d_armor_ip/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor_ip +depends = 3d_armor +optional_depends = inventory_plus +description = Adds 3d_armor page to the inventory plus. diff --git a/mods/3d_armor/3d_armor_sfinv/LICENSE.txt b/mods/3d_armor/3d_armor_sfinv/LICENSE.txt new file mode 100644 index 00000000..2b2a9f64 --- /dev/null +++ b/mods/3d_armor/3d_armor_sfinv/LICENSE.txt @@ -0,0 +1,18 @@ +[mod] 3d Armor sfinv integration [3d_armor_sfinv] +================================================= + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/mods/3d_armor/3d_armor_sfinv/init.lua b/mods/3d_armor/3d_armor_sfinv/init.lua new file mode 100644 index 00000000..a9371278 --- /dev/null +++ b/mods/3d_armor/3d_armor_sfinv/init.lua @@ -0,0 +1,21 @@ +-- support for i18n +local S = armor_i18n.gettext + +if not minetest.global_exists("sfinv") then + minetest.log("warning", S("3d_armor_sfinv: Mod loaded but unused.")) + return +end + +sfinv.register_page("3d_armor:armor", { + title = S("Armor"), + get = function(self, player, context) + local name = player:get_player_name() + local formspec = armor:get_armor_formspec(name, true) + return sfinv.make_formspec(player, context, formspec, false) + end +}) +armor:register_on_update(function(player) + if sfinv.enabled then + sfinv.set_player_inventory_formspec(player) + end +end) diff --git a/mods/3d_armor/3d_armor_sfinv/mod.conf b/mods/3d_armor/3d_armor_sfinv/mod.conf new file mode 100644 index 00000000..bc0eb898 --- /dev/null +++ b/mods/3d_armor/3d_armor_sfinv/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor_sfinv +depends = 3d_armor +optional_depends = sfinv +description = Adds 3d_armor page to the sfinv inventory. diff --git a/mods/3d_armor/3d_armor_stand/LICENSE.txt b/mods/3d_armor/3d_armor_stand/LICENSE.txt index 5c8246a9..e3cb55d6 100644 --- a/mods/3d_armor/3d_armor_stand/LICENSE.txt +++ b/mods/3d_armor/3d_armor_stand/LICENSE.txt @@ -1,7 +1,43 @@ [mod] 3d Armor Stand [3d_armor_stand] ===================================== -License Source Code: LGPL v2.1 +License Source Code +------------------- -Lecense Media: CC BY-SA 3.0 +Copyright (C) 2012-2019 stujones11, Stuart Jones +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Lecense Models +-------------- + +Copyright (C) 2016-2019 Stuart Jones - CC BY-SA 3.0 + +UV model mapping by tobyplowy(aka toby109tt) + +License Textures +---------------- + +3d_armor_stand.png +3d_armor_stand_locked.png + +Copyright (C) 2017-2019 tobyplowy - CC BY-SA 3.0 + +3d_armor_stand_feet.png +3d_armor_stand_head.png +3d_armor_stand_legs.png +3d_armor_stand_torso.png + +Copyright (C) 2016-2019 Stuart Jones - CC BY-SA 3.0 diff --git a/mods/3d_armor/3d_armor_stand/depends.txt b/mods/3d_armor/3d_armor_stand/depends.txt deleted file mode 100644 index fdbb2900..00000000 --- a/mods/3d_armor/3d_armor_stand/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -3d_armor - diff --git a/mods/3d_armor/3d_armor_stand/init.lua b/mods/3d_armor/3d_armor_stand/init.lua index 0a4e91c1..ab4549b7 100644 --- a/mods/3d_armor/3d_armor_stand/init.lua +++ b/mods/3d_armor/3d_armor_stand/init.lua @@ -1,3 +1,6 @@ +-- support for i18n +local S = armor_i18n.gettext + local armor_stand_formspec = "size[8,7]" .. default.gui_bg .. default.gui_bg_img .. @@ -16,6 +19,18 @@ local armor_stand_formspec = "size[8,7]" .. local elements = {"head", "torso", "legs", "feet"} +local function drop_armor(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for _, element in pairs(elements) do + local stack = inv:get_stack("armor_"..element, 1) + if stack and stack:get_count() > 0 then + armor.drop_armor(pos, stack) + inv:set_stack("armor_"..element, 1, nil) + end + end +end + local function get_stand_object(pos) local object = nil local objects = minetest.get_objects_inside_radius(pos, 0.5) or {} @@ -60,8 +75,11 @@ local function update_entity(pos) 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") + if def.texture then + table.insert(textures, def.texture) + else + table.insert(textures, item:gsub("%:", "_")..".png") + end end end end @@ -79,7 +97,7 @@ local function update_entity(pos) yaw = math.pi / 2 end end - object:setyaw(yaw) + object:set_yaw(yaw) object:set_properties({textures={texture}}) end end @@ -98,24 +116,59 @@ local function has_locked_armor_stand_privilege(meta, player) return true end +local function add_hidden_node(pos, player) + local p = {x=pos.x, y=pos.y + 1, z=pos.z} + local name = player:get_player_name() + local node = minetest.get_node(p) + if node.name == "air" and not minetest.is_protected(pos, name) then + minetest.set_node(p, {name="3d_armor_stand:top"}) + end +end + +local function remove_hidden_node(pos) + local p = {x=pos.x, y=pos.y + 1, z=pos.z} + local node = minetest.get_node(p) + if node.name == "3d_armor_stand:top" then + minetest.remove_node(p) + end +end + +minetest.register_node("3d_armor_stand:top", { + description = S("Armor stand top"), + paramtype = "light", + drawtype = "plantlike", + sunlight_propagates = true, + walkable = true, + pointable = false, + diggable = false, + buildable_to = false, + drop = "", + groups = {not_in_creative_inventory = 1}, + on_blast = function() end, + tiles = {"3d_armor_trans.png"}, +}) + minetest.register_node("3d_armor_stand:armor_stand", { - description = "Armor stand", + description = S("Armor stand"), drawtype = "mesh", mesh = "3d_armor_stand.obj", - tiles = {"default_wood.png", "default_steel_block.png"}, + tiles = {"3d_armor_stand.png"}, paramtype = "light", paramtype2 = "facedir", walkable = false, selection_box = { type = "fixed", - fixed = {-0.5,-0.5,-0.5, 0.5,1.4,0.5} + fixed = { + {-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + }, }, groups = {choppy=2, oddly_breakable_by_hand=2}, sounds = default.node_sound_wood_defaults(), on_construct = function(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", armor_stand_formspec) - meta:set_string("infotext", "Armor Stand") + meta:set_string("infotext", S("Armor Stand")) local inv = meta:get_inventory() for _, element in pairs(elements) do inv:set_size("armor_"..element, 1) @@ -131,8 +184,9 @@ minetest.register_node("3d_armor_stand:armor_stand", { end return true end, - after_place_node = function(pos) + after_place_node = function(pos, placer) minetest.add_entity(pos, "3d_armor_stand:armor_entity") + add_hidden_node(pos, placer) end, allow_metadata_inventory_put = function(pos, listname, index, stack) local def = stack:get_definition() or {} @@ -153,36 +207,36 @@ minetest.register_node("3d_armor_stand:armor_stand", { end, after_destruct = function(pos) update_entity(pos) + remove_hidden_node(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) + drop_armor(pos) + armor.drop_armor(pos, "3d_armor_stand:armor_stand") + minetest.remove_node(pos) end, }) minetest.register_node("3d_armor_stand:locked_armor_stand", { - description = "Locked Armor stand", + description = S("Locked Armor stand"), drawtype = "mesh", mesh = "3d_armor_stand.obj", - tiles = {"default_wood.png", "default_steel_block.png"}, + tiles = {"3d_armor_stand_locked.png"}, paramtype = "light", paramtype2 = "facedir", walkable = false, selection_box = { type = "fixed", - fixed = {-0.5,-0.5,-0.5, 0.5,1.4,0.5} + fixed = { + {-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + }, }, groups = {choppy=2, oddly_breakable_by_hand=2}, sounds = default.node_sound_wood_defaults(), on_construct = function(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", armor_stand_formspec) - meta:set_string("infotext", "Armor Stand") + meta:set_string("infotext", S("Armor Stand")) meta:set_string("owner", "") local inv = meta:get_inventory() for _, element in pairs(elements) do @@ -203,8 +257,8 @@ minetest.register_node("3d_armor_stand:locked_armor_stand", { 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") .. ")") + meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner"))) + add_hidden_node(pos, placer) end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -236,15 +290,10 @@ minetest.register_node("3d_armor_stand:locked_armor_stand", { end, after_destruct = function(pos) update_entity(pos) + remove_hidden_node(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) + -- Not affected by TNT end, }) @@ -253,41 +302,45 @@ minetest.register_entity("3d_armor_stand:armor_entity", { 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}, + collisionbox = {0,0,0,0,0,0}, textures = {"3d_armor_trans.png"}, pos = nil, timer = 0, on_activate = function(self) - local pos = self.object:getpos() + local pos = self.object:get_pos() 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) + on_blast = function(self, damage) + local drops = {} + local node = minetest.get_node(self.pos) + if node.name == "3d_armor_stand:armor_stand" then + drop_armor(self.pos) self.object:remove() end + return false, false, drops end, }) +minetest.register_abm({ + nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:armor_stand"}, + interval = 15, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local num + num = #minetest.get_objects_inside_radius(pos, 0.5) + if num > 0 then return end + update_entity(pos) + end +}) + minetest.register_craft({ output = "3d_armor_stand:armor_stand", recipe = { - {"", "default:fence_wood", ""}, - {"", "default:fence_wood", ""}, + {"", "group:fence", ""}, + {"", "group:fence", ""}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, } }) @@ -298,4 +351,3 @@ minetest.register_craft({ {"3d_armor_stand:armor_stand", "default:steel_ingot"}, } }) - diff --git a/mods/3d_armor/3d_armor_stand/mod.conf b/mods/3d_armor/3d_armor_stand/mod.conf new file mode 100644 index 00000000..d1f1a4eb --- /dev/null +++ b/mods/3d_armor/3d_armor_stand/mod.conf @@ -0,0 +1,2 @@ +name = 3d_armor_stand +depends = 3d_armor diff --git a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj index 89f3793a..0df6dc78 100644 --- a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj +++ b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj @@ -1,191 +1,280 @@ -# Blender v2.73 (sub 0) OBJ File: '3d_armor_stand.blend' +# Blender v2.72 (sub 0) OBJ File: '' # 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 +o Armor_Stand_Player_Cube_Stand +v 0.062500 0.125002 -0.062500 +v 0.062500 -0.437500 -0.062500 +v 0.062500 -0.437500 0.062500 +v 0.062500 0.125002 0.062500 +v -0.187500 0.250004 0.062500 +v -0.187500 0.250004 -0.062500 +v -0.250000 0.250004 -0.062500 +v -0.250000 0.250004 0.062500 +v -0.062500 -0.437500 -0.062500 +v -0.062500 -0.437500 0.062500 +v -0.187500 -0.437500 0.062500 +v -0.187500 -0.437500 -0.062500 +v -0.187500 0.125002 0.062500 +v -0.187500 0.125002 -0.062500 +v -0.187500 0.937504 0.062500 +v -0.187500 0.937504 -0.062500 +v -0.375000 0.937504 -0.062500 +v -0.375000 0.937504 0.062500 +v -0.062500 0.125002 0.062500 +v 0.187500 0.125002 -0.062500 +v 0.187500 -0.437500 -0.062500 +v -0.062500 0.125002 -0.062500 +v -0.250000 0.125007 -0.062500 +v -0.250000 0.125007 0.062500 +v 0.187500 -0.437500 0.062500 +v 0.187500 0.125002 0.062500 +v -0.062500 0.937504 0.062500 +v -0.187500 0.812504 0.062500 +v -0.062500 0.812504 0.062500 +v -0.062500 0.937504 -0.062500 +v 0.187500 0.250004 -0.062500 +v 0.187500 0.250004 0.062500 +v 0.250000 0.250004 0.062500 +v 0.250000 0.250004 -0.062500 +v 0.250000 0.125007 0.062500 +v 0.250000 0.125007 -0.062500 +v 0.187500 0.812504 0.062500 +v 0.187500 0.812504 -0.062500 +v 0.375000 0.812504 -0.062500 +v 0.375000 0.812504 0.062500 +v 0.187500 0.937504 -0.062500 +v 0.187500 0.937504 0.062500 +v 0.375000 0.937504 0.062500 +v 0.375000 0.937504 -0.062500 +v 0.062500 0.937504 -0.062500 +v 0.062500 0.937504 0.062500 +v -0.062500 0.812504 -0.062500 +v -0.187500 0.812504 -0.062500 +v 0.062500 0.812504 -0.062500 +v 0.062500 0.812504 0.062500 +v -0.375000 0.812504 -0.062500 +v -0.375000 0.812504 0.062500 +v -0.062500 0.250004 0.062500 +v 0.062500 0.250004 0.062500 +v 0.062500 0.250004 -0.062500 +v -0.062500 0.250004 -0.062500 +v -0.062500 1.312504 -0.062500 +v 0.062500 1.312504 -0.062500 +v -0.062500 1.312504 0.062500 +v 0.062500 1.312504 0.062500 v -0.500000 -0.437500 -0.500000 v -0.500000 -0.437500 0.500000 -v -0.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.437500 0.500000 +v 0.500000 -0.437500 -0.500000 +v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 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.140625 vt 0.062500 0.000000 -vt 0.062500 1.000000 -g Player_Cube_Stand +vt 0.093750 0.000000 +vt 0.093750 0.140625 +vt 0.140625 0.234375 +vt 0.140625 0.203125 +vt 0.156250 0.203125 +vt 0.156250 0.234375 +vt 0.093750 0.171875 +vt 0.062500 0.171875 +vt 0.218750 0.140625 +vt 0.187500 0.140625 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.078125 0.437500 +vt 0.078125 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.437500 +vt 0.250000 0.140625 +vt 0.250000 0.000000 +vt 0.031250 0.140625 +vt 0.031250 0.000000 +vt 0.156250 0.140625 +vt 0.156250 0.000000 +vt 0.187500 0.203125 +vt 0.156250 0.171875 +vt 0.187500 0.171875 +vt 0.125000 0.000000 +vt 0.125000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.000000 +vt 0.328125 0.437500 +vt 0.296875 0.437500 +vt 0.296875 0.406250 +vt 0.328125 0.406250 +vt 0.109375 0.437500 +vt 0.109375 0.468750 +vt 0.046875 0.203125 +vt 0.046875 0.234375 +vt 0.031250 0.234375 +vt 0.031250 0.203125 +vt 0.000000 0.203125 +vt 0.000000 0.171875 +vt 0.031250 0.171875 +vt 0.265625 0.468750 +vt 0.265625 0.437500 +vt 0.218750 0.437500 +vt 0.218750 0.468750 +vt 0.218750 0.171875 +vt 0.171875 0.468750 +vt 0.171875 0.437500 +vt 0.078125 0.406250 +vt 0.031250 0.406250 +vt 0.140625 0.468750 +vt 0.140625 0.437500 +vt 0.140625 0.406250 +vt 0.171875 0.406250 +vt 0.109375 0.406250 +vt 0.359375 0.437500 +vt 0.359375 0.406250 +vt 0.390625 0.406250 +vt 0.390625 0.437500 +vt 0.437500 0.406250 +vt 0.437500 0.437500 +vt 0.000000 0.437500 +vt 0.000000 0.406250 +vt 0.250000 0.437500 +vt 0.218750 0.406250 +vt 0.250000 0.406250 +vt 0.359375 0.468750 +vt 0.406250 0.468750 +vt 0.406250 0.437500 +vt 0.109375 0.234375 +vt 0.078125 0.234375 +vt 0.078125 0.203125 +vt 0.109375 0.203125 +vt 0.062500 0.468750 +vt 0.062500 0.562500 +vt 0.031250 0.562500 +vt 0.328125 0.468750 +vt 0.296875 0.468750 +vt 0.062500 0.593750 +vt 0.031250 0.593750 +vt 0.093750 0.468750 +vt 0.093750 0.562500 +vt 0.125000 0.468750 +vt 0.125000 0.562500 +vt 0.000000 0.562500 +vt 0.000000 0.468750 +vt 0.078125 0.171875 +vt 0.046875 0.171875 +vt 0.265625 0.203125 +vt 0.265625 0.171875 +vt 0.296875 0.171875 +vt 0.296875 0.203125 +vt 0.265625 0.234375 +vt 0.281250 0.234375 +vt 0.281250 0.203125 +vt 0.312500 0.171875 +vt 0.312500 0.203125 +vt 0.140625 0.171875 +vt 0.171875 0.234375 +vt 0.171875 0.203125 +vt 0.109375 0.171875 +vt 0.234375 0.203125 +vt 0.203125 0.203125 +vt 0.203125 0.171875 +vt 0.234375 0.171875 +vt 0.234375 0.234375 +vt 0.203125 0.234375 +vt 0.062500 0.375000 +vt 0.062500 0.234375 +vt 0.093750 0.234375 +vt 0.093750 0.375000 +vt 0.031250 0.375000 +vt 0.125000 0.234375 +vt 0.125000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.234375 +vt 0.218750 0.375000 +vt 0.187500 0.375000 +vt 0.187500 0.234375 +vt 0.218750 0.234375 +vt 0.250000 0.375000 +vt 0.250000 0.234375 +vt 0.156250 0.375000 +vt 0.250000 1.000000 +vt 0.250000 0.750000 +vt 0.500000 0.750000 +vt 0.500000 1.000000 +vt 0.750000 0.750000 +vt 0.750000 1.000000 +vt 0.750000 0.734375 +vt 1.000000 0.734375 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.734375 +vt 0.250000 0.734375 +vt 0.500000 0.734375 usemtl Stand s off -f 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 +f 1/1 2/2 3/3 4/4 +f 5/5 6/6 7/7 8/8 +f 9/1 10/4 11/9 12/10 +f 13/11 14/12 12/13 11/14 +f 15/15 16/16 17/17 18/18 +f 19/19 13/11 11/14 10/20 +f 2/2 1/1 20/21 21/22 +f 14/12 22/23 9/24 12/13 +f 8/25 7/7 23/26 24/27 +f 4/4 3/3 25/28 26/29 +f 22/23 19/29 10/28 9/24 +f 26/30 25/31 21/22 20/21 +f 27/32 15/33 28/34 29/35 +f 16/16 15/15 27/36 30/37 +f 31/38 32/39 33/40 34/41 +f 33/42 35/43 36/44 34/41 +f 37/45 38/46 39/47 40/48 +f 2/49 21/27 25/12 3/11 +f 41/50 42/51 43/47 44/48 +f 38/52 41/15 44/18 39/53 +f 41/50 45/54 46/55 42/51 +f 16/51 30/55 47/56 48/57 +f 41/15 38/52 49/58 45/36 +f 46/59 50/60 37/61 42/62 +f 42/62 37/61 40/63 43/64 +f 43/65 40/66 39/53 44/18 +f 18/67 17/47 51/68 52/69 +f 28/34 15/33 18/67 52/69 +f 16/51 48/57 51/68 17/47 +f 48/59 28/70 52/71 51/72 +f 53/73 54/74 55/75 56/76 +f 30/77 57/78 58/79 45/17 +f 50/60 46/59 27/32 29/35 +f 29/80 47/32 49/33 50/81 +f 47/56 30/55 45/36 49/58 +f 57/78 59/82 60/83 58/79 +f 27/84 59/85 57/78 30/77 +f 46/86 60/87 59/85 27/84 +f 45/17 58/79 60/88 46/89 +f 1/90 55/75 31/38 20/91 +f 54/92 4/93 26/94 32/95 +f 26/92 20/96 36/97 35/98 +f 20/91 31/38 34/41 36/44 +f 32/95 26/94 35/99 33/100 +f 6/6 14/101 23/26 7/7 +f 14/102 13/103 24/7 23/8 +f 6/6 56/76 22/104 14/101 +f 53/105 5/106 13/107 19/108 +f 13/107 5/106 8/25 24/27 +f 1/90 22/104 56/76 55/75 +f 53/105 19/108 4/93 54/92 +f 1/109 4/105 19/106 22/110 +f 49/111 55/112 54/113 50/114 +f 38/115 31/40 55/112 49/111 +f 50/114 54/113 32/116 37/117 +f 37/118 32/119 31/40 38/115 +f 28/120 48/121 6/122 5/123 +f 29/124 28/120 5/123 53/125 +f 48/121 47/126 56/8 6/122 +f 47/126 29/117 53/116 56/8 usemtl Base -f 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 +f 61/127 62/128 63/129 64/130 +f 65/129 66/131 67/132 68/130 +f 62/131 68/133 67/134 63/135 +f 63/136 67/137 66/138 64/128 +f 61/129 64/128 66/138 65/139 +f 62/131 61/129 65/139 68/133 diff --git a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb26de9d803bcbf7890390ccbcee527361cfe1a GIT binary patch literal 1628 zcmV-i2BZ0jP)zV5HGJAW%*B(^K`<`}I_hpd#+wyXRiMdH~IncZy#c3 za|a7@W(X=^FzjPfORv|f%%8Xc+U+*ZI-IlAY9Xn1IO&RsJLf>AC_kjzA0X@irF>9X z0RzK6Azy}iB4{D~U?U@#oeZnyC~g%A?ud01!BS~Ey3 z-ENF^7NtCtr*PI`t>fIebH59Jq9I_6Aq+yKkXV}{gg{D*j_CT7Zq{*|MDkp z0IfArO7tLQuI3S^l0ni3Ahqd!o@f(Ab&_@uwcqJkXEEAT=1<%J=g*(VIfs)eKgWIS zeoY?^2Bg*y$2}TvWL{E>YFO(qCfh~jE9U3tEAc0u1fM*4f|MSfvj`+oitNvmcv4Xd zYuS#aX|cF4s1XJ=c6W9w^G`$$c=&L0BqV&_NBIh)4efTDMx#Ni)gp=_=H}*TwOTAM zFSEF~h}OCizbeF}_57syGt4l<3^U9y!wfUr+*o%vH`d)*TX&%au3oO=dES}Zcyag6 zb@yQF1wU+c`19Hu#f8mhF>n9z0)PMfUt*dKFd~PqtTwr_+B{PpFk%4TllYz_jONdd z0d#85Wb79Pc+rY^b7cu%Ns_)kdj_!9;d@yme1CsCD-ANsdxNAq{Z*jc2OM>SF1@Yw zl`KBX{|ETTKOc$w8QNIB`tGqPKePPViR}Y!yt~eWtrsID@O4;gHj4XmhPC8{h@I6 z&1W$;-dzWvtQ}5TO#g0LATM*}q_(xwX8iuC*8*WQ&*rnEe~y+XzNs<5ILt6PRL`eP zJIHdEH?9TVTv;lNkYn1kgUomJC@tW7l1s}ABZQ;0!>Kkv7|rwe=?(y^%?O=Znv3<~ zhUY)MI+ncJjHW9Gs32me6^|shG))h#?|Vk>`qR+q9ZG^`|5q5f3M^NI+%u-Z^$*G6 z+qbT{@df9*-dwB~VRGE{k3Rk8R5nC~#yP0<@sZ~N2l_ug_PpR!dcfT~*Z-%NAv(2% zHvqh~c5&qTho5|XsysnG*m}YEdBCrseE&HA)Z^}*>+W@4@!7}kxX(U*XKG%d9XjXu z^4rbV67E0TWtyP!-Ms&Bm+ODK!t=c@|9Sd~n;Yvc*8sU3&c|!b2HIHn!FyLvUCbZq z1IjVK)50{zJY^~jFfMka6vYnbp^$5Xd|b54Q{V}5T+m!xtn=gc9@^L<6!MO*JO=o2 zd++ocV7#>Xo*YqtuPq_dpaus?m#dfS$F{xWW1ZTmdTFY{Xuep`TC*{7vE1{Ik59V@ a%JE-LjdXE6c;~f7=T)} zMmzXdUwPGOXZ*5V0zA)Sa`Fh;Sgf%~3`j{78LG8P{7)PoFK|rr?ISu?E9 zm<#cw7Y}%4MFDE{8kI_=ZG6WGn7=z84?Z$T&rb)ROe9`42Wu^XA7G58QmJ5!VQ_G; zZG5}db`03Lb0^wZ0RD055^}|b`}_OTHuvw}C!f#r@Zm#7_l!~~6foLQtyVMmHp0j>ns%fyU zqFgTH3KvJj6KKT?A&5kiNR#O!!CDMDvKf5GV?eoFPSeux@Gy=eXf~TzYtx@E9C~|t zP)gC?-;eZMj4>=NEoJb=7<|vq^wEkn#u5a62H$ZH0BAHDG#gE-)hg0;sYeQ>RBN?> zs#h@9#1l3aV=RS20i{%mFBEpfgUa-=ij~qux-uoBP$+bsfGCOx`~cwydU|@edFv*% zYAw^|(W6HU4i2UsP_Nf9D|@^ZZ;Zxq9E5NQ{D6AB0VtYEA%sJi3yE};!FQa1d_E6= z@B2(lOkkrX!V8GBCW>M&a9x*3X{6_(lp<0Q!V!c$VY-if-^W^uQ4NF_ppC&1V5}hs zd?KZZbd-8lg6}v1N-2a8sD`E|=TgyvMy(EjHhLvalnBFKYNcwLCXF>jDry_waRPSi z*bxUip?OrPV^(r{v(Z4Ch)ShOzCZSoT$sZcn|g-yBz=8-ZQ(nf1#aECg%B>TH8==_ zaN?gUaD^lnu$M)cg~(ZYG>x|ac!>5=f+oGWzXKJaOk;Ve*Bw{oNgu{BZnu(Mwl2I*-{>m zA;5D5o+}8#zO6%m(q>EU{gi-v#R|`k4&q5ct**8n0mfK7H{J;srsw0-AmX^!s4aJY z7D)b>n)=X2TJgIx-%B5!_{s0VSbll>J8_JVf;UdRiz5X8p1F=T5r6;V&(rpk$KC{M z`QYqN)AnEe=1CBOeZ_ob~HW`zq_y1LoQ$b=Q`ZQOP99w#V*`FWBeDck}-F*^CyrHdp5J zpWT(F!`VBPG~l&rhqvFmx~a9oW3_-M#kyKxZlT25_Fb<9g0PR-I~yNIOA4s2Az-aV z&G?|hq32dVBXyg0ND0_T3p_hIn39lKw`m8Ftm;Nuz;gwAhIVEE8)=74O+XO#@#*aa z0LDf_ls1eE^rj8&-hcR5@YqP$T`@rVAq&MyCb((6TE{1zk+{C}yNm#UXyp`!N)9Zy zWQ4>sy216=$>CG4zhJ+9;QWiI^bGyq@t##>kn3m^T0Pj4^qr03s$`-4qc5T$Z> z_D+SbELX9PVETG|_U4PO#X<7tsT+7wJn{La^?X8EUoDO z;?8TC>%>YkGiiL7nY%~v%9Z&3no@aF+S$`bZL3$TwKFFU+cPH)cg-iXb;so1KR^3K zK(hb4hJa)>r>`$^^u-D8E-mw)+YdQ5xz8pVAd$n#_4r606&d^5k^P%)&#$WkTIKFS zF;;zFIyCxt#*#8wimvbg(W>l{A}Gvx88z6d4o3!hQ|-_d1gsT1t#*5%Mx(ZzzWBJk zP{VUY>M318z*?~*gp;mtvK10-kX)zbau;}lSSx6D5Ac|s literal 0 HcmV?d00001 diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png index d04f9e39ed949edabec32fc8a5e5172f3ff39635..6b34d666170181f0151c150d0ac5ecc73ac56e55 100644 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-dBg(*J||{XR#ZqNNXROjR+K)`vT%}%K@5)re`*qg z4?nlg7f(imuY7!b|Jm($Bnp4ZTW&Qpm>}-=g^}U^X2}8#CZi~z6%3xPelF{r5}E)s CBQ9V7 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILZJiwj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPN3x^N`lQf5>Jy58@)5S3)QKM*%D4kC*?XiuH8Bv zz4=Hd3#X8Z#{>n(CYH|czg@OjeOpkvyf{~M`T6UY!%E+XEDXsNRTonE_oZ~#XJehy h!S4ms85k~f%Jv?UK3cQea<6xKA8gn{fZABJoqrby`6n^Zv4KQg9a?E&Hl!E&NDu&Qe#Rm zeem=1bDs0_?T?>S&tTAOV4bg`7rpWoQy1?6h8;qJiaQl~7;>j8OMdc^js;r7;OXk; Jvd$@?2>@ZWHPrwB literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILZJiwj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPN3x}W;pJ^bg2~cRVr;B4q#=W;Q9Qhg)cvvR>*zoVn z2jh9irg9&<<>WEbvU@|~CbMNM3=9Huymvde%)8mXYOC1U&z6ULpCp$^X{spANd8_Z40MprBF1M-y6pltLtTJ822WQ%mvv4FO#qFo BUaSBB diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png index 66ec3574ab5dba3b97bfb7cb221ce0406e51fc0a..5441f0c47ef55360a5503a5828083a1e7b4276d5 100644 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfIEGmC zzMZ_0i@}h?IXB&2YyQ0cQ}<^3?TXRXWtW}hIngGtB)&hmvJY5_^GVZ;-;mFl&Ai{7l#OB8S znNQLzqqZyYX3S3du`e=rE&s!giq&Hv5*_66l9Q$j7D*d^O|C%e3v`?AaUHPadH@FZrNR9UA#!Zovj7BP6b L`njxgN@xNArJy)- literal 0 HcmV?d00001 diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png index af95ec7f8e5856eeb84c55c1e05b7da1eb700e17..1856baea87c8c740711c5003cd8af1612e78660d 100644 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfU%a54lYYQz-RJR(xx?J>ve{T8Q-$x3=izTv~lla mxB3IzjF&I{u%D=@cZ;_u%gD`8t0qR?m#J3XMj^pA%-C?F*X5%CNxw+G}Tyha2|H3F=ZkoPGATjmbl$BmaU**Ija# z4cS`6rTIC={9&}Zt8u9AYNuc`!{vTqTmJ=d%x$~$a#_3Q+Mp@Sd~ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/mods/3d_armor/3d_armor_ui/init.lua b/mods/3d_armor/3d_armor_ui/init.lua new file mode 100644 index 00000000..41eec7bb --- /dev/null +++ b/mods/3d_armor/3d_armor_ui/init.lua @@ -0,0 +1,53 @@ +-- support for i18n +local S = armor_i18n.gettext +local F = minetest.formspec_escape +local has_technic = minetest.get_modpath("technic") ~= nil + +if not minetest.global_exists("unified_inventory") then + minetest.log("warning", S("3d_armor_ui: Mod loaded but unused.")) + return +end + +if unified_inventory.sfinv_compat_layer then + return +end + +armor:register_on_update(function(player) + local name = player:get_player_name() + if unified_inventory.current_page[name] == "armor" then + unified_inventory.set_inventory_formspec(player, "armor") + end +end) + +unified_inventory.register_button("armor", { + type = "image", + image = "inventory_plus_armor.png", + tooltip = S("3d Armor") +}) + +unified_inventory.register_page("armor", { + get_formspec = function(player, perplayer_formspec) + local fy = perplayer_formspec.formspec_y + local name = player:get_player_name() + if armor.def[name].init_time == 0 then + return {formspec="label[0,0;"..F(S("Armor not initialized!")).."]"} + end + local formspec = "background[0.06,"..fy..";7.92,7.52;3d_armor_ui_form.png]".. + "label[0,0;"..F(S("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)..";"..F(S("Level"))..": "..armor.def[name].level.."]".. + "label[5.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]".. + "listring[current_player;main]".. + "listring[detached:"..name.."_armor;armor]" + if armor.config.fire_protect then + formspec = formspec.."label[5.0,"..(fy + 1.0)..";".. + F(S("Fire"))..": "..armor.def[name].fire.."]" + end + if has_technic then + formspec = formspec.."label[5.0,"..(fy + 1.5)..";".. + F(S("Radiation"))..": "..armor.def[name].groups["radiation"].."]" + end + return {formspec=formspec} + end, +}) diff --git a/mods/3d_armor/3d_armor_ui/mod.conf b/mods/3d_armor/3d_armor_ui/mod.conf new file mode 100644 index 00000000..68eff85f --- /dev/null +++ b/mods/3d_armor/3d_armor_ui/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor_ui +depends = 3d_armor +optional_depends = unified_inventory +description = Adds 3d_armor page to the unified inventory. diff --git a/mods/3d_armor/LICENSE.md b/mods/3d_armor/LICENSE.md index d383270a..56c93cdd 100755 --- a/mods/3d_armor/LICENSE.md +++ b/mods/3d_armor/LICENSE.md @@ -1,11 +1,9 @@ 3D Armor - Visible Player Armor =============================== -Default Item Textures (C) Cisoun - WTFPL +License Source Code: Copyright (C) 2013-2018 Stuart Jones - LGPL v2.1 -Armor Textures: Copyright (C) 2013 Ryan Jones - CC-BY-SA - -Source Code: Copyright (C) 2013 Stuart Jones - LGPL +Armor Textures: Copyright (C) 2017-2018 davidthecreator - CC-BY-SA 3.0 Special credit to Jordach and MirceaKitsune for providing the default 3d character model. diff --git a/mods/3d_armor/README.md b/mods/3d_armor/README.md index 54548bf8..204bf9d1 100755 --- a/mods/3d_armor/README.md +++ b/mods/3d_armor/README.md @@ -1,17 +1,28 @@ -Modpack - 3d Armor [0.4.5] -========================== +Modpack - 3d Armor [0.4.13] +=========================== + +### Table of Contents + + + + +- [[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] 3d Armor Stand [3d_armor_stand]](#mod-3d-armor-stand-3d_armor_stand) + + + [mod] Visible Player Armor [3d_armor] ------------------------------------- -Minetest Version: 0.4.13 +Minetest Version: 5.0.0 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. @@ -23,12 +34,18 @@ Fire protection has been added by TenPlus1 and in use when ethereal mod is found 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 +Compatible with sfinv, inventory plus or unified inventory by enabling the appropriate +inventory module, [3d_armor_sfinv], [3d_armor_ip] and [3d_armor_ui] respectively. +Also compatible with [smart_inventory] without the need for additional modules. + +built in support 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. +For mod installation instructions, please visit: http://wiki.minetest.com/wiki/Installing_Mods + [mod] Visible Wielded Items [wieldview] --------------------------------------- @@ -44,22 +61,6 @@ 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] ------------------------------------- diff --git a/mods/3d_armor/description.txt b/mods/3d_armor/description.txt deleted file mode 100644 index 2da5ba4d..00000000 --- a/mods/3d_armor/description.txt +++ /dev/null @@ -1 +0,0 @@ -Visible player armor & wielded items. diff --git a/mods/3d_armor/modpack.conf b/mods/3d_armor/modpack.conf new file mode 100644 index 00000000..4e642513 --- /dev/null +++ b/mods/3d_armor/modpack.conf @@ -0,0 +1,2 @@ +name = minetest-3d_armor +description = Visible player armor & wielded items. diff --git a/mods/3d_armor/modpack.txt b/mods/3d_armor/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/3d_armor/preview_gen.py b/mods/3d_armor/preview_gen.py new file mode 100644 index 00000000..a18954df --- /dev/null +++ b/mods/3d_armor/preview_gen.py @@ -0,0 +1,81 @@ +#!/usr/bin/python + +import os +import sys +import Image + +try : + arg = sys.argv[1] +except IndexError : + print "Usage: preview_gen.py " + sys.exit(1) + +try : + index = open(arg, "r") +except IOError : + print "Failed to open index file%s" %s (arg) + sys.exit(1) + +preview = [] + +for line in index.readlines() : + if ":" in line : + line = line.rstrip('\n') + preview.append(line.split(':')) + +print "Generating preview images..." +for fn, place in preview : + try : + imi = Image.open(fn) + except IOError : + print "Failed to open %s" % (fn) + sys.exit(1) + + w, h = imi.size + if h != w / 2: + print "Incompatible texture size %s" % (fn) + sys.exit(1) + + s = w / 64 + imo = Image.new("RGBA", (16 * s, 32 * s)) + + if place == "all" or place == "head" : + face = (40 * s, 8 * s, 48 * s, 16 * s) + side_l = (56 * s, 8 * s, 57 * s, 16 * s) + side_r = (63 * s, 8 * s, 64 * s, 16 * s) + imo.paste(imi.crop(side_l), (4 * s, 0, 5 * s, 8 * s)) + imo.paste(imi.crop(side_r), (11 * s, 0, 12 * s, 8 * s)) + imo.paste(imi.crop(face), (4 * s, 0, 12 * s, 8 * s)) + + if place == "all" or place == "torso" : + arm = (44 * s, 20 * s, 48 * s, 32 * s) + body = (20 * s, 20 * s, 28 * s, 32 * s) + imo.paste(imi.crop(arm), (0 * s, 8 * s, 4 * s, 20 * s)) + imo.paste(imi.crop(arm).transpose(Image.FLIP_LEFT_RIGHT), + (12 * s, 8 * s, 16 * s, 20 * s)) + imo.paste(imi.crop(body), (4 * s, 8 * s, 12 * s, 20 * s)) + + if place == "all" or place == "legs" : + leg = (4 * s, 20 * s, 8 * s, 32 * s) + imo.paste(imi.crop(leg), (4 * s, 20 * s, 8 * s, 32 * s)) + imo.paste(imi.crop(leg).transpose(Image.FLIP_LEFT_RIGHT), + (8 * s, 20 * s, 12 * s, 32 * s)) + + if place == "all" or place == "feet" : + boot = (20 * s, 4 * s, 24 * s, 11 * s) + imo.paste(imi.crop(boot), (4 * s, 25 * s, 8 * s, 32 * s)) + imo.paste(imi.crop(boot).transpose(Image.FLIP_LEFT_RIGHT), + (8 * s, 25 * s, 12 * s, 32 * s)) + + size = (32 * s, 64 * s) + imo = imo.resize(size) + + if place == "shield" : + shield = (0, 0, 16 * s, 16 * s) + imo.paste(imi.crop(shield), (16 * s, 32 * s, 32 * s, 48 * s)) + + outfile = fn.replace(".png", "_preview.png") + imo.save(outfile) + print outfile + + diff --git a/mods/3d_armor/screenshot.png b/mods/3d_armor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f9e5824ad93f7ac173e171f3359b6e804028ce GIT binary patch literal 66964 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⩔QH?<@Sd{$xvwV*M#-t> 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

GR@H&owE^~8&C!S$YEePm+U=RM9BvLK!%ge z#B?g7&&M8nB(O%VB^Nk?tTM}Y)PH7 zP(wQqWueXi*!4;|Rr`S0v(5kjdNcb}Hw5&VX-t2v*V;PO^<0yP2wcBXf~%hWT;Exb zNV6uy>Rortd3^^jDUfK&(7Oej>xPhm(#kCjPwztkb>4I(-fuaNQ#-uupzifq!vlS; z=a>cVqQrwGE0#u!ykmPhK*K^*vG(vfdiUEPcPDqdAFl|VS7^>FQ1_$LtgbuSww~3| z7JuTzG^}fm`kRur4Iu4P84x_sY^Uk2kLgw!2mV0H8DHFD=@eKpQe8=Y{h8hW%Vp~> zFUU|>)@3yRfF*-J{YkOAHxf0{^0wN?p6r`ZhH6H&UZ3ztxubswple#P{RMnLz8 zIT#M*by7J6OLP^jpzWR0^{!qa%PaY?e{)82Uq%!MbU1O*V_Nw8raNzfFI{rPJx@DaYt%xm<4BG=+o0S|-yVbs9*wb0zVU3*r1mTjymzSlep+Y-1wZ zye$S43I!-vtR!S_7A*qs~GEf?eb86(G7?$gsI<5N{ zd~Okud+tk(56m5FPxBrh${_^MNrtBn9CI97Sa4#(^(T#>&zzZe)>)4ZIR{nuJTvP& zZ%`Myc76%>p<^>k&Vd@i?;h%R9@}+r2K0&iiReCTnfS01f*+Q`B$H|Zg=BgL{aEv)C9*YDlCI~97r z?%w;j*_;L_u=++XqT6D*j_4H!&X{f~QkW(g8R&QFwbW>@KRICCXF<<9+w7h_c$+I+Uae>5x+7B0oP{|Ufnmoe zR=t+4skw`bi$Vh#b8~YrGCG0)U?j#E*wUj0RI4>mBBob|ZV6IRHw<#BRgRjWu-uG0 zef`P+c49H#$VjbXaBIERz>ygSx3UO#C|0#F;G4-oW5YGp@0CeYW{`7IU-L z>~7wR#jxfxXPNt$*AFvfVSc&X8i=19>v!}&=6AE-ZhklW?JV{mZesRLCy#<|zJSIf z9fxL_5sBt`130rD9i|x-%h``2q+`_(-tbZ4fiS9_2WEusiQSJS9_)M0ELJVwO%aco zxkcrL0_39saPhW-0_0NN5mfa&4v_ck*`12I1l|;_{_$Q|nr@8PvZJz;Zn2RxY&3Vz zo;|{=U5$*6K&8B#nzoMV(7s8Y#?dWyY{!lrQ0VDVl_eZ8)sE^2Ir#8T?uJe0Um+AD zc-fB~uoE_BwxwG48#Zio5a(L0hLez4Cs;PX5Y74b0^rA_iI` zLJ>y0Ze5pEUtUrM0Dw)Wj5=`V6h=g6JN6+zs5Y% zBpW7{W&h6Nc$U}^{k$U8pBv-78V_B$wDv$N1Nu5G!8~O z0034Ei=}af`*Gs%6h=G*?@198wgF(Q(*B(ksc{oCgD}`f7f;)lu@x1nAe=`ImW%#U z*t~nU8lA2G*Rl;;RSj!^1pvquvW^ikyBs)hpxIHm+u)W+qc8n&ywG>U>4?>K@|U)zc|#2 zcz*{2)~{a=2M-=V`cY@wUs_s(;UV!Yr|naRa=9Eia0SrVxjd7Tn~EEk=~`aiBbRS~ ztGQ={sDABJ-Exp~4k*pJ-{+18ehOE;;6=W^o!UF(j^F+|ctx+^@&2l3KbQVS&Xh7U z>TGTj5tfXwnSt@)JVVke&GyZYAFD?C99WdfikP^V#oQ(ytueJiqk}mH=T{u0#Pa+6 zQWM+vqxgFcAtPpHMCRM|daYtv5$D8$6FQ6yI+Znw1b3F%uzkYO=_N9zIyKHcdH1!;@fm#779$?!x3b?^tGXA4i4<#hqvV^@p~@Bak*d~+G2w*R2&D;( z?Y|v7c)&4&jCFuX6^u}sh3Zs6CN%1C30q|N98GzC4!frHlhWCX403ZNKL_t(# z*AJ~U7!{kbC;Qg3ff0ez!|d{Iv9gwKSp2}j>0jh6QlhA0JRnOL72Xi z*LJne&ApjUJ@qs=aA3a`P}k~c44z+@hvA_SF;HH2-lN9RxmOa>tpW`@E3W;`{C2mrv?aKGbOEa_Q2-tWNt=C|8_ zZxN8;p?=Ft@JPqlFh1veZpq0k%@?o>_7W&i@5k4fermsSO?DYFBT76ro;->>Zxclf z_F;zYjukit`+9^j6*9y_Mzo9u8j_8oz*b|_ShE4Q{V3Q=JNYoDU$G#;EBQEZU_W|3 zrejfHkwnR4vNm$!9MRPETuYa%N|z<4Gf;6=i5St|{or@ttpDJ8rLR4H3??Qfko#p&pxo0-&kU$87C|5AagdNS zh#5Bug&v1~0idm8#sxIUphSeHV~hO!R{$5D&m|&h6BdB8n0521V-CDJg%A;T(Ao{N zVnk%u!C4funk(wNEiAxJ>tZu3W+H;+0Vn2`99)3?W|jw-IG^pW*uR^<>n!=8Mv=zQ zx(;SV5a#$1bD9-%aLt%_(b5n?Jf1pm0_+c4HH3qGnWETZg2Y2+b%;IB%)-{K$#*=F z)x72w@r;svZwYoZ*=kE2B__PiF3od=S@MAq5T2gxU=7o;sb{;6CnhH#&HLl9qv@4O z1toseh&u+7ckbK;nx+ZYHl!8=yQpPmZV~Of48wrqQ&XVd12`7|C^x5~^7Jf1LS*Ht_rANUZBVaOEYpchOw5AvGn+(&T^NbYG@NlVGOd3e zA7nD0H96XzMPtc|G@oH5BK!`c%IpJk#@a^qY&TQ$JvHAZSQ89!GV4Xy@{19KjI3c2 z4(z*5HUF;H4a0I{9_g@TI+*V|eq!12!DCDz3Of%CV|i4zV^?#U6|2Pch{0wVgSkD6 zeOJ~r8&9D-4Z9IpqqU5WWRcQJJ}BZr12&BT2aTdbOrCh+2^6&T^rWu?aw8vhJ(tTB z6zpQUe)7pDP{53V31=slBAqWSIoczYVZx3-`Q#Jm@k}Pum~yDO$D%Y#jU5=$1Xzkk zF|!{Qr|_)A2tqutm8?XFhuib8_uX`g_(&B?Iy8iMn8)6K{jKoO zPyU6xPd?X+9_LMo^162j@1E4uskue(DeT#W74EzK@tZ!<9xa&1tK4$=98{26ntgls zI>0iO?OMBT9l$~S9e9Q2L2pFJyJwIE@7TK?DP7oFGhas6`}Xd|_XQzzjTKPmbR8BK zXhKe9Vj?Hf0lf!XFpEv8%H?zD#$h>fzPbUw`SCxiWQQ9FW5L#38J&uY>2T+Nd>zIw ze+zkEUiJe3pqH7lg84;hdd3~NtQ2FRL$B|#yu1v#d|oI{P_-LV$EO;x8i^k`SZdt+ z!NcEz=dHcMHwp1FU8}knyxqLK$Hq;YVc*`p4m~&Yq+4bUOiwjdBU!UnK-Y#Dn{x2& z&F29Cz#l&KP$)zs(rH_qsjgn%;|=flB;56x4>WY&>_>IoxoVWXP6S&$YY#$1STbTE zBFM8Qkz#O`?1*69TsGstx*HKPGR4$&urc=pvl6VyC9GMIvg3VqEu+E6V1t>|nQ0V@ zD|nIR(J8S#I~qhld?hQ4cu-0+KU8yhmfaZSeK|e-(}!{JX5W|M10VlPs=>hQ0)I7? zSHJnA7V=>q!O7=w`|aJk2OaUjIy$T~OS)j><7oK>tqus&HKp&pd-tH{a*3WGcu1O< z*^kps+rVwtjkb#~iHV*2=%bHACX+!&){jmvc^c7w9lXl-_kI<=5&LIiS-W~bQv-`o zh91bnoXu{vTD9dLi*LRI2L9oy*tOL#ri5iO8K_mOjyjn28`i_#J$q3Sf)VbcM-DrH zakW;196@Bvd;I3;x8XUf|IjxH=~l^PG+4i3eIst~+3QQ!004R0s%|Wq`OcZo1^|Fp z?)YseM5Jp6Kr{{B_|8uO0Ki?hzQ0KhoU5W*>O`1A@lB^9M1;vWusC&mqygwp%q}uS z1Yh2_wOCUcep1v_a+|ajk)Q{44Hk+>9zfD~O01OTeQD+J3JDbfm?W6J^9w33^$lSt;r4wWf z$Gwx8{a}~gEkYSC`1VCkl4I0Ur|H4LK{B44b=Fz1W5*81HPvbjR#u!d5f&D9IO0j& zX!N!A<-b{7KX~Mu@VqsD##&`WS004aX*7r3DT)7G6t@sqnimq7P+M8uAXkIj^tM5M^;@=X zgfnodcG!hSh#!|cXJwe|6lIw+Z?nmDM z09y#12eCIoH_2(Itru+L8n^ReC6md(j{o=?4E8y7dH8sG3;j{DYs+|y4B<MIhdV;-5ZXZyBnIjb4Vtwf~1zX3v*mzQ1jU8_}__=?u|x6f=& z%i8f!>f;Ya{H}agV^Hv`pZyT`S~DwRFGD!=@YbN~R1 z3^;2$p4>N$1NPI$oup%S0UgtlnPz1!gXU1GIab$LYr_SyAHg#^-Hvqs|Lg$9jUe+-+065zo398rYB%#1$V8E&KU;N^ikj-YLavy6~ z4FIGw`Rb6}2WHTsOVPUh6(~V36wvHP35rmJBGiaBp0+HAl|XB#j<;^z+KTC{3=R&U zs}&wQdJNXCTZ_b&I$-LpHGS@v2fqftbMmWGrvD5vIJDKVFH0ldICXyPXk*D^gtz2R;n|0H6EhySVpY>#JGZY~o@TH?yRK z#m(a*gAUxxl98-Ht%$kOEQ_1jo`_uu*4!O^9;xZD-*@)`ydZwG$vbq-MmjW)#AA@j zcCasN-kZJeSqSOC6xbTALWl>ot2#wI*i8~!PT8BYDAbf)NIl9&|N3_Hz8DDR0d(G! zC9lQiB+KTkM#aluc$HWG#YY@~%pN4EkzZ;|PfT>+Z=WcqJS)9qNpNK-jd={%Ce9sm9y8ZhPpnHOt)330V zuAbaCjS>?zQOiaIkks~2e=p1}cxwl2_TzWHb5Vjkm$bm#^X8SENuq zC<)_Pc&(H37`9PiqfggS5_0755j4(dStlUYvu&OK$1`7t=b!Y)Qr{5ebgiJD#ansr z)KgDGL9w|IfL-rL4j*a8_jRs1Z|FVKnj-g&jn9Ht?RwPPM?^VgD}-m+_rhuSt8Kl% z?Sr?r{{Fce-|2$aN)9Z2W^-ncJu$GoNlaKGvTCF~s5Ld~%!=4?w3!uQu{1mL=}eZ4 zG{1F@!O?6M&cxDoJk4Th^Y855Bf9;=)=tP}I|h+yR!{B2r*Ca>As&`&2eFGYwGr2u z2=TD&%+4I|@557!yY@Q+^~Y|y!wJMVqrhpDKe_6o4gg>W!8Gx}Hxx93qzw5;;|ir8 zxa^Y_(kBWGsN-RikEF<^O=o%5JGCcBHk*ZNwJOId6ax`bhfEd(z?uC3V3ypii-Yo{ z3cZtjP$XoXAPH&oGj*c|zdGDlwBY=;uS%i*<@8>!JN1qgscUAE*RT`rCYh<%;G3Jy z0RVtM+WAO2V~!vJeA{0(7ApGejql*z&nyFAf&7`LxAE-`2D6)45j(bCHR{ZYm~|om zw&_{OrhxzeJDOzVOr|`7EvsNNAWO~q@c|pQZWY?^#|!Osv)#&MJBEnbj+SCHanfNw zpPFWc5sx!ZbIEqte3E5ptn9QAj}P5=TYKb!$x5s{>Ex!0fTYo=-%Y0N=hM;z^SYn>}-^jiK48T3eB< z$P_U>i_MC#n+CFYn@v(+WMp=+}C?aIh&dN&@|o>yBUJ`;ktkN=>wiJsA=XU*thR_ zW)|`}r|#KBMKC!NHgU5bZ2w2;yk4)Tf_$4X!7vOW_TbY%pZB~A9AL~a02UV)(SeV{ zhYm@RkXpSCy57+L!_)s4&K-Y6q6a|y>K*`KX=xE9fYQ3JwRQim+nx(Ad;Hgl_W@@= zhtK{v|NIMD{jP=dw}{6XNKyHWTv2&zPMYn}B=J~q5|5z)V!siScrf?= zz+Zi~=|tAFq&d~9TCvuTWQe6khsb3(lOtEW@h<_Ov9mT-q>M3kQ?@sE$sHQ92E0mh zBPMg{z!vdXhwER<2~MI zX#2u_aMs{UmHrvsH~IiE{U6x>bQ1?r`p?+jsn+a=2jK_Lxex#VF8R&R6Wb3IizO-j zU+{cf|5smk3jhGze)F}i&ot|++12<=B4WqoCK1_Y!{igq=~+`VMA14^{;+x#o)y`_ z)QYex*p3c1$jFQ>88DAbE8BG1C}`)LnsPu+WtShdch+OI-l<%fUYgy9e%*IzNhMer4ol^!Ub;@ueRZSIVTmR>LHWz;G-3QG~K3 z`|+%AK1bNbo$`aAVo{Y?>5C;`etdxE2UTJr7WqDTFc2Ha=(K?egNjAr+JMr39BmLM zKhOZ6QVG`vx8HOvViO$iQd?3Sk;UrB%%q_1J-19_bzNkC4f=u9G^=^XKvYooo?k98 z&h9RUjys9RU*7P!NQj4H1*pIPm%EeMr*oKr&c1$ol_>T$L9hL|S0{7azfwW%xQ?@% zxfeU2#lZn|HeSv*j2fCzl(m6ZJ7D*zR4S-1QFaL12Ht!@ZX!~>u1VRGx_?kM*tv5L zWV0F2RG~*K1j~M4cFRaC?$EqI>U?^d4H;piVp2AX7bEBNEDFBzg*;Rd@Kr3X(7wQY zn<4Pcxm*qfz(d2d~;Bw;;;cP zCfS4hmaW@J5Zp-{V10vGZzpaCL#ltyW_6T^m^P@@aU0mlpt(u1!v+T4FPJv4+u<$m z`@7cPzwp=p(}JICHX?#8waX4p+3_{Cr^v*}kQKWFy{8CUE5hENy7x$5p-Dta2+7e4 z1Tnx<=u}bp)XcnvCAMEYnETHym83cmjCkDecVEUw5{Xr8)67^Z`X2+yHp z!L3WY0U&1Ena*eL80?>Da3-izyI=q8XFo%aPfkukKJV1g>NRVm?9kgAj2-y42+|H> zHZU(N6a?92z;;-(c1@OkB zKhjND)=dn+VIeS|qx z%wdP-PVO@9U>N-RLcg|<^@V)1ZxgnILEGZ&vvE7Trd6>1aR;8R*DK85s|=ROF=U}J zP4}n`Z*Om|o^_UE^{gQWo@dF3efs<4Xybj3&y*bZ1_0R1WJL!1oLE4&$G0QRsY-U0 zo+Us$tfPP#hmzPAwcp=-(K^v0*_WRure7UlrdgTyzv0t&kqs_z;vq2-8)iWB43;^L zgngSE;I&^fF)@LjPc8B4)fP#$Lo29B+5*#u-4^C4vOd9U_er(|T;F4QvS$?4bYDC@WoL?BY zUuank1;4eLf%?UZUUU&kLXIClPLdGX76uxlN~JQ|S2T*~g8;uq=VBBwvaU62W9+u5 zHCJ)NY;n;=a<<^v0qZYHrE;_1?m_z+{D~jW|}$MU$8iN`#yYg!->%$2D8sI{a)RH@f+tmi3mV@ z1+C4*^eo-}Lab2Ph~qA#!+AcQy`Wx-5)tBI%8j>vB{1T_j#DlU0&mKJmQG4()nYmIICbe2UR9nc{gR;f7A8%}kealC#b|oU_ zzq7V_SCfp`ar2Y=@I6H)h^z>hWCS51cHGY{<-3{L(?mOIM013xEoaDOJLZ;f!<8#| zanHI*yf|r?*k5F3p(IQ^-u;nV&~wi@_gu13^!3U)%JK^3Bn2-}hX`7F1VO7rI0^k7 z)br_}bwt`8!F3|?_MkfvWse~2Ajtvs~-7TzCgmE-4h8_=)2k34O<2`V``9Qn+ zOT+_D@<=@F_s3SWde2AyE;8a_Z`59hhu4lnCbiGYRFuml^j>)aw3~s-{@!Mw!oKI| zkt68wpgIn-^T3`F75R`Io#&Ac^gCS02X@WAr}s+PgZJ&CHZd<>URjpj0bJG|yn9gv z<~)%dVdjw!S^Z|SS$bzXX_%8P;pyOsz0=%2jg=ylp$GDo;`0*ochh#Vwk7+WzJ3z) zdda?GkFV8gWZaVVk$N4ULe;B!U9)yA33?xWJ41x7?Fl?qBisAsP~V*>yH?A^D=VGoLk zQ1)0UE=!S+{=NZ{hOB)1-)qxp<04TyLIIb!7obltAC|3r^kmC$=p z#KR1nGC=pp;Ug$SphghAk`HQhg<9IMLM$&>tI#?*}Y6gm#zUI16bXF9HM`t zZjc?5meJ6aM}GbQUQ9SJFaZ7icqj0zXFV%0Fx21IPjs4cHsRT&kk4Dz!Ed*DokQ$1 z9&C~)-V3)0wL;hfM1g0c9cAEw@BE!&ARZaWTA~o$tFW~n2Gn8w7dJ66irUOjz8-@I z$m(@s307kH(mLTMrBaEE>(qvcvVPLjQ-B&W$K3$B7+TXbbgJow4I4;b!8XeS0NA~2 zcOdc01iiFPYEm{K<5!6u9HWY$sS$R*O+eTtErN~OWFtKAv-^c@vU}HVqE9hmVH5i` zCV$T7NQEcnMPDTd%at2Z~ z{3Qq?B7()J!Y!U%es(`@mw&qL!$^Cq5Z{MS+d3>eJ?q2*`JN*~&UT^$Xg1Pe{m{`N zym3865RbJ4@faP%(`GXZMYMrXAO5kM{~;E{!?9-rvG)frgCGlV{WNy$`Bag)TVuxt znFonYhbX&*5rnAG?@F~wq{VAeb_oOIQg$JydywSgezLxTx>r;_6O>(e_u~1C>=cmjLCc6|Cr!y@GLXq+q>~vc`5~qU`|sx?1Ng{=2f-EJ{Lh zxja;x077#-hw`y9396`frdF-u`#5o&SQ(32Neckrg%@3ff~v*EMY5lH?6F4)z-t7$ zWHAPI&E;4zBBJX$NM&L_H+ihdorHX)VJ%ih&(p+xVZX0t}MJA&=+B>zP6>XEo#rWVOv2qs2E*HJ% zMNJG~washa`d0t|aQEjv>>wJV1?wiBx8rf^^sH5_zfX)Y)3a>JjM@1`2dB`F&&)fb z8A&?!pCFaGmdtqI#N)(5QJ8VveA_>f&)u+LBN6zG=Kt%y0f`+nSQ>1p*)Wkk9;!x} zTXb8lSm$c;((+{B;Y?wv5-UlWjaWnGk!Fcb;mIerH%1FruNKzT#*NY023tj`ZJR7& zn+o}?GPTnwF?BC!+hBHavyF^hc($SJ5{7Lsy8r+fTAf6Z)M%qlY;4Hwuu1!f*+vrp zrrWpEwt4EQJ%O)Oq(ok*+K+So`PmXaU?8hoXL{Nh%h<9DC~w~e=$##^ngkT10Q91+{t`+uu($|xRi zC5K2%(~16uH}#6L&BYgAY{3H}vU~S#qR%nQC^PH;03ZNKL_t(6cpxm>asaI)~ouH)$OlZpBc>OKGfC+1~{$3K(z z*|cdRG1}A~)wj3nAeZy3lxvMq9Bc%)*`PC;CR|@ikq_5kgFN4C%o>M$h;{^KgO=4D zk9?pzV+Xv{YNdpaqMN}+=5d~hA@PtZWTb54Mm~bFO_cVr+)rbDry~6O zE<-OtLK=OKM%bo?+J+qX;@F1jdm6TRQc5?JeN6q!*vE^>@;!PB8`y0_5fMtvMI`#T z_OaKM#d(aWaOBQh&*l* zk@c%cJ}|?Ok(tFJ=;Iu+@GwC@0O$?y@h={gIP=o?F`>noD zj7v`gj1J^xQIOmC+Td1!tJe*BT8aG{!<~dsI^dBIS-mwt?naJ%c*HIk=9}-)8v~RM zkXf+c1TliROb)V;B+*>Vh9Dvo32F30lzni5$l?T1`!xEYO=vsh?U56d5AjH1w-FH@ zQQW$9D?vosWek7&;WxW}qb^HC_Dr?@ezu*AG&zFF2ORT;*ldUWQ%{y89@I1|ig?`m zrEj<@W8c$HTmF6Q=ur+p%n|soLJ|;j`U!O$`;D5Hy0k>EXHBh01OPBJJcJ%Uu>Sz( zTd5Vas?rX+YSk+8x8A;9?zKLjChEU4ll%mUD}InKeyib4QXW_J#vg3jc^Yl&MZm0A!^*? z>~Fl)g_f4^{Sf;5`#gZ!gX9PRZ{LtAQRK^Sq~o552hUE}J5V+>ey5yzDrdk&Bf+CAc$%J`CI?)KD@Ey;w`T1cl7v*NRW#=1^R$hqMFXhg0CYjU zxuO&`T?JHIP1D9565I)1thh^nK+)pf;!r5=9^8Vv6fMOIl%mDm9g4dZZ*jLj?|06h zJ=vTj=iZ&!JG(PGJ3Einn-MweOKi)HzB-L6T^Wl!5odObH*R|FW2(mX^}gd2$sC%3 zyrno>qkB7zLzcCS_yy6&kB{gI^tEkmu>`(Clp3;q9I3xnhM!)(+Fvc?w^G8Pm2c-4 zL?0*~zh;zM(~uX`(px+I1b_S}6q~`C_`6bk)=T~Hd=h$}P1B{xUr5@v;cXg)b!II0 zoAT>T5Wjx3=y4LGm=CqhQN)S1y65)NNK9@B4gPM*{pXXux;Ytu1YWTwet^#@>98Gu z+5{Ldkw4j%@#v?SvGsgAZUUTH*!@iNVmc|Nfn;tawOH&G^ZGle=3FOn`14PXU_4>th!rJ+Q&_g9%kK*K5dhh@N#cA#tXr4d0Mwyh zL+A)yH;<MJg%I}EYE zd!1??uFjNEsL~3Q>hOP5M{mfnLqF-`$S6BkuW8_493sm*k{lyDN+kc3!(E2X#S4kF&pg)`HP-Yu*7dz_l|`weXWO#*zcZXe1Gbi_gi;lU{T41F;COe zm)I|8@Q}MpM5UZ=GTbQzW!tg#Nnr|F1S#h1f+*B!;Bi9>Z;-QmH2d%7p4fSD$FH79 zKdt%tLf+-p6}Hkxb}?acBsni*c5&D4KJ$(_&OB|dgA)aCyf;mp-1y36w5dEaQdZZK z)I(|+9uc#?fsBV`RwDVWP)A~AinHY2HZKcLH_No{*`9uAD2d(1QZ;Bbu=`Mhh<_>C zJCx|cmoko!yuT@$S4%9ZWbnvf{g+3;JFQ^}vMYq|NB!wYME3Ekjg`E+SjOTqheDwF zWU2?&{C6H-rKuC7+yI}5%s@)V$R)CysySPQuA@e|JshGo{Fxi4tg58xgIKJiHaRjc zq?v^cHLHpcIwFdn2AFSx=9(A_&p)RBL|;R+PBh&jVVQwQ<>a!?7uX606^TeCQ%jwj z!%{d}OiEo|g8xZXGV+Uv9*@o6N&!;8;=E%CnK!(+NV+_={c@DCasRRDEc&)6UVZVA zkw(hFB%98MvLTj>lJxJwOozf?AH^(z6J_j)8P9M`RgUM3@OeUQntpzoA(A-=>Q3Os z{xX_)v-do(EjiEJHl{hx`$v!PsP0HX(&J7x6upv(fYf)w2M*)DXsuU8GyD;ADAnQE z9U*9Lrx%yRf*l;_F4S&#$|x;9=GU)*Qy}#fGZE=Y=odbNAGhOE2|g}&3|iQLLO8R6 z)GDPpDjQx8X`tzM7yIIdke_pgS$2akR20wDgokl^(i;v;A${i%QR2m_#v@~T$6u5x zjdgkc8c$7oswaHpqeLPLT=NLAqR#>7@e?sO@Ti%y$JUK6AI#5N#nzD$asu^^H?-*< z?9_x~t_-&EeM~G+j-)@EblnDXC?5TJDm;fmLHOgB2(e7am6)QClO5{$!O@jy<}iCu ziHj6ZJUfe+!En?blKp+-wE3RQ-`iTpXk{m8nM*Bz-=^ehfjMcGgH+|nz@ajDQ7F6N z9B}(GQi(3S zTQ%1?U3RACQ&)1_hzwhf?W`Sk|s;EZrqzHirHV6B9maDmm|FmoVS2Lf%_4 zW)NM_MX!unl8*^C`69|Kq%@QDy7YGo934^r@hzF3x>nVDO||}>8zL0zeKX9Hkjptf z^4{O?K>{MM>QrlooXs1x3F%VN&xvLwCLWv}fQL@x+9*Bt8z?*~W# z{L#bmOHIIyL9~uq@-}9OeV1%X7oLII&Cl1p`jm)1$x!>wlB)XnMf5?>)GCg1a5h~z zM)68o8u5&z_sv(HXrU*0Tv`~ww${q^O>C)P)KEYy?7h%XpC~1Mc@1N)oSbX3AbyRd zls9>_yf_eW63}`7V!bJn(a|fDSRzkcR{zZgXdmA}3OxElkt1N2C(m|=tInAyGWQLY z1Y^<5uG1tp2W$Q(G5A6%0cK6C{`ZM8MBBRELCt`!?Crk%m(+9Ooj!CJZ`eBj0_)rb zj|L(Aldjk&;l@8I`TZ6`MivFlL3+@$&;%iGtq=huC-1SKrfn=0rPF_Yr=Rf*rH^~? zMg%I8yatz2kKS6f#$9rl^4)pQ0H?ahcw`)+B|`{8O`Zs{ZxX20C#!ez z@z-6oFcaE|W%*zI)xu2EMNTM1?$@0q9qrm`*9=Dd3|Uvo^40(=i|nWBBDC|ep=YKL z)B{CkT2BH3e#9tcQ2J~)-#bWhsL0G>Boncl>|CVHf5fWy$vhc|`$W{?lgyQQ4_qw= z?c`maPab&a!Y>?uBdE<*8O11@5Mac^UZV_xB92DR2AZlIR01Gk0sx0 zkSE@@7?(b&+-KMRS3bIX+TkZU<~0&}$eb_hw-gk($Nb$+F8N2YQarcc^V7%>s*0aD zL6}&!^XY@Xs#)s93cT{RNX;5tBL{6r%<-()>^rfLX$au3G3_ubIv+XOQ;m2I|1_Gt z(Q1qt@FaB#jG?DRIGegR@oX?E#ehX;cf%pgEJ~uYv8s!vJ;_h3YOksH#=YaZl|#?8 zcJMPq6SB;_ZGj1=dE02)w8w6;C#5+CNdS#UR!kGiA^Dj7TFTZrUl>Np+2LxH- zs<6pB`Q^~dHWOfM3s3IwRBjisOb!$X0dhF&Z0aNdK1qJ+{CNVWS4Xy%b_6{Q!1nmg zLh_T$pHTW61|j+rW()Sv$o-#WZnvTdGY;28>j%TLQ9f!n*D|!M<=Tg9DWDa;Kjm@0 z4RoiE-VSn0KU*DGv|f|Y?#JE!X$P=uhK>NzaQ`bi<}#^4eZyS=u{rL@rQI6s%j&2f zUwCWQ%m>RH$}nK`w8r+C5t$SbTqV?9Y|z3pm8|o)@E}tzD1Rj$4+lsGg;5-d zAUz?1*h_4y(5!z=_3m@Bl%2lIFT&@~|J7g$62YUe1hlBQdaXfz2HdZ5h&rEs7cFb! zk6d|#MF-t6(5?xd{dNe_!6jnJW=_**%ORptol&JgL`OVtNr=q8Si8B{{7bOR`secI zD$|I?$J5f7ZszLbn{}k0<(svxG@~_#qro4J#{qr~?2{$Awf|K|2<;EHLd!bt3_X<9 z(9S8JmD5#L_jSE3O2~dYo^k*4b0xbF=GuO!SAfz%8z}!eTLsf+pw3fEHFcev#I<}4X6%j)l0usfQ>Vx0vCjzqQUaW49K zadW9I+^YhZ)}LrgA7>HBBSr z#bps}$rv1W7?3;UR(lq|tOH_hmDzet&u!i144-04BHp2_+8^tz+OJ>&D;U>%koj{7 zB$2TkP17hl4ZCc~`UVqBO5(!K?2m~nTbAb8^@-^+j2-+YN-$>{9}~v>8vkBFr|TSi z7JaVooatc-%#MA%xP51^NJ`iiK0pYVQc@X7Ddk~tkgIU(6%B1d`^w1(3Yh6Nb~wg5 zf?7(hYW6A3u!?i<3|6o80o1QWxi^{3K1r|kv8#Ld{m6D8#>8jHbZoqqfwb^Y5}@I` z^!5fs!SrhP1%5Nh$hsT6%MvO~(oz~J1{@l!kq0dDCwcO18o9@YVam9x-xC+aAG=(?r{J#Hlp8vR0fjR$V z2eW<=G|JlKw|v{;!fYt%V?5rCn+5#$61)_1law&;nrirV%A!!pGzS?)os%4M*CkT^ z%4cY%mTOyb!k7MJ;Qd)ok5BMv-zubXIFi(vVxck}0qRV4sps$=-sgYZ$tR!BCc1<(n3Ytn$_>7rG>XE@0Ro} zN2otp{9^SgL`Iz%5P!tN2X^)`IC{`HcDa{Ho|0!eiuj9bn=WHsY(*MICj#=q(v~!L z8T6%y7f#UCp5Aw3YH1_-dcpDqLCjKrqCi1M%mF3l=Lp{^FNrG0R>A=#wrx?ndozCYjE&~n-EE`>fNKgVL>yF`CD?}j4vOpo5w z5i{SP$#C~Fg3OS#B$wWHN>x(UfgHE3_8n8m^@$z`XP>v}1LTHw*c=TKg-MEH5VZ5$ zqr;kT$J~>{`f51C(AD25z&;9wy>S_fXj(D|gL(I-nh}2=1>)DE_2smN3q<%wwv{ri zl#2}*^PL; z6ZDL~6V8xYP4aJKz)<45*1LMp*3wdagPz7U=$s%g_jxf(@6D#36{%9y9d&&r4d_Pv zB5-DxcA<3bNcza*1;X8S*ACaTj!!oh`-k`RvH0hYZR06tz`=lgd60kPUK6fS5gP57D4=?`x2m!K z?Qyr=K?U3mEA3!khCUGC+l3(Y8usPd`MAxy5$trynDfgg8G6b+JXj~Fnm8#yPYW^* zZ*ZIaItx%g+?}oXdGidcX#kzq_0=R_Dd<<2)dVr&5S*0ic2%D?eM0qS*ezCy^ZPqH z#(R59nA7p64ai3)uE}g}MfYalwQ5QS13>9=F2OPN5MzZCEq% z@_rgTU0vmKv$xcubxp^NU%*S>M(oD--vkzmCN19c{nGhk=n_180t3h~D3z3(2Frzi zb$s4&H}uUQB2(~j|XZF-^tSoQTLNfvYKKD_E_nko&AFMJmLkb^->{^LG zlolk8nGHSLjlvj?l=vF12wr6zE7x-**guKPf1hEZfqF0iGn3YhG>QZEBOOr5)@B%wxh>6Rs#bfnBa()VJ;^8zv9w zVWt<~5Pbd!pvb(VCXRc23aplz9UrE_B8NRtWA2MA)g(HsSMBzyh&s4Q?lM#@0Xn}O zNw%n!SfyJeU4KJBoLr~{n+JV-3tL&Ib-bnx*v?p)X)CQH4?(6n)B8San6U(p226Rz zt>%)1%Lu8nq?>&=@z2&z)GY1!Emp9KOL-$(zMe{K7r&cDb->f>%|waFj~&ro2`>aZ z2J;|9G!z!@BC6n2ayCni@F*t-v@^wITi zBWMxL&v=3?@y=c9Xsa=1`25%Nz@?J^B%Fwquxo<8tn7Pss^z=2+;T(?Qt1yojbt~t z&SdHVU3+==&^J13ePe9~+k9!j7LI(6n0;kVJ) zlhh4u=5bP!$nu==g(QA=sHF&awY5DfGk(7U>E&V$b(Oj^)|g8Er4$xb7Ite9W9GQFa|GcLCv;d>DMLQ`2qx z*L_Crwo&4oAK|VvyJ4Jj>`h&#B0ZE5NcP@;0q{w|365%lO2=16ecYr)3&e($b(%<| zCe0m=r8=NN&N+u*syZ))7s$Grl0g+AF+L>>N!2%^|d+{aLLN|QoERE=sqFSq8Oy;qKvbk!na!DNnv+V z3P%=PKIS?sKpP_?+q45l#lHcKSjYWGd-q*n{fo#k)0B#9quBb{)YPh8Uo|(t@(;#%O1S}Ve6%@g z}%i->*;qNkRY&XYCGO1@h2sNbc3Y>4i$1?K~d zKaB5}9*-KI)p&8&_MmHCSYYFPpHC=Ukl89+KT8Vbf86@@SoOWL3@6f^T-P316TKX> zN-}Iws_z$L?1kSsygQ?5n>@8JM`FUJe7;}1TaLV>j}uYoTaCXmj3 zq0W~oo8+=qq~*T`b{si5R0jJf8>5IK?&X2&qHmz*pI7Wu4?M)?MY?bEaAaq0!xRP) zUG-qWZ3Qv^9}6)4Mtkq~9)8(>G_8y>aJY-n`JjBjSxr0A&T}*5Ok#3e%rSZCZ zAxMw5_76UG?oy*i9GsJE@!^p@Vitw3IKuKAwA{9r*t04}#HI=ZNW5=oX)gjeh#b#& zmMj-T4n~T7?0|14Jo>g|S{6b{!OZCDqGvot966{O;Q-0|fef36y&_d(O>qO=AtJYw#8;d77UM-1+n{We~JGpuHFUA-K68rO? zUc&SV`=tZX3?xur8AyM~TN=n!s1aS? zAQ*dU5Gfc}s;d-CEmTxq{7$f(A$zvtd~*flDoBHcc_tOhoOb=S3)zPU|4gA^Om5kp z9>|Of!ibFsN?2s_{`~%~5Bb~2tY_|lB8`Az+=FZ1`HoUE7ZzC(OC9fhN__M%bu2`> z4)r5DQ4v%7ewSOntjx`z#1cyxd!FDs)!nIhzm2v`Z+}!&`u66VRs={edgSyj+b^u7 z>oXDK40vcOOEVTCDD?;dM1_W7zyc*@kKcQwss%Ma;S%R(Y2pc4E{1(2qNgPKMpSWX zBaE+@AFWM_v4x<80)eDj7U$tgTlAE2RQQq<^JoPR0aOl@v5o31qjI^T*pDj!KE5AR zCGee7wN?#H1mFDGom3b2)et?b5_3s9VGxM!Axp(ukefsGr5*VZzjY=e8!4eb{9pE~ z>Wh#GqKjD!W;|&cJ15jUgq`ySucPke6`RFA+?X4-yDM67t6DoxoqA;W@S)8(y0-pt4Dheydu)-Z|ufQgspK=cA>T#trD7{2{vyqW}PEL0QpT)eW=A? zmtYpzLt+6FXBY$DmfsT>{e~Z|_Ey?xrpp+5s&Fl>*yD}JLv`RRX)a*uFQRR{+`p2a z_vn^Y(($=}n%>Ah{79^$<(-BSy14Af`@4n0aE}b`bX&f{dlh#?@0*KsKN#1~7xFtP{Y*4c zMiDRjFbZV-fd#fF?4DSsyBEs?7$?iE=)I9=xY)4&HzW6jHv?u?=$U&O(EjcP@2I{4 zi~$mKK(Kn$%>S%#GCm!{Boph*aWaU*V;+-0a<`gP^GF3tsz5Z~WtEA&3ML~5@<93{ z)ncD|^cb@4EyYZ+OkVKLn~f~rll zVMzG#u{hh<_!#GLgne%q0w}*IL#2z@M%kFV(b2u{1PKZ^x9r$ttRx`CA~JCPTYU(( z7_<+G(V-{&9FK@!Sh|4D3Y1ejth03hVr42NR_qWdjKS4`X}}CWhO~J&+|t%>M()Ez zqN566Ew;x%qNmEH;L9_pBiBm-erx0vkXfn^01$zNUsT!7f?1gE&fc~|Hs*3_K`=;K zTi8gl2E>o$=)$XckXyFR@F*WZzy&wr)8lY=jY{@Bb}yuqHo&0dyzrJ-yl|b7I_JI- zO{e%P4uwj4dungL^c(xgD~^ho{mNsYhZ&t-r8dy~l0z*Ipg0M6&OLfv0-r7`Wn6J+ zS8DT^UUE>?K#WX>1gf=xyqvlpGW<$*5dfTb7;}r^nPCDYMzw@na^|Xcn=H*E_+Vj5 z#E(4)JvzSqh_r@F3EEkcaRpvg=$MuxQ_NQ-Lk*biHs?L<%`Re7a%6)~1S74q=e*+| z`2R7o$G=D4b~1q@|cudT)5&WlyyrPZ>n=S zX>G}vY&M;Be*!i!L*qrP(pZg~d^MQ+W04fd5Ty6W;xm)tN&n%-uLRFCTE;8dAPf8w zP^7bb=^I87BeDrqnSTTEj4!f@c9h$ z!|kfxWzP;;N%0>Sh@oMD%)D^pk&!B_BspG7tXh{ouNJuuB4br$38chjuh!CjUJW}k zn|lx2pwRhcJfFDETxzdy{xUl3(W0|fOEaV#o##rt9RLUiq|7Og6s&GC2)K|d>eST_ z*B9o_wgS1a368WmWT|dLzsec%(OtOodT2Yrv}&8SncW4$E*=_x*J5Rmay3+L9!D);c#*5LcCqXcPwdaG;(Ma8G75^tMRku1MY!e(_Y@ubG8WUD5G(Y zwuw}>G?WsSTVxDb$!uv08}j<~{B|Pa=hzujQP_EP}de zLmR)^%Ugj&A995>rT#MBwS>lYF~+#N@q`S;SGU(`?3vfA*8SlIzf)&f$WWCXsp9LU zJvTia%Kg9gX1v3|L@}90Pm`no4>#-lE6E`~S@7iEKlb!%yPtgg&&Bt{rKW#Du?lya zC)am%q}A^;UOdo)tkI>4HRt3pxYs*WC%q_``+F5L!17&4i&gb~$r@1Wn2AyZ?4t|I^{ z(gZw2!jIAvxFr|pX-Ya=;US4LWNsChK+Qcwx-{}qS!o4SdMaSV9l&x88et!Xut9xp zZD=7U4O7MmM@ZWCzx&$v;qr5E{0Kk&Gjghnp@DemS;3ix*xis$`P^xRHY@8OhXO{k zE~5>zEFB{g#_(Ipkb$I0Lv8I%e2(Lq`m>v&ZwMtxgyJm7FPrCrn4n+tTx?K&GO%#* z5`gCLyp;`a?p)ZIRMAR${TH?ZNthN!SS4%NED1zdsaAcGM3j=Cj>GQcT^Ky;LUW#` z_CjT3k9@~j(uYHxhNea&L=3%~!eyc@vQ{d}scCES7EB3&%y$DM0+VzWm?D}a{&GV} ztwT0Y1v$j#YGgzK?IG*!Xr|o&R?BhRzZr=PR+2bW$_iG9B4ARUrLx4yE4qa?l-RdO z<^|6)gabb15-T;JUcY=ZP0nsE(8DLlr1U~Y)cz-kN!hG1^Hq3lZo;~`@oroJmp(7r zilVYZlDrC4hS~dRe%A>V6`{ChB!vU-?VN1L0O7+I*U&`Xo(~!9Va~p#i5*ddvQ1E} z&p=k@b}8_gOJf7Fe{dOB+^YUCCTI|DRWLy`-LOD5J?LyEcg|lDHNwLZrXaW$KLXW= zb+a)$&{@;X=g(r`DV`B6HL-iDdwu%esW?+PVl`1;xmOpbC zpbSr16Gs6H6N^3uAJ8=Q4iytUN(u+-rg5Foo?0L1OLMaQA>w_t=gyMj#8|RC=`0fq zqopOFfHX;=gae6Wg&^F~f)g_e4$FI6dePY?MCE=A zi(Vlac!h)cH$VQ&QA^`7 zW74r&%0y#<6H)!I$Kz&GR44vS_!jB9_G5xRBRF@XKS2KAfOxXXSaK~5ebdZO(b&v6BrWk!%(?)s`JekTvnDl zeSfz|ImI?wo?4m$eV97iLTb#Zc}J}n zbK_6jn&Z`-+cQ=Ah7Oy)#V(etcB+)PAds)0FlK7;L40QsvZHK)4U%!Enm)lHFex7( zK|=eS9(rk6N#sW-(vG|ROY_?BAeR-k4>9BI-|-cZ(BnA_b?v}lwUU_1riI4?MFJLb zr0v+}a@}CP}LY8C2 zU|wH5ffgKBIRclyL_d_$@)IAyf=Jo2M3Bu`6mFq{F9a;dNJu{*3RD=<5;$3DQgn<9 z>p->+EWH-&+-v7xfUKbbz>x)_6@&%4IOD;D2q&zzk1iGs8~n<(y+Mv3AD~vB$TfA4 zQZva>A18mzDK+aC?hu)yNqdYX*O@4B4+nZ-_zbvH2^=k`V@TK08ScdSc52tsp+0bn z)X{JbaL*-IO#P~ITL7^^P1&fo7~D7Hadz+@`e-d?-gZV85OLMUFi|U$7bf)FTE|9O z>>5Y+FQs-6-^C}c(xE)te~xvL#yCpQd^_xlxMovJ_b#?lKAK67^Q^mBE5+?n3kNPM zUyOFb0NQqAE@&$J!KWgdf{6vEFWhpEl38VBrXT^0Dd4voFUb?-?;2! z9`-fQB_#Jdt35%G^T3LOoYoMod~+}7?SN7&L%xL+hNv!4SZYf=TNrm7@vW7o!sgq7 z=WXpR2Hjzu?`OgD53JC>NPul@bFKxm$G+nhA(Ad_|HyUNJ{ z8!WEE5+FzC&Z_e^fA}iU6%}P&A4u?!X-tYCEfq!xQJ)OCsSG>9Wo2W?JUVYV2>m1e zhm8aZH_R;opfdCB!N}Ow>F0kwL&2qnzTqRfdCoWZeM13VJcEV-#hOXj?qP*x%|eLg zmeNiAxOA|APtr=^z2B`!fx}86tUi-xkAM zgvhkZrzTN}KOdl1_^AM8M?f5d&8Id>=uabiAFCgGUHp4-ZEhj9W!$~b{N zJ`j>OVcN7ksBxT32A>6Gv7p$D7@Fh0&b{bDWUSEl)w5eWliQ9Vk3VD%iG3ks6Ny6q zvWmzI-iFscM6c}Hk@SHeWw;cM7+Y6r9znpXOKMPD?J2g4fmV}ptzj)4U-_3VvQ0WO zbz<-U`&=tn-@KatlnPfTa;Bn$bv{b=J9lE_m>+zxQrmgVfG!1DkJ~B4KW_8#DaLka zTYcR_tv{d1mvmB9qP_iSzF}tPmHoHX@!yHeu|uaH%>}L==eUgBzq)P=G?Llhv;n6R z*Th4o5|pvDYF*@h#9`_I)gi!2?%u(2 zTh`yQX!{y9C9NQ()Fpp&zR-incs;|;|L7uk^8qLSG)7+k#Dyl34Uu-0iH|4#T^xDf zuj>9UkNhts37xgwZu!>*2Q3vHYW^EyZ2TAk7#;+c@twSXXV`7h`R2U99 z6ecKf>{g5Qnd9%>GzjTrm201N66+W%qI*NI!RF*0%r}1gxL`x=!5MZ=jID`)u)DDi z+wH&m`9fz1DF0A}(5K!P^d>tgBIYK2G^vf2)-rQgcu%<&r@6a39NK<%5~s`^zgr zqay|-?5i7t7l$L>jT!A8jU8!SSnQVR-3&(o>3MK|4Pao~)OzT_XkNEv>VwKUuBIw_ zpMv=MT^XQi?tq%~KmvD86t+$nB0d;bh3w5o82#=nFA)m@yzFRr99a@`?WaGYK9%%E z^pTI!mu<5^b#3(KVE!U;wBH-BAL%Q+l7Q{q)P?@0ssND)K81y{2*MBjksi41=1du) z4(^Bsic&Wy)YO57_MfRUqeiz}JDJmAiU;fU*SCn_|JDb!$Bc>HReccBO}>5I<^@zK z-iC4?{O;_T2e_ky-uAoVKTu6myJk@S)=&%f<*etm^l_ni;XJtA;v9wuh-qameWBME zC$Ww*=BV38qN&;J{Ugf}p1{A=`)-x{gx)=}`Uqc9#G0FvM#kUx-`ZZwp%xx4jU`a;AF18hiZkM3;z3uNQJ`I+{)*0VwBo1Te!kNFTVp{g#oo4^>tZ{yoz@ zIMId2pov1F@1!}?BdSt9cGe(et9RItuQxJ=QK?#e?a7<`Ly_SK_S7|3+DYW!%Wq2n z%>I*Cm=UDZHeL`F2gLS|0~XVS3lf{gAOnXdp8Y2@92iMM5np*k90ZGCU#?*~u1ts^ z0x#$;5@=OrpYtr~-QnC)ljZUY$O|&x~ z2v?1=x`O*74CT}yoJ-Ayv?w}waPBdL!e+}EN0|h%@$RIM1v3HwQC4o@3BqSd?z)cA zYjurMtOlG*fT)WK(Y4ot?F?B4U(QeZ&6d*Y7$W$0U>>h*qpSC{GLb*Na7ry`W4PR_ za!&GHCs%$k9M4t$`Bgh#x$b^p<6qb7&Eqr=$t>wBQoc7l!Sg8a<0kp6n$W$IXu{I1 z8BV~m@|r3xQ^ieH)r*BTW0!{(ZvL& z4PBnUH>bFR8Mzjp;gf>Z=?GKUp}RA;Tf8@)=@~Ol1{VTXdAIC~286JzC){Nb3nVk~@vW5kCkdE1L|x z(aRWvzuU~~%ibHU#je5E>OJUnuEBuPQ%3bsQCwQL8(zoRv-*-zyu>l;!tW1ma&_u&p5GO(K?z-XZX%X(h({~G9>z`g^*QbMya@7_j zjHDP#&O@`TVSV9=R1XkCx?TGm$h!&xCcPhLJXPg8A%K5DI(J=lAcC_k`tq3y7dDA4 z2G1LrZ%<0}j|G}8lwz!ksb?n~mV^!;EA+ZXeZ&=X@#)nTH!?~!lvBr^=nA<^)9Bmu|1th2 z6?M3nXcQGbHlz*V(?vQHZD0RSWhuC0LO}|K&0VUVtmB;N9+k|VA)WBwP3h1=-t_@Ov)57DQL&jQn&R37M@S8hwXF=Oe8!)&VT{en)4?5i~aDZY)N-DgS*} zsc55j%TItBTr_5QQsP$nj?45g4HvQq&wG5+`;POEUd^MVA)^Kxia@X=2OOr(BgQvhREYfoUENX6-9iqa zBL>6sY+{{hWXx3LsC-wxu~@!f$Kp2hOf@q7lTb>AWgKVtVjj!$rnK0mWlBu&hmjG# zA9^OD{}I9+XAKj69rp3)-nxwa_!?R4x52j*bzYt8yk1~~?)ik5kR_yU@^;F;cR#$i zzVfsNe40L?Hs@Ipx*JGUZU|LY!+7u`1sg}y8BU@xxP3|!vV!lO{LF7}2$){=Zwl`} z>3!?AFG^BZp^W`gQW#7lo!1xw?E4)(a1!R@InbZk8X_-%P&O5;ga~Ft8zHl}!ILZ5 zctm)qbU6F=JsVHx0q+K|rHGbmYN&aj7e*pWdgmOqvY0#)(A4+$VjKOe(}TxN+37v$ zzK1<08oq$*ci-a+r3F^UY|e}r%v1Ol!oPsrK`6V2v{~z1$o|T@A$kN*8$jdKOHi#CzAE*BzE7biQC-r4pjYyU(X~5T`ywO-C5SEPZ3esB3g#aQccVXrut0^?q*yH_8B>v=n!Qe;nxy@kp`UN>OjBKO*DY?bI^Y?uPy?GW4TJ#9j>DxEMY8RyI6ET zj2YlA?bbP0wqdsaE+GQ*UlwQDo7;$u#^Q0Y>rA>JYZ>W}Q0Pf52QRlD?%`c6ckX$cfsuGz8;& z|E=w}*xt6gMkch_Y2MEXViduMHrx;HiSrk z@PxzSV!aEvc%2Yfk9JDNaR{eYH(5%lsvX>xU!y@rerqM6t`!%2tbOhMSWn99;-c?apAe_=W>*9sy zVDs{PqRm2~$ibS5=FzGvCCxSLJC$ny)zOyIQ<;o*S5a#jc12qs37wQ`?3VONC_qv^&Or8N3{d#W|>7 z_>GjTu8Wjv44LKt-+;U{vYJ7OL=O-w&XjaWXCyyVfm~qtvXN=4xBTjR2mnzlN9j<9 zZSY@<)m2f^A3e6ToPjj6xxZueWClPJ48;C6AKCIc}P3q+`+{=TBC`kT1fTW)wEz+Z~*RAqlaOhf(;_A+}} literal 0 HcmV?d00001 diff --git a/mods/3d_armor/settingtypes.txt b/mods/3d_armor/settingtypes.txt new file mode 100644 index 00000000..c6c90de0 --- /dev/null +++ b/mods/3d_armor/settingtypes.txt @@ -0,0 +1,65 @@ + +[3d_armor] + +armor_material_wood (Enable wood armor) bool true +armor_material_cactus (Enable cactus armor) bool true +armor_material_steel (Enable steel armor) bool true +armor_material_bronze (Enable bronze armor) bool true +armor_material_diamond (Enable diamond armor) bool true +armor_material_gold (Enable gold armor) bool true +armor_material_mithril (Enable mithril armor) bool true +armor_material_crystal (Enable crystal armor) bool true + +# Increase this if you get initialization glitches when a player first joins. +armor_init_delay (Initialization delay) int 2 + +# Number of initialization attempts. +# Use in conjunction with armor_init_delay if initialization problems persist. +armor_init_times (Initialization attempts) int 10 + +# Increase this if armor is not getting into bones due to server lag. +armor_bones_delay (Delay for bones) int 1 + +# How often player armor items are updated. +armor_update_time (Armor refresh rate [seconds]) int 1 + +# Drop armor when a player dies. +# Uses bones mod if present, otherwise items are dropped around the player. +armor_drop (Drop armor on death) bool true + +# Pulverize armor when a player dies, overrides armor_drop. +armor_destroy (Pulverize armor on death) bool false + +# You can use this to increase or decrease overall armor effectiveness, +# eg: level_multiplier = 0.5 will reduce armor level by half. +armor_level_multiplier (Armor effectiveness multiplier) float 1 + +# You can use this to increase or decrease overall armor healing, +# eg: armor_heal_multiplier = 0 will disable healing altogether. +armor_heal_multiplier (Armor healing multiplier) float 1 + +# Enable water protection (periodically restores breath when activated). +armor_water_protect (Enable water protection) bool true + +# Enable fire protection (defaults true if using ethereal mod). +armor_fire_protect (Enable fire protection) bool false + +# Enable punch damage effects. +armor_punch_damage (Enable damage effects) bool true + +# Enable migration of old armor inventories. +armor_migrate_old_inventory (Migrate old armor inventories) bool true + + +[shields] + +shields_disable_sounds (Disable shield sounds) bool false + + +[wieldview] + +# Set number of seconds between visible wielded item updates. +wieldview_update_time (Wieldview refresh rate [seconds]) int 2 + +# Show nodes as tiles, disabled by default. +wieldview_node_tiles (Show nodes as tiles) bool false diff --git a/mods/3d_armor/shields/LICENSE.txt b/mods/3d_armor/shields/LICENSE.txt new file mode 100644 index 00000000..1f848593 --- /dev/null +++ b/mods/3d_armor/shields/LICENSE.txt @@ -0,0 +1,26 @@ +[mod] Shields [shields] +======================= + +License Source Code +------------------- + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +License Textures +---------------- + +Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0 diff --git a/mods/3d_armor/shields/README.txt b/mods/3d_armor/shields/README.txt index 3146bcbb..5a72097a 100755 --- a/mods/3d_armor/shields/README.txt +++ b/mods/3d_armor/shields/README.txt @@ -1,6 +1,16 @@ +[mod] Shields [shields] +======================= + 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. + +Shields Configuration +--------------------- + +Override the following default settings by adding them to your minetest.conf file. + +shields_disable_sounds = false diff --git a/mods/3d_armor/shields/depends.txt b/mods/3d_armor/shields/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor/shields/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor/shields/description.txt b/mods/3d_armor/shields/description.txt deleted file mode 100644 index cb378bbf..00000000 --- a/mods/3d_armor/shields/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds visible shields to 3d armor. diff --git a/mods/3d_armor/shields/init.lua b/mods/3d_armor/shields/init.lua index a24d523f..b98490a7 100755 --- a/mods/3d_armor/shields/init.lua +++ b/mods/3d_armor/shields/init.lua @@ -1,24 +1,65 @@ +-- support for i18n +local S = armor_i18n.gettext + +local disable_sounds = minetest.settings:get_bool("shields_disable_sounds") +local use_moreores = minetest.get_modpath("moreores") +local function play_sound_effect(player, name) + if not disable_sounds and player then + local pos = player:get_pos() + if pos then + minetest.sound_play(name, { + pos = pos, + max_hear_distance = 10, + gain = 0.5, + }) + end + end +end + +if minetest.global_exists("armor") and armor.elements then + table.insert(armor.elements, "shield") + local mult = armor.config.level_multiplier or 1 + armor.config.level_multiplier = mult * 0.9 +end + -- Regisiter Shields -minetest.register_tool("shields:shield_admin", { - description = "Admin Shield", +armor:register_armor("shields:shield_admin", { + description = S("Admin Shield"), inventory_image = "shields_inv_shield_admin.png", - groups = {armor_shield=1000, armor_heal=100, armor_use=0}, - wear = 0, + groups = {armor_shield=1000, armor_heal=100, armor_use=0, not_in_creative_inventory=1}, }) -if ARMOR_MATERIALS.wood then - minetest.register_tool("shields:shield_wood", { - description = "Wooden Shield", +minetest.register_alias("adminshield", "shields:shield_admin") + +if armor.materials.wood then + armor:register_armor("shields:shield_wood", { + description = S("Wooden Shield"), inventory_image = "shields_inv_shield_wood.png", groups = {armor_shield=3, armor_heal=0, armor_use=2000}, - wear = 0, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, }) - minetest.register_tool("shields:shield_enhanced_wood", { - description = "Enhanced Wood Shield", + armor:register_armor("shields:shield_enhanced_wood", { + description = S("Enhanced Wood Shield"), inventory_image = "shields_inv_shield_enhanced_wood.png", groups = {armor_shield=4, armor_heal=0, armor_use=1000}, - wear = 0, + armor_groups = {fleshy=8}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) minetest.register_craft({ output = "shields:shield_enhanced_wood", @@ -30,18 +71,34 @@ if ARMOR_MATERIALS.wood then }) end -if ARMOR_MATERIALS.cactus then - minetest.register_tool("shields:shield_cactus", { - description = "Cactus Shield", +if armor.materials.cactus then + armor:register_armor("shields:shield_cactus", { + description = S("Cactus Shield"), inventory_image = "shields_inv_shield_cactus.png", groups = {armor_shield=5, armor_heal=0, armor_use=1000}, - wear = 0, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, }) - minetest.register_tool("shields:shield_enhanced_cactus", { - description = "Enhanced Cactus Shield", + armor:register_armor("shields:shield_enhanced_cactus", { + description = S("Enhanced Cactus Shield"), inventory_image = "shields_inv_shield_enhanced_cactus.png", groups = {armor_shield=6, armor_heal=0, armor_use=500}, - wear = 0, + armor_groups = {fleshy=8}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) minetest.register_craft({ output = "shields:shield_enhanced_cactus", @@ -53,70 +110,130 @@ if ARMOR_MATERIALS.cactus then }) end -if ARMOR_MATERIALS.steel then - minetest.register_tool("shields:shield_steel", { - description = "Steel Shield", +if armor.materials.steel then + armor:register_armor("shields:shield_steel", { + description = S("Steel Shield"), inventory_image = "shields_inv_shield_steel.png", - groups = {armor_shield=7, armor_heal=0, armor_use=500}, - wear = 0, + groups = {armor_shield=7, armor_heal=0, armor_use=500, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) end -if ARMOR_MATERIALS.bronze then - minetest.register_tool("shields:shield_bronze", { - description = "Bronze Shield", +if armor.materials.bronze then + armor:register_armor("shields:shield_bronze", { + description = S("Bronze Shield"), inventory_image = "shields_inv_shield_bronze.png", - groups = {armor_shield=8, armor_heal=0, armor_use=250}, - wear = 0, + groups = {armor_shield=8, armor_heal=0, armor_use=250, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) end -if ARMOR_MATERIALS.diamond then - minetest.register_tool("shields:shield_diamond", { - description = "Diamond Shield", +if armor.materials.diamond then + armor:register_armor("shields:shield_diamond", { + description = S("Diamond Shield"), inventory_image = "shields_inv_shield_diamond.png", groups = {armor_shield=11, armor_heal=0, armor_use=100}, - wear = 0, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -if ARMOR_MATERIALS.gold then - minetest.register_tool("shields:shield_gold", { - description = "Gold Shield", +if armor.materials.gold then + armor:register_armor("shields:shield_gold", { + description = S("Gold Shield"), inventory_image = "shields_inv_shield_gold.png", - groups = {armor_shield=9, armor_heal=0, armor_use=200}, - wear = 0, + groups = {armor_shield=9, armor_heal=0, armor_use=200, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) end -if ARMOR_MATERIALS.mithril then - minetest.register_tool("shields:shield_mithril", { - description = "Mithril Shield (Warrior)", +if armor.materials.mithril then + armor:register_armor("shields:shield_mithril", { + description = S("Mithril Shield (Warrior)"), inventory_image = "shields_inv_shield_mithril.png", groups = {armor_shield=13, armor_heal=0, armor_use=50}, - wear = 0, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -if ARMOR_MATERIALS.blackmithril then - minetest.register_tool("shields:shield_blackmithril", { +if armor.materials.blackmithril then + armor:register_armor("shields:shield_blackmithril", { description = "Black Mithril Shield (Warrior)", inventory_image = "shields_inv_shield_black_mithril_warrior.png", groups = {armor_shield=15, armor_heal=0, armor_use=50}, - wear = 0, + armor_groups = {fleshy=12}, + damage_groups = {cracky=2, snappy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -if ARMOR_MATERIALS.crystal then - minetest.register_tool("shields:shield_crystal", { - description = "Crystal Shield", + +if armor.materials.crystal then + armor:register_armor("shields:shield_crystal", { + description = S("Crystal Shield"), inventory_image = "shields_inv_shield_crystal.png", groups = {armor_shield=15, armor_heal=0, armor_use=50, armor_fire=1}, - wear = 0, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -for k, v in pairs(ARMOR_MATERIALS) do +for k, v in pairs(armor.materials) do minetest.register_craft({ output = "shields:shield_"..k, recipe = { @@ -125,9 +242,4 @@ for k, v in pairs(ARMOR_MATERIALS) do {"", v, ""}, }, }) -end - -minetest.after(0, function() - table.insert(armor.elements, "shield") -end) - +end \ No newline at end of file diff --git a/mods/3d_armor/shields/mod.conf b/mods/3d_armor/shields/mod.conf new file mode 100644 index 00000000..9a956297 --- /dev/null +++ b/mods/3d_armor/shields/mod.conf @@ -0,0 +1,3 @@ +name = shields +depends = default, 3d_armor +description = Adds visible shields to 3d armor. diff --git a/mods/3d_armor/shields/textures/preview_index.txt b/mods/3d_armor/shields/textures/preview_index.txt new file mode 100644 index 00000000..4408c61a --- /dev/null +++ b/mods/3d_armor/shields/textures/preview_index.txt @@ -0,0 +1,11 @@ +shields/textures/shields_shield_wood.png:shield +shields/textures/shields_shield_enhanced_wood.png:shield +shields/textures/shields_shield_cactus.png:shield +shields/textures/shields_shield_enhanced_cactus.png:shield +shields/textures/shields_shield_steel.png:shield +shields/textures/shields_shield_bronze.png:shield +shields/textures/shields_shield_gold.png:shield +shields/textures/shields_shield_diamond.png:shield +shields/textures/shields_shield_mithril.png:shield +shields/textures/shields_shield_crystal.png:shield +shields/textures/shields_shield_admin.png:shield diff --git a/mods/3d_armor/shields/textures/shields_shield_blackmithril.png b/mods/3d_armor/shields/textures/shields_shield_blackmithril.png old mode 100755 new mode 100644 diff --git a/mods/3d_armor/wieldview/LICENSE.txt b/mods/3d_armor/wieldview/LICENSE.txt new file mode 100644 index 00000000..e1552c06 --- /dev/null +++ b/mods/3d_armor/wieldview/LICENSE.txt @@ -0,0 +1,18 @@ +[mod] visible wielded items [wieldview] +======================================= + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/mods/3d_armor/wieldview/README.txt b/mods/3d_armor/wieldview/README.txt index cffae468..ffa5ef0c 100755 --- a/mods/3d_armor/wieldview/README.txt +++ b/mods/3d_armor/wieldview/README.txt @@ -1,7 +1,7 @@ [mod] visible wielded items [wieldview] ======================================= -depends: default, 3d_armor +Depends on: 3d_armor Makes hand wielded items visible to other players. @@ -13,3 +13,11 @@ wieldview_update_time = 2 # Show nodes as tiles, disabled by default wieldview_node_tiles = false + +Info for modders +################ + +Wield image transformation: To apply a simple transformation to the item in +hand, add the group “wieldview_transform” to the item definition. The group +rating equals one of the numbers used for the [transform texture modifier +of the Lua API. diff --git a/mods/3d_armor/wieldview/depends.txt b/mods/3d_armor/wieldview/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor/wieldview/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor/wieldview/description.txt b/mods/3d_armor/wieldview/description.txt deleted file mode 100644 index 0d51ad95..00000000 --- a/mods/3d_armor/wieldview/description.txt +++ /dev/null @@ -1 +0,0 @@ -Makes hand wielded items visible to other players. diff --git a/mods/3d_armor/wieldview/init.lua b/mods/3d_armor/wieldview/init.lua index d7b78c57..45f9fcaf 100755 --- a/mods/3d_armor/wieldview/init.lua +++ b/mods/3d_armor/wieldview/init.lua @@ -1,13 +1,13 @@ local time = 0 -local update_time = tonumber(minetest.setting_get("wieldview_update_time")) +local update_time = tonumber(minetest.settings:get("wieldview_update_time")) if not update_time then update_time = 2 - minetest.setting_set("wieldview_update_time", tostring(update_time)) + minetest.settings:set("wieldview_update_time", tostring(update_time)) end -local node_tiles = minetest.setting_getbool("wieldview_node_tiles") +local node_tiles = minetest.settings:get_bool("wieldview_node_tiles") if not node_tiles then node_tiles = false - minetest.setting_set("wieldview_node_tiles", "false") + minetest.settings:set("wieldview_node_tiles", "false") end wieldview = { @@ -29,8 +29,15 @@ wieldview.get_item_texture = function(self, item) texture = minetest.inventorycube(minetest.registered_items[item].tiles[1]) end end - if wieldview.transform[item] then - texture = texture.."^[transform"..wieldview.transform[item] + -- Get item image transformation, first from group, then from transform.lua + local transform = minetest.get_item_group(item, "wieldview_transform") + if transform == 0 then + transform = wieldview.transform[item] + end + if transform then + -- This actually works with groups ratings because transform1, transform2, etc. + -- have meaning and transform0 is used for identidy, so it can be ignored + texture = texture.."^[transform"..tostring(transform) end end return texture @@ -64,12 +71,13 @@ minetest.register_on_joinplayer(function(player) end, player) end) -function step() - for _,player in ipairs(minetest.get_connected_players()) do - wieldview:update_wielded_item(player) +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 - time = 0 - minetest.after(update_time, step) -end -minetest.after(0, step) +end) diff --git a/mods/3d_armor/wieldview/mod.conf b/mods/3d_armor/wieldview/mod.conf new file mode 100644 index 00000000..c5f48128 --- /dev/null +++ b/mods/3d_armor/wieldview/mod.conf @@ -0,0 +1,3 @@ +name = wieldview +depends = 3d_armor +description = Makes hand wielded items visible to other players. diff --git a/mods/3d_armor_classes/blackmithril/depends.txt b/mods/3d_armor_classes/blackmithril/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/blackmithril/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/blackmithril/init.lua b/mods/3d_armor_classes/blackmithril/init.lua index ca586ceb..1ddb7ed8 100755 --- a/mods/3d_armor_classes/blackmithril/init.lua +++ b/mods/3d_armor_classes/blackmithril/init.lua @@ -1,31 +1,36 @@ -if ARMOR_MATERIALS.blackmithril then - -- Register helmets : - minetest.register_tool(":3d_armor:helmet_blackmithril", { +if armor.materials.blackmithril then + + -- Register helmets + armor:register_armor(":3d_armor:helmet_blackmithril", { description = "Black Mithril Helmet (Warrior)", inventory_image = "3d_armor_inv_helmet_blackmithril.png", groups = {armor_head = 11, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) - -- Register chestplates : - minetest.register_tool(":3d_armor:chestplate_blackmithril", { + -- Register chestplates + armor:register_armor(":3d_armor:chestplate_blackmithril", { description = "Black Mithril Chestplate (Warrior)", inventory_image = "3d_armor_inv_chestplate_blackmithril.png", groups = {armor_torso = 17, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) - -- Register leggings : - minetest.register_tool(":3d_armor:leggings_blackmithril", { + -- Register leggings + armor:register_armor(":3d_armor:leggings_blackmithril", { description = "Black Mithril Leggings (Warrior)", inventory_image = "3d_armor_inv_leggings_blackmithril.png", groups = {armor_legs = 17, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) - -- Register boots : - minetest.register_tool(":3d_armor:boots_blackmithril", { + -- Register boots + armor:register_armor(":3d_armor:boots_blackmithril", { description = "Black Mithril Boots (Warrior)", inventory_image = "3d_armor_inv_boots_blackmithril.png", groups = {armor_feet = 11, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) end @@ -44,4 +49,4 @@ minetest.register_craft({ {"mobs:dungeon_master_diamond", "default:obsidian", ""}, {"", "", ""} } -}) +}) \ No newline at end of file diff --git a/mods/3d_armor_classes/blackmithril/mod.conf b/mods/3d_armor_classes/blackmithril/mod.conf new file mode 100644 index 00000000..fa4acb69 --- /dev/null +++ b/mods/3d_armor_classes/blackmithril/mod.conf @@ -0,0 +1,2 @@ +name = blackmithril +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/hardenedleather/depends.txt b/mods/3d_armor_classes/hardenedleather/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/hardenedleather/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/hardenedleather/init.lua b/mods/3d_armor_classes/hardenedleather/init.lua index e4d74857..734edc18 100755 --- a/mods/3d_armor_classes/hardenedleather/init.lua +++ b/mods/3d_armor_classes/hardenedleather/init.lua @@ -1,31 +1,28 @@ -if ARMOR_MATERIALS.hardenedleather then - -- Register helmets : - minetest.register_tool(":3d_armor:helmet_hardenedleather", { +if armor.materials.hardenedleather then + + -- Register helmets + armor:register_armor(":3d_armor:helmet_hardenedleather", { description = "Hardened Leather Helmet (Hunter)", inventory_image = "3d_armor_inv_helmet_hardenedleather.png", groups = {armor_head = 5, armor_heal = 0, armor_use = 250}, - wear = 0, }) - -- Register chestplates : - minetest.register_tool(":3d_armor:chestplate_hardenedleather", { + -- Register chestplates + armor:register_armor(":3d_armor:chestplate_hardenedleather", { description = "Hardened Leather Chestplate (Hunter)", inventory_image = "3d_armor_inv_chestplate_hardenedleather.png", groups = {armor_torso = 8, armor_heal = 0, armor_use = 250}, - wear = 0, }) - -- Register leggings : - minetest.register_tool(":3d_armor:leggings_hardenedleather", { + -- Register leggings + armor:register_armor(":3d_armor:leggings_hardenedleather", { description = "Hardened Leather Leggings (Hunter)", inventory_image = "3d_armor_inv_leggings_hardenedleather.png", groups = {armor_legs = 8, armor_heal = 0, armor_use = 250}, - wear = 0, }) - -- Register boots : - minetest.register_tool(":3d_armor:boots_hardenedleather", { + -- Register boots + armor:register_armor(":3d_armor:boots_hardenedleather", { description = "Hardened Leather Boots (Hunter)", inventory_image = "3d_armor_inv_boots_hardenedleather.png", groups = {armor_feet = 5, armor_heal = 0, armor_use = 250}, - wear = 0, }) end diff --git a/mods/3d_armor_classes/hardenedleather/mod.conf b/mods/3d_armor_classes/hardenedleather/mod.conf new file mode 100644 index 00000000..87587889 --- /dev/null +++ b/mods/3d_armor_classes/hardenedleather/mod.conf @@ -0,0 +1,2 @@ +name = hardenedleather +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/magicmithril/depends.txt b/mods/3d_armor_classes/magicmithril/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/magicmithril/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/magicmithril/mod.conf b/mods/3d_armor_classes/magicmithril/mod.conf new file mode 100644 index 00000000..f760a083 --- /dev/null +++ b/mods/3d_armor_classes/magicmithril/mod.conf @@ -0,0 +1,2 @@ +name = magicmithril +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/modpack.conf b/mods/3d_armor_classes/modpack.conf new file mode 100644 index 00000000..098eea84 --- /dev/null +++ b/mods/3d_armor_classes/modpack.conf @@ -0,0 +1 @@ +name = 3d_armor_classes \ No newline at end of file diff --git a/mods/3d_armor_classes/modpack.txt b/mods/3d_armor_classes/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/3d_armor_classes/obsidian/depends.txt b/mods/3d_armor_classes/obsidian/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/obsidian/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/obsidian/mod.conf b/mods/3d_armor_classes/obsidian/mod.conf new file mode 100644 index 00000000..670ec925 --- /dev/null +++ b/mods/3d_armor_classes/obsidian/mod.conf @@ -0,0 +1,2 @@ +name = obsidian +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/reinforcedleather/depends.txt b/mods/3d_armor_classes/reinforcedleather/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/reinforcedleather/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/reinforcedleather/init.lua b/mods/3d_armor_classes/reinforcedleather/init.lua index 2aa8a5b4..40001a25 100755 --- a/mods/3d_armor_classes/reinforcedleather/init.lua +++ b/mods/3d_armor_classes/reinforcedleather/init.lua @@ -1,31 +1,28 @@ -if ARMOR_MATERIALS.reinforcedleather then - -- Register helmets : - minetest.register_tool(":3d_armor:helmet_reinforcedleather", { +if armor.materials.reinforcedleather then + + -- Register helmets + armor:register_armor(":3d_armor:helmet_reinforcedleather", { description = "Reinforced Leather Helmet (Hunter)", inventory_image = "3d_armor_inv_helmet_reinforcedleather.png", groups = {armor_head = 6, armor_heal = 0, armor_use = 40}, - wear = 0, }) - -- Register chestplates : - minetest.register_tool(":3d_armor:chestplate_reinforcedleather", { + -- Register chestplates + armor:register_armor(":3d_armor:chestplate_reinforcedleather", { description = "Reinforced Leather Chestplate (Hunter)", inventory_image = "3d_armor_inv_chestplate_reinforcedleather.png", groups = {armor_torso = 11, armor_heal = 0, armor_use = 40}, - wear = 0, }) - -- Register leggings : - minetest.register_tool(":3d_armor:leggings_reinforcedleather", { + -- Register leggings + armor:register_armor(":3d_armor:leggings_reinforcedleather", { description = "Reinforced Leather Leggings (Hunter)", inventory_image = "3d_armor_inv_leggings_reinforcedleather.png", groups = {armor_legs = 11, armor_heal = 0, armor_use = 40}, - wear = 0, }) - -- Register boots : - minetest.register_tool(":3d_armor:boots_reinforcedleather", { + -- Register boots + armor:register_armor(":3d_armor:boots_reinforcedleather", { description = "Reinforced Leather Boots (Hunter)", inventory_image = "3d_armor_inv_boots_reinforcedleather.png", groups = {armor_feet = 6, armor_heal = 0, armor_use = 40}, - wear = 0, }) end @@ -43,4 +40,4 @@ minetest.register_craft({ {"darkage:chain", "mobs:minotaur_eye", ""}, {"", "", ""} } -}) +}) \ No newline at end of file diff --git a/mods/3d_armor_classes/reinforcedleather/mod.conf b/mods/3d_armor_classes/reinforcedleather/mod.conf new file mode 100644 index 00000000..77098b0c --- /dev/null +++ b/mods/3d_armor_classes/reinforcedleather/mod.conf @@ -0,0 +1,2 @@ +name = reinforcedleather +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/action_timers/mod.conf b/mods/action_timers/mod.conf new file mode 100644 index 00000000..7bcaea3a --- /dev/null +++ b/mods/action_timers/mod.conf @@ -0,0 +1 @@ +name = action_timers \ No newline at end of file diff --git a/mods/arrow_signs/depends.txt b/mods/arrow_signs/depends.txt deleted file mode 100755 index 24a785d1..00000000 --- a/mods/arrow_signs/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -locks? \ No newline at end of file diff --git a/mods/arrow_signs/init.lua b/mods/arrow_signs/init.lua index 0c2648ae..d560d813 100755 --- a/mods/arrow_signs/init.lua +++ b/mods/arrow_signs/init.lua @@ -1,10 +1,8 @@ ---more_signs by addi ---Code and Textures are under the CC by-sa 3.0 licence ---see: http://creativecommons.org/licenses/by-sa/3.0/ +-- more_signs by addi +-- Code and Textures are under the CC by-sa 3.0 licence +-- see: http://creativecommons.org/licenses/by-sa/3.0/ - - -arrow_signs={} +arrow_signs = {} arrow_signs.formspec = "field[text;Sign text:;${text}]"; @@ -97,7 +95,7 @@ arrow_signs_on_place = function(itemstack, placer, pointed_thing) itemstack:take_item() end - if not minetest.setting_getbool("creative_mode") then + if not minetest.settings:get_bool("creative_mode") then return itemstack end @@ -106,9 +104,10 @@ end function arrow_signs:savetext(pos, formname, fields, sender) if not minetest.get_player_privs(sender:get_player_name())["interact"] then - minetest.chat_send_player(sender:get_player_name(), "error: you don't have permission to edit the sign. you need the interact priv") - return + minetest.chat_send_player(sender:get_player_name(), "Insufficient privileges (missing privilege: interact).") + return end + local meta = minetest.get_meta(pos) fields.text = fields.text or "" print((sender:get_player_name() or "").." wrote \""..fields.text.. @@ -183,7 +182,7 @@ minetest.register_craft({ } }) ---Redefinition +-- Redefinition minetest.register_abm({ nodenames = {"arrow_signs:wall_right", "arrow_signs:wall_left", "arrow_signs:wall_up", "arrow_signs:wall_down", "more_signs:wall_right","more_signs:wall_left","more_signs:wall_up" ,"more_signs:wall_down" @@ -204,4 +203,4 @@ minetest.register_abm({ } minetest.swap_node(pos, {name="arrow_signs:wall",param2=convert_facedir[node.name][node.param2+1]}) end, -}) +}) \ No newline at end of file diff --git a/mods/arrow_signs/mod.conf b/mods/arrow_signs/mod.conf new file mode 100644 index 00000000..6ccd1b7c --- /dev/null +++ b/mods/arrow_signs/mod.conf @@ -0,0 +1,3 @@ +name = arrow_signs +depends = default +optional_depends = locks \ No newline at end of file diff --git a/mods/automappercolors/init.lua b/mods/automappercolors/init.lua index 55143326..f22e8ea2 100755 --- a/mods/automappercolors/init.lua +++ b/mods/automappercolors/init.lua @@ -42,9 +42,7 @@ minetest.register_chatcommand("amcdumpnodes", { minetest.after(1, function(args) amc_dumpnodes() - if minetest.setting_getbool("log_mods") then + if minetest.settings:get_bool("log_mods") then minetest.log("action", "[automappercolors] nodes dumped") end -end) - - +end) \ No newline at end of file diff --git a/mods/automappercolors/mod.conf b/mods/automappercolors/mod.conf new file mode 100644 index 00000000..a7f38f7d --- /dev/null +++ b/mods/automappercolors/mod.conf @@ -0,0 +1 @@ +name = automappercolors \ No newline at end of file diff --git a/mods/bones/depends.txt b/mods/bones/depends.txt deleted file mode 100755 index b017e45a..00000000 --- a/mods/bones/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -pclasses -unified_inventory? -3d_armor? diff --git a/mods/bones/init.lua b/mods/bones/init.lua index e50edf78..0438559c 100755 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -134,13 +134,13 @@ end minetest.register_on_dieplayer(function(player) - if minetest.setting_getbool("creative_mode") or not player then + if minetest.settings:get_bool("creative_mode") or not player then return end local player_name = player:get_player_name() if player_name == "" then return end - local pos = player:getpos() + local pos = player:get_pos() pos.y = math.floor(pos.y + 0.5) minetest.chat_send_player(player_name, 'Died at '..math.floor(pos.x)..','..math.floor(pos.y)..','..math.floor(pos.z)) @@ -202,21 +202,19 @@ minetest.register_on_dieplayer(function(player) --3d_armor if minetest.get_modpath("3d_armor") then - local name, player_inv, armor_inv, pos = armor:get_valid_player(player, "[on_dieplayer]") + local name, armor_inv = armor:get_valid_player(player, "[on_dieplayer]") if name then for i=1, player_inv:get_size("armor") do local stack = armor_inv:get_stack("armor", i) if stack:get_count() > 0 and (not pclasses.data.reserved_items[stack:get_name()] or not pclasses.api.util.can_have_item(name, stack:get_name())) then bones_inv:add_item("main", stack) - armor_inv:set_stack("armor", i, nil) player_inv:set_stack("armor", i, nil) end end armor:set_player_armor(player) end end - minetest.chat_send_player(player_name, 'Your bones is at '..math.floor(bones_pos.x)..','..math.floor(bones_pos.y)..','..math.floor(bones_pos.z)) + minetest.chat_send_player(player_name, 'Your bones are at '..math.floor(bones_pos.x)..','..math.floor(bones_pos.y)..','..math.floor(bones_pos.z)) minetest.get_node_timer(bones_pos):start(10) -end) - +end) \ No newline at end of file diff --git a/mods/bones/mod.conf b/mods/bones/mod.conf new file mode 100644 index 00000000..ede5bf7e --- /dev/null +++ b/mods/bones/mod.conf @@ -0,0 +1,3 @@ +name = bones +depends = default, pclasses +optional_depends = unified_inventory, 3d_armor \ No newline at end of file diff --git a/mods/broomstick/depends.txt b/mods/broomstick/depends.txt deleted file mode 100755 index 48fe1d60..00000000 --- a/mods/broomstick/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -mana -default -mobs -farming \ No newline at end of file diff --git a/mods/broomstick/mod.conf b/mods/broomstick/mod.conf new file mode 100644 index 00000000..23c11952 --- /dev/null +++ b/mods/broomstick/mod.conf @@ -0,0 +1,2 @@ +name = broomstick +depends = mana, default, mobs, farming \ No newline at end of file diff --git a/mods/chesttools/depends.txt b/mods/chesttools/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/chesttools/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/chesttools/mod.conf b/mods/chesttools/mod.conf new file mode 100644 index 00000000..973fbb29 --- /dev/null +++ b/mods/chesttools/mod.conf @@ -0,0 +1,2 @@ +name = chesttools +depends = default \ No newline at end of file diff --git a/mods/christmas_craft/depends.txt b/mods/christmas_craft/depends.txt deleted file mode 100755 index 02de85a8..00000000 --- a/mods/christmas_craft/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -youngtrees? -woodsoils? diff --git a/mods/christmas_craft/init.lua b/mods/christmas_craft/init.lua index fc31a0c8..38417333 100755 --- a/mods/christmas_craft/init.lua +++ b/mods/christmas_craft/init.lua @@ -1,6 +1,6 @@ --dofile(minetest.get_modpath("christmas_craft").."/mods.lua")--disabled because 4seasons is not installed dofile(minetest.get_modpath("christmas_craft").."/crafts.lua") --temporary disabled because cristmas is over-- -if minetest.setting_getbool("is_winter") then +if minetest.settings:get_bool("is_winter") then dofile(minetest.get_modpath("christmas_craft").."/settings.lua") -- makes it snow end @@ -17,7 +17,6 @@ minetest.register_node("christmas_craft:snowman", { }) - minetest.register_node("christmas_craft:christmas_lights", { description = "christmas lights", drawtype = "signlike", @@ -164,7 +163,6 @@ minetest.register_node("christmas_craft:green_baubles", { }, }) - minetest.register_node("christmas_craft:blue_baubles", { description = "Blue Baubles", drawtype = "nodebox", @@ -300,21 +298,21 @@ minetest.register_node("christmas_craft:silver_baubles", { }, }) ------------- ---nodes-- +--------------- +-- nodes -- +-- presents -- +--------------- - -- presents -- - - minetest.register_node("christmas_craft:present_box", { +minetest.register_node("christmas_craft:present_box", { description = "Present Box", tiles = {"christmas_craft_present_box.png"}, is_ground_content = true, paramtype = "light", groups = {crumbly=3}, sounds = default.node_sound_sand_defaults(), - }) +}) - minetest.register_node("christmas_craft:Christmas_present", { +minetest.register_node("christmas_craft:Christmas_present", { description = "Christmas Present", tiles = {"christmas_craft_present_wh.png^christmas_craft_bow_top.png", "christmas_craft_present_wh.png^christmas_craft_bow_bottom.png", "christmas_craft_present_wh.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -344,9 +342,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_green", { +minetest.register_node("christmas_craft:Christmas_present_green", { description = "Christmas Present Green ", tiles = {"christmas_craft_present_gr.png^christmas_craft_bow_top.png", "christmas_craft_present_gr.png^christmas_craft_bow_bottom.png", "christmas_craft_present_gr.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -376,9 +374,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_red", { +minetest.register_node("christmas_craft:Christmas_present_red", { description = "Christmas Present Red ", tiles = {"christmas_craft_present_re.png^christmas_craft_bow_top.png", "christmas_craft_present_re.png^christmas_craft_bow_bottom.png", "christmas_craft_present_re.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -408,9 +406,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_blue", { +minetest.register_node("christmas_craft:Christmas_present_blue", { description = "Christmas Present Blue ", tiles = {"christmas_craft_present_bl.png^christmas_craft_bow_top.png", "christmas_craft_present_bl.png^christmas_craft_bow_bottom.png", "christmas_craft_present_bl.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -440,9 +438,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_yellow", { +minetest.register_node("christmas_craft:Christmas_present_yellow", { description = "Christmas Present Yellow ", tiles = {"christmas_craft_present_ye.png^christmas_craft_bow_top.png", "christmas_craft_present_ye.png^christmas_craft_bow_bottom.png", "christmas_craft_present_ye.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -472,9 +470,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_red", { +minetest.register_node("christmas_craft:Christmas_present_red", { description = "Christmas Present Red ", tiles = {"christmas_craft_present_re.png^christmas_craft_bow_top.png", "christmas_craft_present_re.png^christmas_craft_bow_bottom.png", "christmas_craft_present_re.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -504,9 +502,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_violet", { +minetest.register_node("christmas_craft:Christmas_present_violet", { description = "Christmas Present Violet ", tiles = {"christmas_craft_present_vi.png^christmas_craft_bow_top.png", "christmas_craft_present_vi.png^christmas_craft_bow_bottom.png", "christmas_craft_present_vi.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -536,9 +534,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_orange", { +minetest.register_node("christmas_craft:Christmas_present_orange", { description = "Christmas Present Orange ", tiles = {"christmas_craft_present_or.png^christmas_craft_bow_top.png", "christmas_craft_present_or.png^christmas_craft_bow_bottom.png", "christmas_craft_present_or.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -568,9 +566,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_pink", { +minetest.register_node("christmas_craft:Christmas_present_pink", { description = "Christmas Present Pink ", tiles = {"christmas_craft_present_pi.png^christmas_craft_bow_top.png", "christmas_craft_present_pi.png^christmas_craft_bow_bottom.png", "christmas_craft_present_pi.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -600,80 +598,79 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) ------------- +}) ------------ ---Items-- +-- Items -- +-- paper -- +------------ - -- paper -- - - minetest.register_craftitem("christmas_craft:paper_blue", { +minetest.register_craftitem("christmas_craft:paper_blue", { description = "Blue paper", inventory_image = "christmas_craft_paper_bl.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_yellow", { +minetest.register_craftitem("christmas_craft:paper_yellow", { description = "Yellow paper", inventory_image = "christmas_craft_paper_ye.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_green", { +minetest.register_craftitem("christmas_craft:paper_green", { description = "Green paper", inventory_image = "christmas_craft_paper_gr.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_red", { +minetest.register_craftitem("christmas_craft:paper_red", { description = "Red paper", inventory_image = "christmas_craft_paper_re.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_violet", { +minetest.register_craftitem("christmas_craft:paper_violet", { description = "Violet paper", inventory_image = "christmas_craft_paper_vi.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_orange", { +minetest.register_craftitem("christmas_craft:paper_orange", { description = "Orange paper", inventory_image = "christmas_craft_paper_or.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_pink", { +minetest.register_craftitem("christmas_craft:paper_pink", { description = "Pink paper", inventory_image = "christmas_craft_paper_pi.png", stack_max = 99, liquids_pointable = false, - }) +}) -- string -- - minetest.register_craftitem("christmas_craft:red_ribbon", { + minetest.register_craftitem("christmas_craft:red_ribbon", { description = "Red Ribbon", inventory_image = "christmas_craft_red_ribbon.png", stack_max = 99, liquids_pointable = false, - }) +}) -- wish list -- - minetest.register_craftitem("christmas_craft:wish_list", { +minetest.register_craftitem("christmas_craft:wish_list", { description = "Wish list", inventory_image = "christmas_craft_which_list.png", stack_max = 99, liquids_pointable = false, - }) +}) ------------ @@ -786,7 +783,7 @@ minetest.register_craftitem("christmas_craft:snowball", { }) --]] ---Snow. +-- Snow. minetest.register_node("christmas_craft:snow", { tiles = {"snow.png"}, drawtype = "nodebox", @@ -814,4 +811,4 @@ minetest.register_node("christmas_craft:snow", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_gravel_footstep", gain=0.45}, }), -}) +}) \ No newline at end of file diff --git a/mods/christmas_craft/mod.conf b/mods/christmas_craft/mod.conf new file mode 100644 index 00000000..e147bc86 --- /dev/null +++ b/mods/christmas_craft/mod.conf @@ -0,0 +1,3 @@ +name = christmas_craft +depends = default +optional_depends = youngtrees, woodsoils \ No newline at end of file diff --git a/mods/christmas_craft/mods.lua b/mods/christmas_craft/mods.lua index b9b50cd3..29a8fa62 100755 --- a/mods/christmas_craft/mods.lua +++ b/mods/christmas_craft/mods.lua @@ -1,4 +1,4 @@ -print (" ---- mods override is Loading! ---- ") +print(" ---- mods override is Loading! ---- ") -- leaves -- @@ -36,7 +36,7 @@ minetest.register_node(":4seasons:grass_winter", { }), }) ---normal sand +-- normal sand minetest.register_node(":4seasons:sand_winter", { description = "Sand with snow", tiles = {"4seasons_snow.png", "default_sand.png", "default_sand.png^4seasons_sand_w_snow_side.png"}, @@ -52,7 +52,7 @@ minetest.register_node(":4seasons:sand_winter", { footstep = {name="default_grass_footstep", gain=0.4}, }), }) ---desert sand +-- desert sand minetest.register_node(":4seasons:desertsand_winter", { description = "Desert Sand with snow", tiles = {"4seasons_snow.png", "default_desert_sand.png", "default_desert_sand.png^4seasons_desertsand_w_snow_side.png"}, @@ -68,7 +68,7 @@ minetest.register_node(":4seasons:desertsand_winter", { }), }) ---cactus winter +-- cactus winter minetest.register_node(":4seasons:cactus_winter", { description = "Cactus", @@ -81,4 +81,4 @@ minetest.register_node(":4seasons:cactus_winter", { {items = {'default:snow'}, rarity = 0,}, }}, sounds = default.node_sound_wood_defaults(), -}) +}) \ No newline at end of file diff --git a/mods/christmas_craft/settings.lua b/mods/christmas_craft/settings.lua index ead38b33..118308f3 100755 --- a/mods/christmas_craft/settings.lua +++ b/mods/christmas_craft/settings.lua @@ -1,5 +1,5 @@ -print (" ---- Overrider christmas_craft = true! ---- ") +minetest.log("info", " ---- Overrider christmas_craft = true! ---- ") local dirttiles = {"snow.png", "default_dirt.png", {name = "default_dirt.png^grass_w_snow_side.png", tileable_vertical = false}} local snowballdrop = {items = {'default:snow'}, rarity = 0} @@ -91,6 +91,4 @@ if minetest.registered_items["woodsoils:dirt_with_leaves_2"] then add_drop(minetest.registered_items["woodsoils:dirt_with_leaves_2"]) end - -print (" ---- Overrider christmas_craft [OK] ---- ") - +minetest.log("action", " ---- Overrider christmas_craft [OK] ---- ") \ No newline at end of file diff --git a/mods/death_messages/depends.txt b/mods/death_messages/depends.txt deleted file mode 100755 index 4b7ff57c..00000000 --- a/mods/death_messages/depends.txt +++ /dev/null @@ -1 +0,0 @@ -soundset diff --git a/mods/death_messages/init.lua b/mods/death_messages/init.lua index 4e94acf0..81508108 100755 --- a/mods/death_messages/init.lua +++ b/mods/death_messages/init.lua @@ -201,7 +201,7 @@ end) if RANDOM_MESSAGES == true then minetest.register_on_dieplayer(function(player) local player_name = player:get_player_name() - local node = minetest.registered_nodes[minetest.get_node(player:getpos()).name] + local node = minetest.registered_nodes[minetest.get_node(player:get_pos()).name] if minetest.is_singleplayer() then player_name = "You" end @@ -243,7 +243,7 @@ else -- Should we keep that part? minetest.register_on_dieplayer(function(player) local player_name = player:get_player_name() - local node = minetest.registered_nodes[minetest.get_node(player:getpos()).name] + local node = minetest.registered_nodes[minetest.get_node(player:get_pos()).name] if minetest.is_singleplayer() then player_name = "You" end diff --git a/mods/death_messages/mod.conf b/mods/death_messages/mod.conf new file mode 100644 index 00000000..3eb2971b --- /dev/null +++ b/mods/death_messages/mod.conf @@ -0,0 +1,2 @@ +name = death_messages +depends = soundset \ No newline at end of file diff --git a/mods/eventobjects/depends.txt b/mods/eventobjects/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/eventobjects/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/eventobjects/init.lua b/mods/eventobjects/init.lua index b46e6047..58943a91 100755 --- a/mods/eventobjects/init.lua +++ b/mods/eventobjects/init.lua @@ -76,7 +76,7 @@ minetest.register_node("eventobjects:surprise_node", { local obj = minetest.spawn_item({x=pos.x, y = pos.y + 1,z=pos.z},stack) inv:remove_item("main",stack) if obj then - obj:setvelocity({x = math.random(-0.4,0.4), y = math.random(2,9), z = math.random(-0.4,0.4)}) + obj:set_velocity({x = math.random(-0.4,0.4), y = math.random(2,9), z = math.random(-0.4,0.4)}) end end end diff --git a/mods/eventobjects/mod.conf b/mods/eventobjects/mod.conf new file mode 100644 index 00000000..74ca26e5 --- /dev/null +++ b/mods/eventobjects/mod.conf @@ -0,0 +1,2 @@ +name = eventobjects +depends = default \ No newline at end of file diff --git a/mods/glow/glow/depends.txt b/mods/glow/glow/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/glow/glow/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/glow/glow/mod.conf b/mods/glow/glow/mod.conf new file mode 100644 index 00000000..ea8f03fb --- /dev/null +++ b/mods/glow/glow/mod.conf @@ -0,0 +1,2 @@ +name = glow +depends = default \ No newline at end of file diff --git a/mods/glow/modpack.conf b/mods/glow/modpack.conf new file mode 100644 index 00000000..a8fa1790 --- /dev/null +++ b/mods/glow/modpack.conf @@ -0,0 +1,2 @@ +name = glow +description = Adds glowing blocks to Minetest. \ No newline at end of file diff --git a/mods/glow/modpack.txt b/mods/glow/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/hbhunger/hunger.lua b/mods/hbhunger/hunger.lua index 503680a0..76a1dcde 100755 --- a/mods/hbhunger/hunger.lua +++ b/mods/hbhunger/hunger.lua @@ -476,9 +476,9 @@ function hbhunger.handle_node_actions(pos, oldnode, player, ext) -- Armor's exhaus if minetest.get_modpath("3d_armor") then - local name, inv, arminv, pos = armor:get_valid_player(player, "[exhaus]") - local armorinv = arminv:get_list("armor") --- table.foreach(armorinv, print) + -- arminv is null now, get_valid_player only returns name and inv (Mg, 05/10/2019) + local name, inv = armor:get_valid_player(player, "[exhaus]") + local armorinv = inv:get_list("armor") for index, stack in ipairs(armorinv) do if stack:get_count() > 0 and (stack:get_name():split(":")[1] == "3d_armor" or stack:get_name():split(":")[1] == "shields") then local itemname = stack:get_name():split(":")[2]:split("_")[1] diff --git a/mods/interact/depends.txt b/mods/interact/depends.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/interact/mod.conf b/mods/interact/mod.conf new file mode 100644 index 00000000..7fb2483c --- /dev/null +++ b/mods/interact/mod.conf @@ -0,0 +1,2 @@ +name = interact +description = Allows players to automatically get interact. \ No newline at end of file diff --git a/mods/inventory_icon/depends.txt b/mods/inventory_icon/depends.txt deleted file mode 100755 index 7e882b39..00000000 --- a/mods/inventory_icon/depends.txt +++ /dev/null @@ -1 +0,0 @@ -unified_inventory diff --git a/mods/inventory_icon/description.txt b/mods/inventory_icon/description.txt deleted file mode 100755 index 792a3860..00000000 --- a/mods/inventory_icon/description.txt +++ /dev/null @@ -1 +0,0 @@ -Shows a little backpack icon in the HUD, which shows how many slots are available and free in the player inventory. diff --git a/mods/inventory_icon/mod.conf b/mods/inventory_icon/mod.conf new file mode 100644 index 00000000..760c2098 --- /dev/null +++ b/mods/inventory_icon/mod.conf @@ -0,0 +1,6 @@ +name = inventory_icon +depends = unified_inventory +description = """ +Shows a little backpack icon in the HUD, +which shows how many slots are available and free in the player inventory. +""" \ No newline at end of file diff --git a/mods/inventorycheck/depends.txt b/mods/inventorycheck/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/inventorycheck/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/inventorycheck/init.lua b/mods/inventorycheck/init.lua index 33de1e19..4e18238e 100755 --- a/mods/inventorycheck/init.lua +++ b/mods/inventorycheck/init.lua @@ -1,33 +1,38 @@ -- Check Inventory -minetest.register_privilege("inv", "Can use /inv") +minetest.register_privilege("inv", { + description = "Can check other player inventories", + give_to_singleplayer = false, + give_to_admin = true, +}) + minetest.register_chatcommand("inv", { params = "", description = "Shows inventory of ", func = function(name, param) if not minetest.check_player_privs(name, {inv=true}) then - return false, "You don't have permission to check inventories" + return false, "You don't have permission to check other player inventories (missing privilege: inv)." end local player = minetest.get_player_by_name(param) if player == nil then - minetest.chat_send_player(name, param.." is not online right now") + minetest.chat_send_player(name, param .. " is not an existing player/online") return false end local player_inv = player:get_inventory() - local invlist = param.."'s inventory: " - for i=1,player_inv:get_size("main") do + local invlist = param .. "'s inventory: " + for i = 1, player_inv:get_size("main") do local items = player_inv:get_stack("main", i) items = items:to_string() if items ~= "" then - invlist = invlist..items.." | " + invlist = invlist .. items .. " | " end end for i=1,player_inv:get_size("craft") do local items = player_inv:get_stack("craft", i) items = items:to_string() if items ~= "" then - invlist = invlist..items.." | " + invlist = invlist .. items .. " | " end end minetest.chat_send_player(name, invlist) diff --git a/mods/inventorycheck/mod.conf b/mods/inventorycheck/mod.conf new file mode 100644 index 00000000..359e5333 --- /dev/null +++ b/mods/inventorycheck/mod.conf @@ -0,0 +1,3 @@ +name = inventorycheck +depends = default +description = Allows administrators to check other player inventories. \ No newline at end of file diff --git a/mods/invtweak/README.txt b/mods/invtweak/README.txt index 85660526..76745d6e 100755 --- a/mods/invtweak/README.txt +++ b/mods/invtweak/README.txt @@ -1,6 +1,6 @@ Minetest mod "Inventory Tweaks" =============================== -version: 2.0 +version: 2.0.1 License of source code: WTFPL ----------------------------- diff --git a/mods/invtweak/depends.txt b/mods/invtweak/depends.txt deleted file mode 100755 index 86aaa64c..00000000 --- a/mods/invtweak/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -3d_armor? -unified_inventory? \ No newline at end of file diff --git a/mods/invtweak/init.lua b/mods/invtweak/init.lua index 565c01f5..6778583e 100755 --- a/mods/invtweak/init.lua +++ b/mods/invtweak/init.lua @@ -1,4 +1,4 @@ -local auto_refill = minetest.setting_getbool("invtweak_auto_refill") or true +local auto_refill = minetest.settings:get_bool("invtweak_auto_refill") or true local tweak = {} tweak.formspec = {} @@ -98,7 +98,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- player inventory - if minetest.setting_getbool("creative_mode") then + if minetest.settings:get_bool("creative_mode") then add_buttons(player) end end) @@ -212,7 +212,7 @@ if auto_refill == true then if not placer then return end local index = placer:get_wield_index() local cnt = placer:get_wielded_item():get_count()-1 - if minetest.setting_getbool("creative_mode") then + if minetest.settings:get_bool("creative_mode") then return else if cnt == 0 then @@ -228,7 +228,7 @@ wielded["wear"] = {} wielded["index"] = {} minetest.register_on_punchnode(function(pos, node, puncher) - if not puncher or minetest.setting_getbool("creative_mode") then + if not puncher or minetest.settings:get_bool("creative_mode") then return end local name = puncher:get_player_name() @@ -255,23 +255,45 @@ end) minetest.register_on_dignode(function(pos, oldnode, digger) if not digger then return end + local name = digger:get_player_name() - if not name then return end local item = digger:get_wielded_item() - if not item then return end local index = digger:get_wield_index() local tname = item:get_name() - if tname ~= "" then return end --new not empty, return + local def = minetest.registered_tools[tname] - local old_name = wielded["name"][name] - if old_name == nil or old_name == "" then return end -- old empty, not replace - local old_wear = wielded["wear"][name] - local old_index = wielded["index"][name] - if index == old_index and old_wear == true then -- if identical index and old is tools, replace - minetest.sound_play("invtweak_tool_break", {pos = digger:getpos(), gain = 0.9, max_hear_distance = 5}) - if auto_refill == true then - minetest.after(0.01, refill, digger, old_name, index) + if not item then + return + end + if tname ~= "" then + if not def then + return + end + end + + local old_name = wielded.name[name] + if tname == old_name and tname == "" then + return + end + + local old = wielded.wear[name] + if not old and tname == "" then + old = 0 + end + local new = item:get_wear() + + if old ~= new then + if old > 0 and new == 0 then + wielded.wear[name] = new + minetest.sound_play("invtweak_tool_break", { + pos = digger:get_pos(), + gain = 0.9, + max_hear_distance = 5 + }) + if auto_refill == true then + minetest.after(0.01, refill, digger, old_name, index) + end end end end) diff --git a/mods/invtweak/mod.conf b/mods/invtweak/mod.conf new file mode 100644 index 00000000..0ac93109 --- /dev/null +++ b/mods/invtweak/mod.conf @@ -0,0 +1,3 @@ +name = invtweak +depends = default +optional_depends = 3d_armor, unified_inventory \ No newline at end of file diff --git a/mods/jumping/init.lua b/mods/jumping/init.lua index cf2a7fe7..196a4500 100755 --- a/mods/jumping/init.lua +++ b/mods/jumping/init.lua @@ -79,6 +79,6 @@ minetest.register_craft({ } }) -if minetest.setting_getbool("log_mods") then +if minetest.settings:get_bool("log_mods") then minetest.log("action", "Carbone: [jumping] loaded.") end diff --git a/mods/jumping/mod.conf b/mods/jumping/mod.conf new file mode 100644 index 00000000..83e66330 --- /dev/null +++ b/mods/jumping/mod.conf @@ -0,0 +1,2 @@ +name = jumping +description = Adds trampolines and cushions. \ No newline at end of file diff --git a/mods/maze/.gitignore b/mods/maze/.gitignore new file mode 100644 index 00000000..f3a7e468 --- /dev/null +++ b/mods/maze/.gitignore @@ -0,0 +1,4 @@ +## Generic ignorable patterns and files +*~ +.*.swp +debug.txt \ No newline at end of file diff --git a/mods/maze/mod.conf b/mods/maze/mod.conf new file mode 100644 index 00000000..3bbfdbe0 --- /dev/null +++ b/mods/maze/mod.conf @@ -0,0 +1 @@ +name = maze \ No newline at end of file diff --git a/mods/meru/depends.txt b/mods/meru/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/meru/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/meru/mod.conf b/mods/meru/mod.conf new file mode 100644 index 00000000..6a10e641 --- /dev/null +++ b/mods/meru/mod.conf @@ -0,0 +1,2 @@ +name = meru +depends = default \ No newline at end of file diff --git a/mods/mff/mff_core/mod.conf b/mods/mff/mff_core/mod.conf new file mode 100644 index 00000000..4b0a53ee --- /dev/null +++ b/mods/mff/mff_core/mod.conf @@ -0,0 +1 @@ +name = mff_core \ No newline at end of file diff --git a/mods/mff/mff_pclasses/depends.txt b/mods/mff/mff_pclasses/depends.txt deleted file mode 100755 index 5b6cf0f4..00000000 --- a/mods/mff/mff_pclasses/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -mff_core -pclasses -runes diff --git a/mods/mff/mff_pclasses/mod.conf b/mods/mff/mff_pclasses/mod.conf new file mode 100644 index 00000000..9b053e51 --- /dev/null +++ b/mods/mff/mff_pclasses/mod.conf @@ -0,0 +1,2 @@ +name = mff_pclasses +depends = mff_core, pclasses, runes \ No newline at end of file diff --git a/mods/mff/mff_quests/depends.txt b/mods/mff/mff_quests/depends.txt deleted file mode 100755 index e8cef597..00000000 --- a/mods/mff/mff_quests/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -mff_core -default -quests \ No newline at end of file diff --git a/mods/mff/mff_quests/init.lua b/mods/mff/mff_quests/init.lua index 113bd826..cf3d30e1 100755 --- a/mods/mff/mff_quests/init.lua +++ b/mods/mff/mff_quests/init.lua @@ -156,7 +156,7 @@ function mff.quests.handle_quest_end(playername, questname, metadata) end local p = minetest.get_player_by_name(playername) if p then - minetest.add_item(p:getpos(), {name=item, count=count, wear=0, metadata=""}) + minetest.add_item(p:get_pos(), {name=item, count=count, wear=0, metadata=""}) end end end diff --git a/mods/mff/mff_quests/mod.conf b/mods/mff/mff_quests/mod.conf new file mode 100644 index 00000000..5b8c969c --- /dev/null +++ b/mods/mff/mff_quests/mod.conf @@ -0,0 +1,2 @@ +name = mff_quests +depends = mff_core, default, quests \ No newline at end of file diff --git a/mods/mff/modpack.conf b/mods/mff/modpack.conf new file mode 100644 index 00000000..713705b9 --- /dev/null +++ b/mods/mff/modpack.conf @@ -0,0 +1 @@ +name = mff \ No newline at end of file diff --git a/mods/mff/modpack.txt b/mods/mff/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/multitest/depends.txt b/mods/multitest/depends.txt deleted file mode 100755 index efe819e4..00000000 --- a/mods/multitest/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -stairs -wool \ No newline at end of file diff --git a/mods/multitest/mod.conf b/mods/multitest/mod.conf new file mode 100644 index 00000000..18142c20 --- /dev/null +++ b/mods/multitest/mod.conf @@ -0,0 +1,2 @@ +name = multitest +depends = default, stairs, wool \ No newline at end of file diff --git a/mods/music/depends.txt b/mods/music/depends.txt deleted file mode 100755 index 892af91d..00000000 --- a/mods/music/depends.txt +++ /dev/null @@ -1 +0,0 @@ -soundset? diff --git a/mods/music/init.lua b/mods/music/init.lua index 3b3bdf2b..e672a87c 100755 --- a/mods/music/init.lua +++ b/mods/music/init.lua @@ -1,7 +1,7 @@ - local players = {} local music_volume = 1 local SOUNDVOLUME = 1 + -- compatibility with soundset mod local get_volume if (minetest.get_modpath("soundset")) ~= nil then diff --git a/mods/music/mod.conf b/mods/music/mod.conf new file mode 100644 index 00000000..daebca10 --- /dev/null +++ b/mods/music/mod.conf @@ -0,0 +1,2 @@ +name = music +optional_depends = soundset \ No newline at end of file diff --git a/mods/news/mod.conf b/mods/news/mod.conf new file mode 100644 index 00000000..70f21285 --- /dev/null +++ b/mods/news/mod.conf @@ -0,0 +1 @@ +name = news \ No newline at end of file diff --git a/mods/notice/mod.conf b/mods/notice/mod.conf new file mode 100644 index 00000000..70df61ff --- /dev/null +++ b/mods/notice/mod.conf @@ -0,0 +1 @@ +name = notice \ No newline at end of file diff --git a/mods/paintings/depends.txt b/mods/paintings/depends.txt deleted file mode 100755 index 470ec30b..00000000 --- a/mods/paintings/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool diff --git a/mods/paintings/init.lua b/mods/paintings/init.lua index 14ee0375..42efa428 100755 --- a/mods/paintings/init.lua +++ b/mods/paintings/init.lua @@ -52,6 +52,6 @@ for _, row in ipairs(paintings.dyes) do }) end -if minetest.setting_getbool("log_mods") then +if minetest.settings:get_bool("log_mods") then minetest.log("action", "Carbone: [paintings] loaded.") -end +end \ No newline at end of file diff --git a/mods/paintings/mod.conf b/mods/paintings/mod.conf new file mode 100644 index 00000000..e044cffb --- /dev/null +++ b/mods/paintings/mod.conf @@ -0,0 +1,2 @@ +name = paintings +depends = default, wool \ No newline at end of file diff --git a/mods/pclasses/api.lua b/mods/pclasses/api.lua index 58c420d2..2e521bb4 100755 --- a/mods/pclasses/api.lua +++ b/mods/pclasses/api.lua @@ -143,6 +143,10 @@ end ------------------------------------------- function vacuum_inventory(name, inv, invname, bury) + if inv == nil then + minetest.log("warning", "[pclasses/api] Inventory given to `vacuum_inventory` is nil") + return + end local ref = minetest.get_player_by_name(name) for i = 1, inv:get_size(invname) do local stack = inv:get_stack(invname, i) diff --git a/mods/pclasses/depends.txt b/mods/pclasses/depends.txt deleted file mode 100755 index 86d6f14f..00000000 --- a/mods/pclasses/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -3d_armor -sprint -unified_inventory diff --git a/mods/pclasses/mod.conf b/mods/pclasses/mod.conf new file mode 100644 index 00000000..0fcc40dc --- /dev/null +++ b/mods/pclasses/mod.conf @@ -0,0 +1,2 @@ +name = pclasses +depends = 3d_armor, sprint, unified_inventory \ No newline at end of file diff --git a/mods/peace_areas/init.lua b/mods/peace_areas/init.lua index cdd36dd4..1cc0594e 100755 --- a/mods/peace_areas/init.lua +++ b/mods/peace_areas/init.lua @@ -6,7 +6,7 @@ peace_areas = {areas = {}} function is_in_peace_area(player) - local pos = player:getpos() + local pos = player:get_pos() if pos == nil then return false end for name, positions in pairs(peace_areas.areas) do local pos1 = positions["pos1"] @@ -55,7 +55,7 @@ end minetest.register_on_punchplayer(function(player, hitter) if is_in_peace_area(player) and hitter:is_player() then minetest.chat_send_player(hitter:get_player_name(), "You cannot punch player " .. - player:get_player_name() .. ". They are in area '" .. peace_area(player:getpos()) .. "'.") + player:get_player_name() .. ". They are in area '" .. peace_area(player:get_pos()) .. "'.") return true --[[ Note: @@ -72,4 +72,4 @@ end peace_areas.register_area("spawn", { ["pos1"] = {x = 16, y = 0, z = 12}, ["pos2"] = {x = 42, y = 100, z = -14}, -}) +}) \ No newline at end of file diff --git a/mods/peace_areas/mod.conf b/mods/peace_areas/mod.conf new file mode 100644 index 00000000..e09a8a01 --- /dev/null +++ b/mods/peace_areas/mod.conf @@ -0,0 +1 @@ +name = peace_areas \ No newline at end of file diff --git a/mods/profnsched/init.lua b/mods/profnsched/init.lua index 5ea060bb..5c166d41 100644 --- a/mods/profnsched/init.lua +++ b/mods/profnsched/init.lua @@ -2,8 +2,8 @@ dofile(minetest.get_modpath("profnsched").."/queue.lua") dofile(minetest.get_modpath("profnsched").."/after.lua") local durations = {} -local active = minetest.setting_get("profnsched_activate") -local dump_delay = minetest.setting_get("profnsched_dump_delay") +local active = minetest.settings:get("profnsched_activate") +local dump_delay = minetest.settings:get("profnsched_dump_delay") if not active then active = false end if not dump_delay then dump_delay = 60*5 end @@ -49,7 +49,7 @@ minetest.register_chatcommand("profnsched", { func = function(name, param) active = true if param == "" then - dump_delay = minetest.setting_get("profnsched_dump_delay") + dump_delay = minetest.settings:get("profnsched_dump_delay") if not dump_delay then dump_delay = 60*5 end else dump_delay = tonumber(param) @@ -58,9 +58,6 @@ minetest.register_chatcommand("profnsched", { end }) - - - local function update_durations(mod_name, func_id, dtime) if not durations[mod_name] then durations[mod_name] = {} @@ -101,17 +98,15 @@ function minetest.register_globalstep(func) } end - - -- Main code local last_elapsed_local_dtime = 0 local last_internal_server_dtime = 0 -local tick_dtime = minetest.setting_get("dedicated_server_step")*1000000 +local tick_dtime = minetest.settings:get("dedicated_server_step") * 1000000 old_globalstep(function(dtime) local begin_time = core.get_us_time() - last_internal_server_dtime = dtime*1000000 - last_elapsed_local_dtime + last_internal_server_dtime = dtime * 1000000 - last_elapsed_local_dtime local launch_dtime = begin_time - last_internal_server_dtime local current_durations = {} diff --git a/mods/profnsched/mod.conf b/mods/profnsched/mod.conf new file mode 100644 index 00000000..e9528da2 --- /dev/null +++ b/mods/profnsched/mod.conf @@ -0,0 +1 @@ +name = profnsched \ No newline at end of file diff --git a/mods/report/depends.txt b/mods/report/depends.txt deleted file mode 100644 index 7381e1c2..00000000 --- a/mods/report/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -email -action_timers -unified_inventory? diff --git a/mods/report/mod.conf b/mods/report/mod.conf new file mode 100644 index 00000000..f68e4bc8 --- /dev/null +++ b/mods/report/mod.conf @@ -0,0 +1,4 @@ +name = report +depends = email, action_timers +optional_depends = unified_inventory +description = Allows players to report misconduct or bugs using /report. \ No newline at end of file diff --git a/mods/riesenpilz/depends.txt b/mods/riesenpilz/depends.txt deleted file mode 100755 index 6687d7c0..00000000 --- a/mods/riesenpilz/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -vector_extras -fence_registration? -watershed? diff --git a/mods/riesenpilz/mod.conf b/mods/riesenpilz/mod.conf new file mode 100644 index 00000000..414cfd43 --- /dev/null +++ b/mods/riesenpilz/mod.conf @@ -0,0 +1,3 @@ +name = riesenpilz +depends = default, vector_extras +optional_depends = fence_registration, watershed \ No newline at end of file diff --git a/mods/runes/depends.txt b/mods/runes/depends.txt deleted file mode 100755 index 66340fe7..00000000 --- a/mods/runes/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -unified_inventory -mana diff --git a/mods/runes/glyphs.lua b/mods/runes/glyphs.lua index 6d8ddfbd..3b799320 100644 --- a/mods/runes/glyphs.lua +++ b/mods/runes/glyphs.lua @@ -224,7 +224,7 @@ register_glyph("watchdog", { ref:set_hp(ref:get_hp() - 1) meta:set_int("charge", (meta:get_int("charge") or 1) - 1) local collisionbox = ref:get_properties().collisionbox - local refpos = ref:getpos() + local refpos = ref:get_pos() refpos.y = refpos.y + (((collisionbox[4] or 0) - (collisionbox[3] or 0)) / 2) local vel = vector.subtract(refpos, pos) @@ -299,7 +299,7 @@ register_glyph("manasucker", { end local collisionbox = ref:get_properties().collisionbox - local refpos = ref:getpos() + local refpos = ref:get_pos() refpos.y = refpos.y + (((collisionbox[4] or 0) - (collisionbox[3] or 0)) / 2) local vel = vector.subtract(pos, refpos) @@ -342,7 +342,7 @@ register_glyph("spontafire", { for _, ref in pairs(minetest.get_objects_inside_radius(pos, 10)) do if ((not ref:is_player()) and ref:get_entity_name() ~= "gauges:hp_bar") or (ref:get_player_name() ~= "" and ref:get_player_name() ~= meta:get_string("master")) then - local rpos = vector.round(ref:getpos()) + local rpos = vector.round(ref:get_pos()) rpos.y = rpos.y - 1 local node = minetest.get_node(rpos) if node.name == "air" and (not minetest.is_protected(rpos, meta:get_string("master"))) @@ -380,10 +380,10 @@ register_glyph("prankster", { local stolen = inv:get_stack("main", thieff) inv:set_stack("main", thieff, nil) if stolen:get_count() > 0 then - local pos = ref:getpos() + local pos = ref:get_pos() local obj = minetest.add_item({x = pos.x, y = pos.y + 2.5, z = pos.z}, stolen) if obj then - obj:setvelocity({x = math.random(-5,5), y = math.random(3,5), z = math.random(-5,5)}) + obj:set_velocity({x = math.random(-5,5), y = math.random(3,5), z = math.random(-5,5)}) end charge = charge - runes.glyphs["prankster"].mana_cost minetest.chat_send_player(ref:get_player_name(), "The Prankster attacked you and stole " .. stolen:get_count() .. " " diff --git a/mods/runes/handlers.lua b/mods/runes/handlers.lua index 82d26d11..d13c70e6 100755 --- a/mods/runes/handlers.lua +++ b/mods/runes/handlers.lua @@ -28,8 +28,8 @@ end earthquake = function(runelevel, itemstack, user, pointed_thing) for name,entity in pairs(minetest.get_objects_inside_radius(user:getpos(),10)) do - local v = entity:getvelocity() or {x=0,y=0,z=0} - entity:setvelocity({x=v.x, y=v.y+50, z=v.z}) + local v = entity:get_velocity() or {x=0,y=0,z=0} + entity:set_velocity({x=v.x, y=v.y+50, z=v.z}) end end @@ -74,7 +74,7 @@ set_manamax = function(runelevel, itemstack, user, pointed_thing) -- Violent reaction if not admin user:set_hp(1) user:set_breath(1) - local userpos = user:getpos() + local userpos = user:get_pos() local useritem = user:get_wielded_item() user:setpos({x=userpos.x+math.random(-50,50),y = userpos.y + math.random(1,20),z = userpos.z + math.random(-50,50)}) end @@ -89,7 +89,7 @@ set_manamax = function(level, itemstack, user, pointed_thing) -- Violent reaction if not admin user:set_hp(1) user:set_breath(1) - local userpos = user:getpos() + local userpos = user:get_pos() local useritem = user:get_wielded_item() user:setpos({x=userpos.x+math.random(-50,50),y = userpos.y + math.random(1,20),z = userpos.z + math.random(-50,50)}) end diff --git a/mods/runes/mod.conf b/mods/runes/mod.conf new file mode 100644 index 00000000..d0d6d7a2 --- /dev/null +++ b/mods/runes/mod.conf @@ -0,0 +1,2 @@ +name = runes +depends = default, unified_inventory, mana \ No newline at end of file diff --git a/mods/sea/clams/depends.txt b/mods/sea/clams/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/clams/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/clams/init.lua b/mods/sea/clams/init.lua index cb513138..6e7fcc25 100755 --- a/mods/sea/clams/init.lua +++ b/mods/sea/clams/init.lua @@ -1,4 +1,6 @@ +-------- -- NODES +-------- minetest.register_node("clams:sandalgae", { description = "Sandalgae", @@ -56,9 +58,9 @@ minetest.register_node("clams:dirtalgaeused", { sounds = default.node_sound_dirt_defaults(), }) - +----------- -- ENTITIES - +----------- -- The registration of the entities' code is copied from celeron55's mob (the DM's fireball) @@ -92,7 +94,7 @@ minetest.register_entity("clams:whiteshell", { if self.phase >= 3 then self.phase = 0 end - self.object:setsprite({x=0, y=self.phase}) + self.object:set_sprite({x=0, y=self.phase}) local phasearmor = { [0]={fleshy=0}, [1]={fleshy=30}, @@ -114,7 +116,7 @@ minetest.register_entity("clams:whiteshell", { for _,drop in ipairs(self.drops) do if math.random(1, drop.chance) == 1 then for i=1,math.random(drop.min, drop.max) do - local obj = minetest.add_item(self.object:getpos(), drop.name) + local obj = minetest.add_item(self.object:get_pos(), drop.name) if obj then obj:get_luaentity().collect = true local x = math.random(1, 5) @@ -125,7 +127,7 @@ minetest.register_entity("clams:whiteshell", { if math.random(1,2) == 1 then z = -z end - obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) + obj:set_velocity({x=1/x, y=obj:get_velocity().y, z=1/z}) end end end @@ -135,9 +137,9 @@ minetest.register_entity("clams:whiteshell", { end, }) - +-------------- -- CRAFT ITEMS - +-------------- minetest.register_craftitem("clams:collectedalgae", { description = "Collected algae", @@ -149,9 +151,9 @@ minetest.register_craftitem("clams:crushedwhite", { inventory_image = "clams_crushedwhite.png", }) - +------------------- -- ALGAE GENERATION - +------------------- minetest.register_ore({ ore_type = "scatter", @@ -214,9 +216,9 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - ---ABM's - +-------- +-- ABM's +-------- minetest.register_abm({ nodenames = {"clams:sandalgaeused"}, @@ -294,9 +296,9 @@ minetest.register_abm({ end, }) - +---------- -- ALIASES - +---------- minetest.register_alias("clams:yellowalgae","clams:collectedalgae") minetest.register_alias("clams:redalgae","clams:collectedalgae") diff --git a/mods/sea/clams/mod.conf b/mods/sea/clams/mod.conf new file mode 100644 index 00000000..20214a04 --- /dev/null +++ b/mods/sea/clams/mod.conf @@ -0,0 +1,2 @@ +name = clams +depends = default \ No newline at end of file diff --git a/mods/sea/modpack.conf b/mods/sea/modpack.conf new file mode 100644 index 00000000..a33e9025 --- /dev/null +++ b/mods/sea/modpack.conf @@ -0,0 +1 @@ +name = sea \ No newline at end of file diff --git a/mods/sea/modpack.txt b/mods/sea/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/sea/noairblocks/depends.txt b/mods/sea/noairblocks/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/noairblocks/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/noairblocks/mod.conf b/mods/sea/noairblocks/mod.conf new file mode 100644 index 00000000..67b1abb3 --- /dev/null +++ b/mods/sea/noairblocks/mod.conf @@ -0,0 +1,2 @@ +name = noairblocks +depends = default \ No newline at end of file diff --git a/mods/sea/seacobble/depends.txt b/mods/sea/seacobble/depends.txt deleted file mode 100755 index 257d73b9..00000000 --- a/mods/sea/seacobble/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -whiteshell? -colormachine? \ No newline at end of file diff --git a/mods/sea/seacobble/mod.conf b/mods/sea/seacobble/mod.conf new file mode 100644 index 00000000..e11a1c4c --- /dev/null +++ b/mods/sea/seacobble/mod.conf @@ -0,0 +1,3 @@ +name = seacobble +depends = default, dye, stairs, clams +optional_depends = whiteshell, colormachine \ No newline at end of file diff --git a/mods/sea/seacoral/depends.txt b/mods/sea/seacoral/depends.txt deleted file mode 100755 index e1b2c4e6..00000000 --- a/mods/sea/seacoral/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -noairblocks -unifieddyes -colormachine? \ No newline at end of file diff --git a/mods/sea/seacoral/mod.conf b/mods/sea/seacoral/mod.conf new file mode 100644 index 00000000..4fbd47c3 --- /dev/null +++ b/mods/sea/seacoral/mod.conf @@ -0,0 +1,3 @@ +name = seacoral +depends = default, noairblocks, unifieddyes +optional_depends = colormachine \ No newline at end of file diff --git a/mods/sea/seaglass/depends.txt b/mods/sea/seaglass/depends.txt deleted file mode 100755 index 5ceae13c..00000000 --- a/mods/sea/seaglass/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -stairsshine -colormachine? \ No newline at end of file diff --git a/mods/sea/seaglass/init.lua b/mods/sea/seaglass/init.lua index 6e8deba6..243b15db 100755 --- a/mods/sea/seaglass/init.lua +++ b/mods/sea/seaglass/init.lua @@ -319,420 +319,420 @@ register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairsshine:slab_seagl register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairsshine:slab_seaglass_white'}) register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairsshine:slab_seaglass_black'}) - +------------ -- FUNCTIONS - +------------ local on_lamp_puncher = function (pos, node, puncher) if node.name == "seaglass:seaglass" then minetest.add_node(pos, {name="seaglass:seaglassoff"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff" then minetest.add_node(pos, {name="seaglass:seaglass"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_yellow" then minetest.add_node(pos, {name="seaglass:seaglassoff_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_yellow" then minetest.add_node(pos, {name="seaglass:seaglass_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_red" then minetest.add_node(pos, {name="seaglass:seaglassoff_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_red" then minetest.add_node(pos, {name="seaglass:seaglass_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_blue" then minetest.add_node(pos, {name="seaglass:seaglassoff_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_blue" then minetest.add_node(pos, {name="seaglass:seaglass_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_white" then minetest.add_node(pos, {name="seaglass:seaglassoff_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_white" then minetest.add_node(pos, {name="seaglass:seaglass_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_black" then minetest.add_node(pos, {name="seaglass:seaglassoff_black"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_black" then minetest.add_node(pos, {name="seaglass:seaglass_black"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass" then minetest.add_node(pos, {name="stairs:slab_seaglassoff"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff" then minetest.add_node(pos, {name="stairsshine:slab_seaglass"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_yellow" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_yellow" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_red" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_red" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_blue" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_blue" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_white" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_white" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_black" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_black"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_black" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_black"}) - nodeupdate(pos) else + minetest.check_for_falling(pos) else return end end + minetest.register_on_punchnode(on_lamp_puncher) - - +---------- -- ALIASES - +---------- minetest.register_alias("clams:yellowlightglass","seaglass:seaglassoff_yellow") minetest.register_alias("clams:redlightglass","seaglass:seaglassoff_red") diff --git a/mods/sea/seaglass/mod.conf b/mods/sea/seaglass/mod.conf new file mode 100644 index 00000000..98f1ce33 --- /dev/null +++ b/mods/sea/seaglass/mod.conf @@ -0,0 +1,3 @@ +name = seaglass +depends = default, dye, stairs, clams, stairsshine +optional_depends = colormachine \ No newline at end of file diff --git a/mods/sea/seagravel/depends.txt b/mods/sea/seagravel/depends.txt deleted file mode 100755 index 257d73b9..00000000 --- a/mods/sea/seagravel/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -whiteshell? -colormachine? \ No newline at end of file diff --git a/mods/sea/seagravel/init.lua b/mods/sea/seagravel/init.lua index 5739914f..9320ff08 100755 --- a/mods/sea/seagravel/init.lua +++ b/mods/sea/seagravel/init.lua @@ -78,9 +78,9 @@ minetest.register_node("seagravel:seagravel_redviolet", { }), }) - +--------- -- STAIRS - +--------- stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", {crumbly=2, falling_node=1}, @@ -152,9 +152,9 @@ stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redvi dug = {name="default_gravel_footstep", gain=1.0}, })) - +----------- -- CRAFTING - +----------- local register_seagravel_craft = function(output,recipe) minetest.register_craft({ diff --git a/mods/sea/seagravel/mod.conf b/mods/sea/seagravel/mod.conf new file mode 100644 index 00000000..e130c9e3 --- /dev/null +++ b/mods/sea/seagravel/mod.conf @@ -0,0 +1,3 @@ +name = seagravel +depends = default, dye, stairs, clams +optional_depends = whiteshell, colormachine \ No newline at end of file diff --git a/mods/sea/sealamps/depends.txt b/mods/sea/sealamps/depends.txt deleted file mode 100755 index 96362815..00000000 --- a/mods/sea/sealamps/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -bucket -noairblocks \ No newline at end of file diff --git a/mods/sea/sealamps/init.lua b/mods/sea/sealamps/init.lua index c3b5af5b..519b24bb 100755 --- a/mods/sea/sealamps/init.lua +++ b/mods/sea/sealamps/init.lua @@ -1,4 +1,6 @@ +-------- -- NODES +-------- minetest.register_node("sealamps:torch", { description = "Sea torch", @@ -52,9 +54,9 @@ minetest.register_node("sealamps:lantern", { sounds = default.node_sound_defaults(), }) - +----------- -- CRAFTING - +----------- minetest.register_craft({ output = 'sealamps:torch 8', @@ -71,4 +73,4 @@ minetest.register_craft({ recipe = { {'default:steel_ingot', 'default:bronze_ingot', 'default:glass'}, }, -}) +}) \ No newline at end of file diff --git a/mods/sea/sealamps/mod.conf b/mods/sea/sealamps/mod.conf new file mode 100644 index 00000000..c4801712 --- /dev/null +++ b/mods/sea/sealamps/mod.conf @@ -0,0 +1,2 @@ +name = sealamps +depends = default, bucket, noairblocks \ No newline at end of file diff --git a/mods/sea/seaplants/depends.txt b/mods/sea/seaplants/depends.txt deleted file mode 100755 index c8aa9b2c..00000000 --- a/mods/sea/seaplants/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -noairblocks \ No newline at end of file diff --git a/mods/sea/seaplants/init.lua b/mods/sea/seaplants/init.lua index ec3139fb..0eef0384 100755 --- a/mods/sea/seaplants/init.lua +++ b/mods/sea/seaplants/init.lua @@ -1,4 +1,6 @@ +-------- -- NODES +-------- -- Lightened nodes for MFF local sea_light_source = 5 @@ -215,9 +217,9 @@ minetest.register_node("seaplants:seaplantsdirtseagrassred", { sounds = default.node_sound_dirt_defaults(), }) - +-------------- -- CRAFT ITEMS - +-------------- minetest.register_craftitem("seaplants:seasaladmix", { description = "Sea salad mix", @@ -225,8 +227,9 @@ minetest.register_craftitem("seaplants:seasaladmix", { on_use = minetest.item_eat(6) }) - +----------- -- CRAFTING +----------- minetest.register_craft({ type = "shapeless", @@ -234,9 +237,9 @@ minetest.register_craft({ recipe = {"seaplants:kelpgreen", "seaplants:kelpbrown", "seaplants:seagrassgreen", "seaplants:seagrassred"} }) - +------------------------------------- -- SEAPLANTS SAND AND DIRT GENERATION - +------------------------------------- minetest.register_ore({ ore_type = "scatter", @@ -364,9 +367,9 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - +-------- -- ABM'S - +-------- minetest.register_abm({ nodenames = {"seaplants:seaplantsdirtkelpgreen"}, @@ -540,9 +543,9 @@ action = function(pos, node, active_object_count, active_object_count_wider) end }) - +---------- -- ALIASES - +---------- minetest.register_alias("seaplants:stemsgreen","default:sand") minetest.register_alias("seaplants:stemsbrown","default:dirt") @@ -553,4 +556,4 @@ minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") -minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") +minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") \ No newline at end of file diff --git a/mods/sea/seaplants/mod.conf b/mods/sea/seaplants/mod.conf new file mode 100644 index 00000000..0f8cf6b3 --- /dev/null +++ b/mods/sea/seaplants/mod.conf @@ -0,0 +1,2 @@ +name = seaplants +depends = default, noairblocks \ No newline at end of file diff --git a/mods/sea/seastone/depends.txt b/mods/sea/seastone/depends.txt deleted file mode 100755 index 257d73b9..00000000 --- a/mods/sea/seastone/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -whiteshell? -colormachine? \ No newline at end of file diff --git a/mods/sea/seastone/init.lua b/mods/sea/seastone/init.lua index bfbf9c09..0ddeb8b5 100755 --- a/mods/sea/seastone/init.lua +++ b/mods/sea/seastone/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("seastone:seastone", { description = "Seastone", @@ -64,9 +65,9 @@ minetest.register_node("seastone:seastone_redviolet", { sounds = default.node_sound_stone_defaults(), }) - +--------- -- STAIRS - +--------- stairs.register_stair_and_slab("seastone", "seastone:seastone", {cracky=3, stone=1}, @@ -117,9 +118,9 @@ stairs.register_stair_and_slab("seastone_redviolet", "seastone:seastone_redviole "Seastone slab redviolet", default.node_sound_stone_defaults()) - +----------- -- CRAFTING - +----------- local register_seastone_craft = function(output,recipe) minetest.register_craft({ @@ -145,8 +146,9 @@ register_seastone_craft("seastone:seastone_aqua", {'clams:crushedwhite', 'defaul register_seastone_craft("seastone:seastone_skyblue", {'clams:crushedwhite', 'default:stone','dye:skyblue'}) register_seastone_craft("seastone:seastone_redviolet", {'clams:crushedwhite', 'default:stone','dye:redviolet'}) +---------- -- COOKING - +---------- local register_smoothblock_cooking = function(output,recipe) minetest.register_craft({ diff --git a/mods/sea/seastone/mod.conf b/mods/sea/seastone/mod.conf new file mode 100644 index 00000000..8c7d706f --- /dev/null +++ b/mods/sea/seastone/mod.conf @@ -0,0 +1,3 @@ +name = seastone +depends = default, dye, stairs, clams +optional_depends = whiteshell, colormachine \ No newline at end of file diff --git a/mods/sea/seastonebrick/depends.txt b/mods/sea/seastonebrick/depends.txt deleted file mode 100755 index 8a60af65..00000000 --- a/mods/sea/seastonebrick/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -stairs -seastone -colormachine? \ No newline at end of file diff --git a/mods/sea/seastonebrick/init.lua b/mods/sea/seastonebrick/init.lua index e0264137..f8754529 100755 --- a/mods/sea/seastonebrick/init.lua +++ b/mods/sea/seastonebrick/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("seastonebrick:seastonebrick", { description = "Seastone brick", @@ -58,9 +59,9 @@ minetest.register_node("seastonebrick:seastonebrick_redviolet", { sounds = default.node_sound_stone_defaults(), }) - +--------- -- STAIRS - +--------- stairs.register_stair_and_slab("seastonebrick", "seastonebrick:seastonebrick", {cracky=3, stone=1}, @@ -111,9 +112,9 @@ stairs.register_stair_and_slab("seastonebrick_redviolet", "seastonebrick:seaston "Seastonebrick slab redviolet", default.node_sound_stone_defaults()) - +----------- -- CRAFTING - +----------- local register_blockbrick_craft = function(output,recipe) minetest.register_craft({ diff --git a/mods/sea/seastonebrick/mod.conf b/mods/sea/seastonebrick/mod.conf new file mode 100644 index 00000000..91534d21 --- /dev/null +++ b/mods/sea/seastonebrick/mod.conf @@ -0,0 +1,3 @@ +name = seastonebrick +depends = default, stairs, seastone +optional_depends = colormachine \ No newline at end of file diff --git a/mods/sea/seawrecks/depends.txt b/mods/sea/seawrecks/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/seawrecks/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/seawrecks/init.lua b/mods/sea/seawrecks/init.lua index 375e1327..3630790d 100755 --- a/mods/sea/seawrecks/init.lua +++ b/mods/sea/seawrecks/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("seawrecks:woodship", { description = "Sand for the wooden ship", @@ -154,9 +155,9 @@ meta:from_table({ end, }) - +------------------- -- WRECK GENERATION - +------------------- minetest.register_ore({ ore_type = "scatter", @@ -218,9 +219,9 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - +-------- -- ABM'S - +-------- minetest.register_abm({ nodenames = {"seawrecks:woodship"}, diff --git a/mods/sea/seawrecks/mod.conf b/mods/sea/seawrecks/mod.conf new file mode 100644 index 00000000..502135fd --- /dev/null +++ b/mods/sea/seawrecks/mod.conf @@ -0,0 +1,2 @@ +name = seawrecks +depends = default \ No newline at end of file diff --git a/mods/sea/stairsshine/depends.txt b/mods/sea/stairsshine/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/stairsshine/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/stairsshine/mod.conf b/mods/sea/stairsshine/mod.conf new file mode 100644 index 00000000..f58d98cb --- /dev/null +++ b/mods/sea/stairsshine/mod.conf @@ -0,0 +1,2 @@ +name = stairsshine +depends = default \ No newline at end of file diff --git a/mods/sea/whiteshell/depends.txt b/mods/sea/whiteshell/depends.txt deleted file mode 100755 index ff483cad..00000000 --- a/mods/sea/whiteshell/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -clams \ No newline at end of file diff --git a/mods/sea/whiteshell/init.lua b/mods/sea/whiteshell/init.lua index 176c2d5d..b3aed508 100755 --- a/mods/sea/whiteshell/init.lua +++ b/mods/sea/whiteshell/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("whiteshell:whiteshell", { description = "White shell", @@ -22,8 +23,9 @@ minetest.register_node("whiteshell:whiteshell", { sounds = default.node_sound_sand_defaults(), }) +------------------------ -- WHITESHELL GENERATION - +------------------------ minetest.register_ore({ ore_type = "scatter", @@ -36,7 +38,6 @@ minetest.register_ore({ y_min = -31000, }) - local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, y_min, y_max) if maxp.y < y_min or minp.y > y_max then return @@ -75,10 +76,13 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - +---------- -- ALIASES - +---------- minetest.register_alias("clams:whiteshell","whiteshell:whiteshell") -minetest.log("action", "[Mod] Sea Loaded.") +-- Log +if minetest.settings:get_bool("log_mods") then + minetest.log("action", "[Mod] Sea Loaded.") +end \ No newline at end of file diff --git a/mods/sea/whiteshell/mod.conf b/mods/sea/whiteshell/mod.conf new file mode 100644 index 00000000..9803cba7 --- /dev/null +++ b/mods/sea/whiteshell/mod.conf @@ -0,0 +1,2 @@ +name = whiteshell +depends = default, clams \ No newline at end of file diff --git a/mods/serverguide/depends.txt b/mods/serverguide/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/serverguide/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/serverguide/mod.conf b/mods/serverguide/mod.conf new file mode 100644 index 00000000..f3d6edee --- /dev/null +++ b/mods/serverguide/mod.conf @@ -0,0 +1,2 @@ +name = serverguide +depends = default \ No newline at end of file diff --git a/mods/shutdown/depends.txt b/mods/shutdown/depends.txt deleted file mode 100755 index 892af91d..00000000 --- a/mods/shutdown/depends.txt +++ /dev/null @@ -1 +0,0 @@ -soundset? diff --git a/mods/shutdown/init.lua b/mods/shutdown/init.lua index f4091a8e..26bf1305 100755 --- a/mods/shutdown/init.lua +++ b/mods/shutdown/init.lua @@ -1,27 +1,27 @@ --[[ - shutdown par turbogus, code sous licence gpl2 ou sup déclaration du "timer" par Jat ( du mod annonce ) Affiche l'heure dans le chat toute les minutes et arrête votre serveur "proprement" à une heure précise afin de créer une sauvegarde - ]]-- + -- compatibility with soundset mod local SOUNDVOLUME = 1 local get_volume + if (minetest.get_modpath("soundset")) ~= nil then get_volume = soundset.get_gain else - get_volume = function (player_name, sound_type) return SOUNDVOLUME end + get_volume = function(player_name, sound_type) return SOUNDVOLUME end end local function sound_play_all(sound) for _, p in ipairs(minetest.get_connected_players()) do local player_name = p:get_player_name() if player_name then - minetest.sound_play(sound, {to_player=player_name, gain=get_volume(player_name, "other")}) + minetest.sound_play(sound, {to_player = player_name, gain = get_volume(player_name, "other")}) end end end @@ -70,4 +70,4 @@ minetest.after(0, function() -- When server has just started minetest.after(61 - tonumber(os.date("%S")), function() tick() end) -end) +end) \ No newline at end of file diff --git a/mods/shutdown/mod.conf b/mods/shutdown/mod.conf new file mode 100644 index 00000000..ce891686 --- /dev/null +++ b/mods/shutdown/mod.conf @@ -0,0 +1,2 @@ +name = shutdown +optional_depends = soundset \ No newline at end of file diff --git a/mods/soundset/depends.txt b/mods/soundset/depends.txt deleted file mode 100755 index 20b7c424..00000000 --- a/mods/soundset/depends.txt +++ /dev/null @@ -1 +0,0 @@ -unified_inventory? diff --git a/mods/soundset/init.lua b/mods/soundset/init.lua index ac8edec1..dde8e05e 100755 --- a/mods/soundset/init.lua +++ b/mods/soundset/init.lua @@ -1,9 +1,11 @@ -minetest.log("action","[mod soundset] Loading...") +minetest.log("action","[soundset] Loading...") soundset = {} soundset.file = minetest.get_worldpath() .. "/sounds_config.txt" soundset.gainplayers = {} + local tmp = {} + tmp["music"] = {} tmp["ambience"] = {} tmp["other"] = {} @@ -34,22 +36,22 @@ load_sounds_config() soundset.set_sound = function(name, param) if param == "" then - minetest.chat_send_player(name, "/setsound ") + minetest.chat_send_player(name, "/setsound ") return end local param_name, param_value = param:match("^(%S+)%s(%S+)$") if param_name == nil or param_value == nil then - minetest.chat_send_player(name, "invalid param, /setsound ") + minetest.chat_send_player(name, "Invalid parameters, see help /setsound") return end if param_name ~= "music" and param_name ~= "ambience" and param_name ~= "mobs" and param_name ~= "other" then - minetest.chat_send_player(name, "invalid param " .. param_name) + minetest.chat_send_player(name, "Invalid param " .. param_name) return end local value = tonumber(param_value) if value == nil then - minetest.chat_send_player(name, "invalid value, " ..param_value .. " must be number") + minetest.chat_send_player(name, "Invalid value, " ..param_value .. " must be number") return end @@ -60,12 +62,12 @@ soundset.set_sound = function(name, param) end if soundset.gainplayers[name][param_name] == value then - minetest.chat_send_player(name, "volume " .. param_name .. " already set to " .. value) + minetest.chat_send_player(name, "Volume " .. param_name .. " already set to " .. value) return end soundset.gainplayers[name][param_name] = value - minetest.chat_send_player(name, "sound " .. param_name .. " set to " .. value) + minetest.chat_send_player(name, "Sound " .. param_name .. " set to " .. value) save_sounds_config() end @@ -178,7 +180,7 @@ if (minetest.get_modpath("unified_inventory")) then type = "image", image = "soundset_menu_icon.png", tooltip = "sounds menu ", - show_with = false, --Modif MFF (Crabman 30/06/2015) + show_with = false, -- Modif MFF (Crabman 30/06/2015) action = function(player) local name = player:get_player_name() if not name then return end @@ -190,7 +192,7 @@ end minetest.register_chatcommand("soundset", { params = "", description = "Display volume menu formspec", - privs = {interact=true}, + privs = {interact = true}, func = function(name, param) if not name then return end on_show_settings(name, soundset.gainplayers[name]["music"], soundset.gainplayers[name]["ambience"], soundset.gainplayers[name]["other"]) @@ -199,15 +201,15 @@ minetest.register_chatcommand("soundset", { minetest.register_chatcommand("soundsets", { - params = " ", - description = "Set volume sound ", - privs = {interact=true}, + params = " ", + description = "Set volume sound.", + privs = {interact = true}, func = soundset.set_sound, }) minetest.register_chatcommand("soundsetg", { params = "", - description = "Display volume sound ", + description = "Display volume sound ", privs = {interact=true}, func = function(name, param) local conf = "" @@ -215,7 +217,7 @@ minetest.register_chatcommand("soundsetg", { conf = conf .. " " .. k .. ":" .. v end minetest.chat_send_player(name, "sounds conf " .. conf) - minetest.log("action","Player ".. name .. " sound conf " .. conf) + minetest.log("action", "Player ".. name .. " sound conf " .. conf) end }) @@ -226,5 +228,4 @@ minetest.register_on_joinplayer(function(player) end end) -minetest.log("action","[mod soundset] Loaded") - +minetest.log("action","[soundset] Loaded") \ No newline at end of file diff --git a/mods/soundset/mod.conf b/mods/soundset/mod.conf new file mode 100644 index 00000000..9142edcf --- /dev/null +++ b/mods/soundset/mod.conf @@ -0,0 +1,2 @@ +name = soundset +optional_depends = unified_inventory \ No newline at end of file diff --git a/mods/spears/depends.txt b/mods/spears/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/spears/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/spears/functions.lua b/mods/spears/functions.lua index b8a1387e..c3ed871c 100755 --- a/mods/spears/functions.lua +++ b/mods/spears/functions.lua @@ -1,14 +1,14 @@ -function spears_shot (itemstack, player) +function spears_shot(itemstack, player) local spear = itemstack:get_name() .. '_entity' - local playerpos = player:getpos() + local playerpos = player:get_pos() local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, spear) local dir = player:get_look_dir() local sp = 14 local dr = .3 local gravity = 9.8 - obj:setvelocity({x=dir.x*sp, y=dir.y*sp, z=dir.z*sp}) - obj:setacceleration({x=-dir.x*dr, y=-gravity, z=-dir.z*dr}) - obj:setyaw(player:get_look_yaw()+math.pi) + obj:set_velocity({x=dir.x*sp, y=dir.y*sp, z=dir.z*sp}) + obj:set_acceleration({x=-dir.x*dr, y=-gravity, z=-dir.z*dr}) + obj:set_yaw(player:get_look_horizontal()+math.pi) obj:get_luaentity().wear = itemstack:get_wear() obj:get_luaentity().player = player:get_player_name() obj:get_luaentity().lastpos = {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z} @@ -16,7 +16,6 @@ function spears_shot (itemstack, player) return true end - function spears_set_entity(kind, eq, toughness) local SPEAR_ENTITY={ physical = false, @@ -44,13 +43,13 @@ function spears_set_entity(kind, eq, toughness) SPEAR_ENTITY.on_step = function(self, dtime) - local pos = self.object:getpos() + local pos = self.object:get_pos() local node = minetest.get_node(pos) if not self.wear then self.object:remove() return end - local newpos = self.object:getpos() + local newpos = self.object:get_pos() if self.lastpos.x ~= nil then for _, pos in pairs(spears_get_trajectoire(self, newpos)) do local node = minetest.get_node(pos) @@ -73,7 +72,7 @@ function spears_set_entity(kind, eq, toughness) local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) for k, obj in pairs(objs) do - local objpos = obj:getpos() + local objpos = obj:get_pos() if spears_is_player(self.player, obj) or spears_is_entity(obj) then if spears_touch(pos, objpos) then local puncher = self.object @@ -147,5 +146,4 @@ function spears_touch(pos, objpos) return true end return false -end - +end \ No newline at end of file diff --git a/mods/spears/init.lua b/mods/spears/init.lua index 842d919b..e5657855 100755 --- a/mods/spears/init.lua +++ b/mods/spears/init.lua @@ -8,15 +8,14 @@ if input then end dofile(minetest.get_modpath("spears").."/functions.lua") - dofile(minetest.get_modpath("spears").."/tools.lua") -if minetest.setting_get("log_mods") then - minetest.log("action", "spears loaded") +if minetest.settings:get_bool("log_mods") then + minetest.log("action", "[spears] Loaded.") end ---alias +-- Aliases minetest.register_alias("throwing:spear_stone", "spears:spear_stone") minetest.register_alias("throwing:spear_steel", "spears:spear_steel") minetest.register_alias("throwing:spear_diamond", "spears:spear_diamond") diff --git a/mods/spears/mod.conf b/mods/spears/mod.conf new file mode 100644 index 00000000..0d4586d3 --- /dev/null +++ b/mods/spears/mod.conf @@ -0,0 +1,2 @@ +name = spears +depends = default \ No newline at end of file diff --git a/mods/spears/tools.lua b/mods/spears/tools.lua index 12a870f2..11918d2d 100755 --- a/mods/spears/tools.lua +++ b/mods/spears/tools.lua @@ -6,7 +6,7 @@ function spears_register_spear(kind, desc, eq, toughness, material) wield_scale= {x=2,y=1,z=1}, on_drop = function(itemstack, user, pointed_thing) spears_shot(itemstack, user) - if not minetest.setting_getbool("creative_mode") then + if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() end return itemstack @@ -42,22 +42,21 @@ function spears_register_spear(kind, desc, eq, toughness, material) end if not DISABLE_STONE_SPEAR then - spears_register_spear('stone', 'Stone (Hunter)', 3, 25, 'group:stone') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('stone', 'Stone (Hunter)', 3, 25, 'group:stone') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_STEEL_SPEAR then - spears_register_spear('steel', 'Steel (Hunter)', 4, 30, 'default:steel_ingot') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('steel', 'Steel (Hunter)', 4, 30, 'default:steel_ingot') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_DIAMOND_SPEAR then - spears_register_spear('diamond', 'Diamond (Hunter)', 7, 50, 'default:diamond') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('diamond', 'Diamond (Hunter)', 7, 50, 'default:diamond') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_OBSIDIAN_SPEAR then - spears_register_spear('obsidian', 'Obsidian (Hunter)', 5, 40, 'default:obsidian') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('obsidian', 'Obsidian (Hunter)', 5, 40, 'default:obsidian') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_MITHRIL_SPEAR then - spears_register_spear('mithril', 'Mithril (Hunter)', 8, 200, 'default:mithril_ingot') --MFF crabman(28/09/2015) damage and wear -end - + spears_register_spear('mithril', 'Mithril (Hunter)', 8, 200, 'default:mithril_ingot') -- MFF crabman(28/09/2015) damage and wear +end \ No newline at end of file diff --git a/mods/sponge/init.lua b/mods/sponge/init.lua index 8715ce4a..670d62b5 100755 --- a/mods/sponge/init.lua +++ b/mods/sponge/init.lua @@ -100,4 +100,4 @@ minetest.register_craft({ {"dye:yellow", "wool:white", "dye:yellow"}, {"", "farming:wheat", ""}, }, -}) +}) \ No newline at end of file diff --git a/mods/sponge/mod.conf b/mods/sponge/mod.conf new file mode 100644 index 00000000..36992f7e --- /dev/null +++ b/mods/sponge/mod.conf @@ -0,0 +1 @@ +name = sponge \ No newline at end of file diff --git a/mods/track_players/init.lua b/mods/track_players/init.lua index e613527a..5e4beb2f 100755 --- a/mods/track_players/init.lua +++ b/mods/track_players/init.lua @@ -4,7 +4,7 @@ local fifo_path = "/home/quentinbd/mff/worlds/minetestforfun/mt_players_fifo" function players_data() local ps = {} for _, player in ipairs(minetest.get_connected_players()) do - local pos = player:getpos() + local pos = player:get_pos() local pname = player:get_player_name() local data = { name = pname, @@ -29,4 +29,4 @@ function time_interval_func() minetest.after(time_interval, time_interval_func) end -minetest.after(time_interval, time_interval_func) +minetest.after(time_interval, time_interval_func) \ No newline at end of file diff --git a/mods/track_players/mod.conf b/mods/track_players/mod.conf new file mode 100644 index 00000000..75cf8bab --- /dev/null +++ b/mods/track_players/mod.conf @@ -0,0 +1 @@ +name = track_players \ No newline at end of file diff --git a/mods/vector_extras/mod.conf b/mods/vector_extras/mod.conf new file mode 100644 index 00000000..93a7311e --- /dev/null +++ b/mods/vector_extras/mod.conf @@ -0,0 +1 @@ +name = vector_extras \ No newline at end of file diff --git a/mods/vector_extras/vector_meta.lua b/mods/vector_extras/vector_meta.lua index b4ed291e..0620a1cc 100755 --- a/mods/vector_extras/vector_meta.lua +++ b/mods/vector_extras/vector_meta.lua @@ -155,7 +155,7 @@ function vector.meta.remove_node(pos) vector.meta.nodes[pos.x] = nil end else - print("[vector_extras] Warning: The node at "..vector.pos_to_string(pos).." wasn't stored in vector.meta.nodes.") + minetest.log("error", "[vector_extras] Warning: The node at " .. vector.pos_to_string(pos) .. " wasn't stored in vector.meta.nodes") end end @@ -180,4 +180,4 @@ minetest.register_chatcommand('cleanvectormetatable',{ end }) -vector.meta.nodes_file.load() +vector.meta.nodes_file.load() \ No newline at end of file diff --git a/mods/watershed/README.txt b/mods/watershed/README.txt index dfc706c8..350a31c6 100755 --- a/mods/watershed/README.txt +++ b/mods/watershed/README.txt @@ -1,4 +1,11 @@ -watershed 0.7.1 by paramat, modified by the MinetestForFun Team. -For Minetest 0.4.13 and later -Depends default farming darkage -Licenses: WTFPL +Water Shed +============ + +Created by: paramat +Modified by the MinetestForFun team. + +Version: 0.7.2. +Dependencies: default, farming, darkage + +License: LGPLv2.1+ for everything. +For MT/MTG 0.4.16 and above. \ No newline at end of file diff --git a/mods/watershed/depends.txt b/mods/watershed/depends.txt deleted file mode 100755 index 95289b27..00000000 --- a/mods/watershed/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -farming -darkage diff --git a/mods/watershed/init.lua b/mods/watershed/init.lua index 5746e509..d2d68ef2 100755 --- a/mods/watershed/init.lua +++ b/mods/watershed/init.lua @@ -241,22 +241,22 @@ local nobj_magma = nil -- Localise noise buffers -local nbuf_terrain -local nbuf_fissure -local nbuf_temp -local nbuf_humid -local nbuf_seam -local nbuf_strata +local nbuf_terrain = {} +local nbuf_fissure = {} +local nbuf_temp = {} +local nbuf_humid = {} +local nbuf_seam = {} +local nbuf_strata = {} local nbuf_cave1 local nbuf_cave2 local nbuf_cave3 local nbuf_cave4 -local nbuf_mid -local nbuf_base -local nbuf_xlscale -local nbuf_magma +local nbuf_mid = {} +local nbuf_base = {} +local nbuf_xlscale = {} +local nbuf_magma = {} -- Mapchunk generation function @@ -742,7 +742,7 @@ minetest.register_on_generated(function(minp, maxp, seed) local y0 = minp.y local z0 = minp.z - print ("[watershed] generate mapchunk minp (" .. x0 .. " " .. y0 .. " " .. z0 .. ")") + minetest.log("action", "[watershed] generate mapchunk minp (" .. x0 .. " " .. y0 .. " " .. z0 .. ")") local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax} @@ -759,11 +759,12 @@ minetest.register_on_generated(function(minp, maxp, seed) vm:update_liquids() local chugent = math.ceil((os.clock() - t1) * 1000) - print ("[watershed] " .. chugent .. " ms") + minetest.log("action", "[watershed] " .. chugent .. " ms") end) default.register_ores() farming.register_mgv6_decorations() + -- cherry tree minetest.register_decoration({ deco_type = "simple", @@ -779,4 +780,4 @@ minetest.register_decoration({ }, decoration = "default:mg_cherry_sapling", height = 1, -}) +}) \ No newline at end of file diff --git a/mods/watershed/license.txt b/mods/watershed/license.txt index c73f8ae7..c0cdd475 100755 --- a/mods/watershed/license.txt +++ b/mods/watershed/license.txt @@ -1,14 +1,20 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 +GNU Lesser General Public License (2.1) +Copyright (C) 2014-2017 paramat. +Copyright (C) 2016-2019 Various MinetestForFun developers and contributors. - Copyright (C) 2004 Sam Hocevar +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - 0. You just DO WHAT THE FUCK YOU WANT TO. - +For more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html \ No newline at end of file diff --git a/mods/watershed/mod.conf b/mods/watershed/mod.conf new file mode 100644 index 00000000..bfab7491 --- /dev/null +++ b/mods/watershed/mod.conf @@ -0,0 +1,2 @@ +name = watershed +depends = default, farming, darkage \ No newline at end of file diff --git a/mods/watershed/nodes.lua b/mods/watershed/nodes.lua index f8521418..85c4b020 100755 --- a/mods/watershed/nodes.lua +++ b/mods/watershed/nodes.lua @@ -32,6 +32,4 @@ minetest.register_alias("watershed:lava", "default:lava_source") minetest.register_alias("watershed:lavaflow", "default:lava_flowing") -- Items - -minetest.register_alias("watershed:luxcrystal", "default:cobble") - +minetest.register_alias("watershed:luxcrystal", "default:cobble") \ No newline at end of file diff --git a/mods/whoison/functions.lua b/mods/whoison/functions.lua index 693a6b5c..573b2860 100755 --- a/mods/whoison/functions.lua +++ b/mods/whoison/functions.lua @@ -1,5 +1,6 @@ +------------ -- Functions --- +------------ function whoison.functions.load(param) --[[ @@ -51,7 +52,7 @@ function whoison.functions.save(param) -- Erase line local i = 0 whoison.presence_file:seek(string.len(line),"cur") - print("removing " .. string.len(line)) + minetest.log("action", "Removing " .. string.len(line)) while i < string.len(line) do whoison.presence_file:write("\b") i = i + 1 @@ -67,4 +68,4 @@ function whoison.functions.save(param) {name = param, time = whoison.datas[param]} ) .. "\n") return true -end +end \ No newline at end of file diff --git a/mods/whoison/init.lua b/mods/whoison/init.lua index af99248a..122462c5 100755 --- a/mods/whoison/init.lua +++ b/mods/whoison/init.lua @@ -9,7 +9,7 @@ function whoison.createFile(loopit) local file = io.open(filename, "w") file:write(os.time().."\n") file:write(minetest.get_server_status().."\n") - for _,player in ipairs(minetest.get_connected_players()) do + for _, player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() whoison.updateStats(name) @@ -144,4 +144,4 @@ end minetest.after(10,whoison.createFile,true) -whoison.loadLastSeen() +whoison.loadLastSeen() \ No newline at end of file diff --git a/mods/whoison/mod.conf b/mods/whoison/mod.conf new file mode 100644 index 00000000..a40f21ff --- /dev/null +++ b/mods/whoison/mod.conf @@ -0,0 +1 @@ +name = whoison \ No newline at end of file