1
0
mirror of https://github.com/minetest-mods/3d_armor.git synced 2025-06-28 22:36:39 +02:00

339 Commits

Author SHA1 Message Date
073206701a update integration test to minetest 5.2.0 2020-05-14 21:37:09 +02:00
b4eebf604e fix ci badge urls 2020-05-01 16:33:46 +02:00
0da0088889 Merge branch 'master' of https://github.com/Panquesito7/minetest-3d_armor 2020-05-01 16:30:35 +02:00
dbc6ccf089 Add missing fuel recipes for wood and cactus armor.
Fixes https://github.com/stujones11/minetest-3d_armor/issues/174
2020-04-30 08:18:29 +02:00
acd8b2647d Don't damage armor when drowning, eating or starving. 2020-04-30 08:15:37 +02:00
a6b89e7929 Fix count when armor is destroyed. 2020-04-29 11:10:11 +02:00
c3a755518e Silence png warnings.
Closes https://github.com/mt-mods/3d_armor/pull/1
2020-04-09 07:22:39 +02:00
4c99049600 Merge pull request #2 from mt-mods/code-quality
add luacheck and integration test workflows / fix luacheck errors
2020-02-17 17:36:52 +01:00
f81cb10f20 add luacheck and integration test workflows / fix luacheck errors
partially attends to https://github.com/pandorabox-io/pandorabox.io/issues/444 (the ObjectRef issue)
2020-02-13 12:26:32 +01:00
f3ad7ec6f1 add armor breakage alerts
something I've wanted for a while...
2019-12-28 23:13:41 +11:00
fccd4d8b15 Merge branch 'preserve_immortal' of https://github.com/SmallJoker/minetest-3d_armor
PR: https://github.com/stujones11/minetest-3d_armor/pull/170
2019-12-17 14:36:05 +01:00
e5b2cf3a34 new armor and shield textures 2019-12-15 19:03:25 +01:00
d2608351f6 extend bone search radius
hopefully fixes https://github.com/pandorabox-io/pandorabox.io/issues/364
2019-12-09 11:04:11 +01:00
a05eae3782 Preserve immortal group for per-player damage 2019-10-07 20:12:58 +02:00
2ac90f8d19 drop invalid item instead of erase it 2019-07-16 09:40:28 +07:00
4adc602704 Update api.lua 2019-06-17 13:03:27 -05:00
e248752ee4 Use newer functions from MT/MTG 5.0.0+
These commits create more compatibility with MT/MTG 5.0.0+.
However, these commits (may) break compatibility with the 0.4-series.
2019-06-16 15:17:21 -05:00
47ecef46f7 Update licenses 2019-05-27 20:30:03 +01:00
1d22612664 Bump version to 0.4.13 2019-03-05 20:01:01 +00:00
3fe7dd2249 Replace deprecated getpos call 2019-03-05 19:40:54 +00:00
be9579a365 Offset models for minetest 5.0.0 2019-03-05 19:30:38 +00:00
18320e96b9 Replace braces within replace to avoid invalid line error 2019-03-05 19:27:37 +00:00
99471d3aa0 Create settingtypes.txt file 2019-03-05 19:27:37 +00:00
b6283f3f0f Fix some default settings values in README 2019-03-05 19:27:37 +00:00
7e2d9426d1 fix formatting 2019-01-20 23:21:05 +00:00
813a88f3a1 Fixes Stand appending extra ".png" to texture when a "texture" attribute
is explicity set on the armor's definition.
2019-01-20 23:21:05 +00:00
4c032e8c7e Add Portuguese Translations 2018-11-09 17:50:10 +00:00
945e816b55 Locale es.po created 2018-10-23 18:02:46 +01:00
10ded06705 Create es.po 2018-10-23 18:02:46 +01:00
43a69ad853 Locale es.po created 2018-10-23 18:02:46 +01:00
13a8f0d019 Add new textures 2018-10-19 20:37:48 +01:00
70325158e6 Reverts 9ce0ed9f55 / #152
The preview method is skin preview only, without armor. That is wrong for showing on formspec

Sorry for inconveniences. I need to fix the preview handling in player_api_modpack-version in an other way
2018-08-24 18:58:32 +01:00
c96ba7ef34 Cleanup locales (#155)
* use localization function in formspecs

* remove unused translations

* remove F keyword from updatepo tool

* add tool readme
2018-07-26 20:05:50 +01:00
838867a6bc add russian locale 2018-07-22 20:53:38 +01:00
9ce0ed9f55 Use preview method for unified inventory
I found this during porting the 3d_armor to player_api ;-)
2018-07-22 20:51:07 +01:00
c0d45ceaa1 show fire: value
this fixes the Fire: value in formspec so it shows a number instead of "Fire: armor_fire".
2018-06-18 20:21:58 +01:00
656bcf30bc Bump version to 0.4.12 2018-06-10 19:39:38 +01:00
579e64a5e7 Code tidy 2018-06-02 22:13:41 +01:00
6f99803d2d Return invalid items in singleplayer mode 2018-06-02 20:46:44 +01:00
f960fc1a41 Only validate armor inventory after user changes 2018-06-02 18:59:32 +01:00
af4a381433 Update screenshot image 2018-05-24 19:25:34 +01:00
1f11a28ad4 More armor callback fixes 2018-05-24 19:06:27 +01:00
a5ddc3e60a Move comment :) 2018-05-23 21:40:06 +01:00
83f3e01efa Run callbacks based on validated inventory 2018-05-23 20:15:09 +01:00
7d30bc25a3 Allow replacing similar armor in the same slot 2018-05-22 18:40:24 +01:00
e4b12558d4 Ammendment to 21b5c68505 2018-05-19 21:35:15 +01:00
21b5c68505 Validate and clean armor inventory before saving 2018-05-19 20:25:27 +01:00
21716ffd31 Display correct heal attribute level, fixes #137 2018-05-13 16:52:29 +01:00
cc6fff2b04 Shields: Fix positional sound effects 2018-05-13 16:31:51 +01:00
4210cafff3 add POVA support (#138)
* add POVA support

Add support for POVA player overrides.

* add POVA support

Add support for POVA player overrides.
2018-05-07 14:41:40 +01:00
579d245a00 Fix crash with UI but no technic 2018-02-23 18:00:43 +00:00
c812e0ac56 Shields: Add option to disable sound effects 2018-02-18 20:35:49 +00:00
4baed2ca22 Remove on_punch effects from admin armor, closes #131 2018-02-18 20:24:35 +00:00
b9c8681e14 Bump version to 0.4.11 2018-02-11 17:13:25 +00:00
2fc92880fd Move technic_armor and hazmat_suit to separate repos 2018-02-11 17:11:51 +00:00
b4cfdac6f5 Update licenses to current year 2018-02-11 16:57:27 +00:00
59b26b37f9 Fix item duplication vulnerability 2018-02-11 16:12:22 +00:00
7226dd6174 Add Malay translation 2018-02-07 17:39:38 +00:00
4fc51971d1 Fix registered group level display 2018-01-10 19:16:23 +00:00
291b34bfc6 Auto-refresh armor stands after clearobjects.
Currently armor stands appear empty after a clearobjects, in order to refresh them the armor must be removed and put back on again, this code automatically refreshes armor stands periodically to avoid these issues.
2017-12-05 18:28:27 +00:00
da7df11ce4 Change armor stand recipe to use any item from the fence group. 2017-11-10 17:41:59 +00:00
4ff61da39a Correct minetest version in README.md 2017-10-24 20:53:06 +01:00
688e21f285 Bump version to 0.4.10 2017-10-21 17:57:12 +01:00
ea70066d7a Add link to general mod install info, closes #117 2017-10-20 21:19:22 +01:00
d5896a04e2 Check that player inventory returns a valid table 2017-10-20 20:17:37 +01:00
d979815a49 Fix libpng sRGB profile warnings 2017-10-20 19:38:22 +01:00
cca523f193 Italian locale 2017-08-18 13:21:30 +01:00
ae448c150c added complete intllib support (i18n)
added french translation
2017-08-08 18:09:27 +01:00
925b39f577 added tooltip on unified_inventory button 2017-08-08 18:09:27 +01:00
0454d72c72 Ensure valid inventory table when setting armor 2017-08-01 19:03:17 +01:00
9fa95b2e2c Run update callbacks when player visuals change, closes #113 2017-08-01 18:48:06 +01:00
43c9984d57 Do not drop armor in uloaded areas 2017-08-01 18:42:04 +01:00
cc26d04345 Replace deprecated function 'intllib.Getter':
- Check first for 'intllib.make_gettext_pair', otherwise continue using
function 'intllib.Getter'.
2017-07-09 14:29:11 +01:00
38d79b91a1 Replace deprecated methods:
- 'setting_get' with 'settings:get'
- 'setting_getbool' with 'settings:get_bool'
- 'setting_set' with 'settings:set'
2017-06-21 17:48:18 +01:00
db8fb5ebd4 bugfix and small optimization 2017-06-21 17:47:24 +01:00
2150fcea8d return the png suffix in get_player_skin for complete texture definition to support more complex textures
Note the armor.get_player_skin() could be redefined in other mods to privide the more complex textures
2017-06-21 17:47:24 +01:00
9577fb773e Ignore Eclipse project files & directories 2017-05-14 19:29:08 +01:00
ea29ec6f6f Register armor after mod compat tests, fixes #106 2017-05-10 20:33:49 +01:00
793c74856f Fix nil index in on_damage callback 2017-05-03 17:56:32 +01:00
47734969e2 Bump version to 0.4.9 2017-04-28 19:06:38 +01:00
1af0bb60f8 Rename on_punch callback to avoid potential conflict with nodes 2017-04-21 18:33:30 +01:00
a11b3302e1 Move armor initialization back out of the api 2017-04-19 21:53:13 +01:00
664d9fbfef Increase fleshy level of wood and cactus leggings 2017-04-19 19:42:12 +01:00
4dd7e41749 Add damage method and update README.txt 2017-04-19 19:00:00 +01:00
df429ee487 Run inventory equip callbacks before set_player_armor 2017-04-16 19:34:09 +01:00
7566ecccee Initialize armor after all on_joinplayer callbacks have run 2017-04-16 16:52:49 +01:00
99bc8cf2d3 Reverse order of stack and index in callbacks for consistency 2017-04-15 20:44:05 +01:00
a2ec13e28d Only allow armor items in the armor inventory 2017-04-15 18:00:10 +01:00
065815eec1 Include stack index it armor item callbacks 2017-04-15 17:54:39 +01:00
16b0ee2d9e Register adminshield alias for consistency 2017-04-14 20:19:38 +01:00
64f8b3cd58 Fix OOM crash with admin shield 2017-04-14 17:08:08 +01:00
74ef6c5759 Shields: check valid hitter 2017-04-13 21:29:57 +01:00
b741b7426b More player validity checks 2017-04-13 20:34:55 +01:00
db312b3245 Code styling 2017-04-13 20:11:15 +01:00
de2c47f334 More protection from un-initialized player crashes 2017-04-13 19:47:43 +01:00
b4283f6e60 Fix string concatenation in UI form, resolves #104 2017-04-13 17:21:16 +01:00
888fbacb49 Prevent potentially bogus warning 2017-04-11 21:26:06 +01:00
50453aa5a6 Fix warnings 2017-04-11 20:55:28 +01:00
b45fbd0f2a Log warning if initialization fails and validate armor.def for UI 2017-04-11 20:42:58 +01:00
9ffcc19fd7 Improve player initialization and increase default delay 2017-04-11 19:34:06 +01:00
6359b0a0ed bugfix: the count was lost 2017-04-10 18:24:27 +01:00
4dbe76312b Hazmat suit: updates and fixes 2017-04-09 20:43:55 +01:00
20edce6c55 Better balance of armor weights 2017-04-09 18:49:44 +01:00
6e58d1280b Add minor physics penalties to metal armors 2017-04-09 18:37:55 +01:00
20d4728829 Only reciprocate damage of valid tool items 2017-04-09 18:07:53 +01:00
7cfd744ff3 Respect flammable group when fire is protection enabled 2017-04-09 17:34:22 +01:00
a76a35f177 Fix regression with heal_multiplier config 2017-04-09 16:25:52 +01:00
e5e926a02e Use metal sounds for enhanced shields 2017-04-09 15:43:35 +01:00
3951c833da More documentation ammendments 2017-04-09 15:00:48 +01:00
e9a2c57826 Correction to example code 2017-04-08 22:32:46 +01:00
5508a26dbf Bugfix: shields crash with nil method, fixes #102 2017-04-08 22:28:52 +01:00
0ec7858937 Add punch damage groups and effects 2017-04-08 21:32:56 +01:00
1e059f2557 Bugfix: recognise boolean false in configuration 2017-04-05 17:51:50 +01:00
5dab1ca887 Add intllib support to 3d_armor_stand 2017-03-31 22:09:32 +01:00
1fdff7adaa Make water protection optional, default true
This can save a `global_step` regisration if neither fire or water
protection are enabled.
2017-03-31 22:03:59 +01:00
23e4d5114f Add support for intllib 2017-03-31 20:12:20 +01:00
7fde7c050d Update wieldview README about dependencies 2017-03-31 17:42:22 +01:00
45099ae25a Mod-defined wield item transformation w/ group 2017-03-31 17:42:22 +01:00
edebf13c1f Remove unneeded default dependency from wieldview 2017-03-31 17:42:22 +01:00
4083782246 Improve get_armor_formspec 2017-03-29 19:31:00 +01:00
5911447048 Move shields level reduction to shields mod 2017-03-29 19:13:13 +01:00
3aac5c98f4 Fix movement and level bugs 2017-03-29 17:44:40 +01:00
fe9664589a Fix potential missing texture bug 2017-03-26 22:46:51 +01:00
11ce84873b Add support for non-fleshy damage groups, closes #47 2017-03-26 20:53:04 +01:00
86fd6b0d7d Fix crash caused by 27a3823eed 2017-03-23 00:59:21 +00:00
27a3823eed Improve error logging, reduce log level to warning 2017-03-22 19:00:48 +00:00
348dad3d4d Log warning of unused mods when dependencies are missing 2017-03-21 15:16:58 +00:00
ea86aa35f5 Merge branch 'bell07-pr_compat_cleanup' 2017-03-21 14:54:03 +00:00
f0edb9a710 Inventory compat cleanup
fix inventory_plus after cleanup. Create own register_on_player_receive_fields for this inventory

removed smart_inventory (moved to the inventoy mod), adjusted sfinv

moved sfinv to own mod 3d_armor_sfinv

moved unified_inventory to 3d_armor_ui

moved inventory_plus support to own mod 3d_armor_ip
2017-03-21 14:50:17 +00:00
75191490c2 Use api call to get player skin 2017-03-19 18:52:51 +00:00
f91af02c45 Fix inventory paging bugs caused by previous commit 2017-03-19 18:06:54 +00:00
3843578a33 Remove unnecessary code 2017-03-19 17:22:24 +00:00
1570efb7ac Depreciate update_inventory and use on_update callback 2017-03-19 16:10:52 +00:00
5517be8ff2 Replace missed global config, fixes #94 2017-03-19 13:28:55 +00:00
709535dff0 Only apply valid wardrobe mod skins, fixes #93 2017-03-18 22:14:08 +00:00
a1d904c517 Remove redundant code 2017-03-18 22:02:11 +00:00
3c2cb16351 Correction to documentation 2017-03-18 20:39:03 +00:00
6bf28dc2c5 Only allow one of each armor element in armor slots
Required, otherwise equip callbacks may be bogus.
2017-03-18 20:32:11 +00:00
75a7181e0f Add callbacks, closes #46 2017-03-18 20:12:43 +00:00
2b840fbe38 Add comment and remove empty lines 2017-03-18 18:04:10 +00:00
701215c22f Depreciate global configs, closes #68 2017-03-18 17:23:50 +00:00
e46ff3488b Remove kill/me commands 2017-03-17 21:57:13 +00:00
f74a52df62 Code re-organisation
This should make it easier to merge features from the now
out-dated development branch.
2017-03-17 20:26:41 +00:00
3c4500a9bf Only show protection levels of enabled features 2017-03-17 18:27:19 +00:00
e69b59e2af Fix alignment of formspec page slots 2017-03-15 19:31:48 +00:00
d43d96bb28 Fix typo in cactus helmet description, closes #91 2017-03-15 18:58:27 +00:00
7a980a6717 Fix missing sfinv page background images, closes #90 2017-03-12 20:34:54 +00:00
fc3fcea4b7 Bump version to 0.4.8 2017-03-12 19:14:32 +00:00
b59464de88 Improve skin mod preview support 2017-03-12 18:23:49 +00:00
80024fc154 Fix security violation in player_textures mod support 2017-03-12 17:01:04 +00:00
d826b53877 Use u_skins preview image as base for armor preview 2017-03-11 21:34:26 +00:00
01a3425ec8 Add preview generator and update preview textures 2017-03-11 20:02:55 +00:00
616d9398f2 Minor formspec improvements 2017-03-11 19:31:37 +00:00
6661ec0b40 Add support for player monoids, resolves #85 2017-03-10 20:33:45 +00:00
ca1cf6bfeb Fix inconsistency with cactus boots, closes #89 2017-03-10 18:09:28 +00:00
8f5ffeb384 Shields: Remove registration delay, closes #88 2017-03-10 18:05:16 +00:00
ca79d39688 Armor stand: Improve TNT effects, closes #55 2017-03-08 19:36:30 +00:00
8b8a554ff7 Add support for sfinv 2017-03-08 17:47:38 +00:00
3df7802439 added new torch fire nodes
added new torch nodes to the fire nodes list.
2017-03-08 17:44:49 +00:00
19e297a2e8 Update inventory_plus formspec style 2017-03-03 17:59:31 +00:00
190614d47b Fix potential bug with new bone location method 2017-02-24 23:00:03 +00:00
37b10d1cee Remove redundant code 2017-02-24 22:45:23 +00:00
4b45f85687 Improve bones locating and fallback, fixes #84 2017-02-24 22:32:27 +00:00
a5b650285b beter smart_inventory integration 2017-02-21 19:07:17 +00:00
26212fb3e4 Add new armor textures by @daviddoesminetest 2017-02-19 19:33:10 +00:00
4829445d12 Update style of default armor formspec 2017-02-15 19:37:35 +00:00
4d3b219e7d add smart_inventory support 2017-02-15 19:06:06 +00:00
81ffdaa6a7 Improve armor stand selection box 2017-02-15 18:25:49 +00:00
ba62febdee Armor stand, check protection and ignore, ignore 2017-02-08 20:57:42 +00:00
8939a0dd43 Armor stand hidden nodes use copy of pos vector 2017-02-08 19:32:42 +00:00
c691f3e219 Prevent building over armor stands 2017-02-08 18:26:15 +00:00
bf9ba59c0f Merge branch 'tobyplowy-master' 2017-01-25 19:49:52 +00:00
75f808131c New armorstand mapping 2017-01-25 19:48:25 +00:00
b88f946929 Bump version to 0.4.7 2017-01-11 19:36:51 +00:00
c63376b523 Improve hazmat-suit documentation, closes #72 2017-01-11 19:28:17 +00:00
c070dfb19f Include years of all licenses 2017-01-11 19:15:06 +00:00
4b70580ce4 Update licensing information 2017-01-08 18:54:24 +00:00
65b6d58580 Prevent armor damage when using /killme command 2016-12-07 19:24:00 +00:00
98786fd8f7 Add killme command to replace old kill command 2016-11-27 17:18:08 +00:00
9105e8403e Merge pull request #62 from paly2/kill_chatcommand_privs
Add "ban" privilege for kill chatcommand
2016-11-27 16:50:03 +00:00
6b2e3adc00 Bump version to 0.4.6 2016-11-27 16:22:29 +00:00
c9001f9e53 Rebase armor model, armature and UV fixes 2016-11-27 16:11:51 +00:00
cc25d6be13 Merge pull request #66 from diogo-gomes/develop
Add table of contents to README.md
2016-08-21 17:52:03 +01:00
f557c4d69e Add table of contents to README.md 2016-07-25 14:48:52 +01:00
456c84e93e Merge pull request #65 from everamzah/fixbones
Try harder to add armor to bones
2016-07-22 17:51:06 +01:00
0157ebd683 Try harder to add armor to bones
Previously, if bones were on a slab, or some non-buildable_to but walkable
node, then the armor would fail to find the bones node (which is Y+1,
typically) and the armor would disappear.  This is an attempt to address that.
2016-07-22 10:46:05 -04:00
c39f838893 Fix a mistake in the kill chatcommand
Use "param" instead of "name" in "func"
2016-06-17 18:29:43 +02:00
862deff373 Add "ban" privilege for kill chatcommand 2016-06-17 16:08:50 +02:00
ac414d3df3 Remove admin shield from creative inventory 2016-05-27 19:51:39 +01:00
3cf6887abd Fix undeclared global error in hazmat_suit 2016-05-18 19:42:37 +01:00
b14db3c43c Add missing placer param to locked armor stand, fixes #59 2016-05-11 22:19:13 +01:00
8f8c6c6bfa Merge pull request #56 from Thomas--S/patch-2
Fix typo
2016-05-11 19:46:48 +01:00
54ec4b3cef Fix typo 2016-05-11 19:25:59 +02:00
32e87ee543 More armor stand fixes 2016-05-04 18:27:21 +01:00
d322a0f110 Modify helmet textures, fixes #49 2016-05-01 20:25:46 +01:00
9cc2f3db02 Radiation protection support added 2016-05-01 17:09:07 +01:00
ddd7f3786c Fix disappearing armor stand entities, again... 2016-05-01 16:11:27 +01:00
5c5359de4f Restore armor stand entities when knocked-back by TNT 2016-04-27 18:48:06 +01:00
1aa2b769d7 Rebase armor player model, fixes #54 2016-04-24 21:13:45 +01:00
5421ce46da Make armor stands 'blast-proof', fixes #55 2016-04-22 18:53:25 +01:00
72cffbae17 Restore moved armor stand objects to original position when possible 2016-04-20 20:26:01 +01:00
170ee39aed Auto remove stray armor stand entities 2016-04-20 18:54:34 +01:00
59bbc55b73 Fix armor stand entity duplication bug 2016-04-16 15:36:48 +01:00
1dd904f5be Merge pull request #50 from Thomas--S/patch-1
Add a locked armor stand
2016-04-13 17:41:37 +01:00
9de8cc12bb Fix disappearing entities when placing stands next to each other 2016-04-10 22:17:45 +01:00
4e8cf05436 Add a locked armor stand
This change adds a locked armor stand, so that player can use them savely on multiplayer worlds.
2016-04-10 20:11:53 +02:00
b6a44057a6 Fix some tabulation 2016-04-09 01:19:32 +01:00
ae33659168 Make cactus leggings inventory image more consistent 2016-04-08 21:35:56 +01:00
fb29ce9150 Add a chest-like visible armor stand, closes #48 2016-04-08 20:17:28 +01:00
7408ebcd81 Add support for mod managers 2016-03-25 19:52:00 +00:00
36737441d4 Merge pull request #45 from tenplus1/patch-7
Added insta-kill ability for tools/commands
2016-02-14 19:49:09 +00:00
5a112547e6 Added insta-kill ability for tools/commands
Some armor was too powerful that killing yourself to respawn wouldn't work or instant kill tools for admin didn't have effect, so I've added a check so that if the player is dealt with more than -100 damage points it instantly kills them but doesn't damage armor.  Also added /kill command.
2016-02-08 19:05:32 +00:00
0d5cf6d58a Merge pull request #44 from proller/patch-1
Dont rewrite inventory in creative mode
2016-02-08 03:54:28 +08:00
f17a104ab1 Dont rewrite inventory in creative mode
happens on first press I if no unified inventory installed
2016-02-07 18:46:37 +03:00
f83e7e9984 Merge pull request #43 from tenplus1/patch-6
admin helmet lets you breathe underwater
2016-01-28 01:35:46 +08:00
be1d353ec0 Merge pull request #42 from tenplus1/patch-5
Add ability to breath underwater
2016-01-28 01:34:45 +08:00
241aa663f1 admin helmet lets you breathe underwater
added armor_water=1 group to admin helmet so players can breathe underwater.
2016-01-25 14:48:23 +00:00
921e1ace24 Add ability to breath underwater
Added functionality for armor to have armor_water=1 in groups so that player can breathe underwater.
2016-01-25 14:47:05 +00:00
0ec2dbfb36 Update default fire protection nodes, closes #41 2015-12-19 19:25:43 +00:00
7fc991765c Utilize player_on_hpchange callback 2015-12-09 21:03:45 +00:00
991d2955e0 Simplify previous commit 2015-12-04 20:37:24 +00:00
64ec3dcf93 Allow armor textures to be specified by the tool definition 2015-12-04 18:42:42 +00:00
e1caf0ab0c Bump version to 0.4.5 2015-11-15 22:56:53 +00:00
a44d1a2530 Add 'listring' support for inventory mods, closes #38 2015-11-15 21:50:27 +00:00
16bc6232ca Add support for unified inventory 'ui_full' privilege 2015-11-15 19:18:21 +00:00
6efe3bf116 Merge pull request #40 from CraigyDavi/prevent-admin-drops
Prevent admin armor from being dropped
2015-10-30 01:46:19 +08:00
67867e78ec Prevent admin armor from being dropped 2015-10-29 14:19:59 +00:00
64f6be4d61 Bugfix: invalid capture index with non-english player names, resolves #39 2015-10-17 19:20:28 +01:00
741faf3520 Fix support for crafting modpack 2015-09-09 19:07:31 +01:00
1c56ee4bd6 Merge pull request #31 from tenplus1/patch-2
dtime glitches
2015-08-08 18:05:02 +01:00
40a3c1e0c4 Include Technic Armor in README.md 2015-07-25 19:11:36 +01:00
ae7ad422a5 Belated version string update (oopsie) 2015-07-15 20:52:56 +01:00
bad1452e87 Register fire-node overrides at start-up 2015-07-15 19:00:16 +01:00
7cefc1a7ba dtime glitches
sometimes dtime isn't registering when armor.update_armor is called and so it never checks for fire resistance on armor meaning cactus is fireproof if ethereal mod is found...  we cant have that :)  replaced dtime with ARMOR_UPDATE_TIME and it works fine :)
2015-07-15 16:57:17 +01:00
8f2badeec3 Add support for unified inventory 'lite' mode 2015-07-01 19:21:14 +01:00
734e01e847 Only check for fire damage if valid delta time 2015-05-15 18:39:32 +01:00
4eabd8512a Only round the drop position for bones (deja vu) 2015-05-06 20:59:22 +01:00
14a0eb8cca Fix armor damage when using fire protection (my bad) 2015-05-06 20:06:07 +01:00
e1ffdd6a0d Add technic shields by poet.nohit 2015-05-06 19:03:40 +01:00
306f193db6 Stop dropped armor disappearing into ground
This stops dropped armor disappearing into ground at times...
2015-05-06 18:41:40 +01:00
6704431499 Bump version to 0.4.4 2015-05-04 19:24:34 +01:00
bc0ea6b5bf Add technic armor by poet.nohit 2015-05-04 18:42:46 +01:00
0fc71201b4 Add crystal armor and fire protection by TenPlus1 2015-05-04 17:08:40 +01:00
d107708bec Fix Lua escape sequence, resolves #28 2015-05-01 18:06:43 +01:00
bd2ebac24e Merge pull request #27 from indriApollo/master
add support for inventory_enhanced
2015-04-26 12:23:24 +01:00
ebe159ac2c add support for inventory_enhanced 2015-04-25 18:45:59 +02:00
1d1534b416 Merge pull request #25 from indriApollo/master
Add support for wardrobe mod
2015-04-25 15:53:35 +01:00
91602ed6f2 Add support for wardrobe mod 2015-04-25 14:28:45 +02:00
2b0ce6f63e Check node is not nil before indexing 2015-04-17 19:41:15 +01:00
3badcea0d9 Merge pull request #24 from Pilcrow182/master
drop armor if no bones node is found
2015-04-17 19:38:26 +01:00
d2f32beebb drop armor if no bones node is found 2015-04-16 21:57:07 -05:00
b3f755f7d7 Merge pull request #23 from Pilcrow182/master
Put aromr drops into a single loop, fix #22
2015-04-15 18:57:15 +01:00
dec92749f9 Put aromr drops into a single loop, fix #22 2015-04-14 18:22:22 -05:00
9da2395586 More error logging improvements, fix #21 2015-04-02 20:59:45 +01:00
6942aa37d2 Drop excess armor items when bones are full 2015-03-21 17:48:09 +00:00
7da9d81963 Merge pull request #20 from ExeterDad/master
smaller b3d export
2015-03-20 18:20:27 +00:00
905fc9fcb0 smaller b3d export 2015-03-18 20:50:54 -04:00
b8e5d0adde Fix inverted normal on inner right arm 2015-03-18 18:37:04 +00:00
58337c0404 Better skin mod support and more preview bug fixes 2015-03-08 18:29:17 +00:00
87af6e0c68 Fix missing preview image when using simple_skins mod 2015-03-08 15:21:37 +00:00
70d353bb6c Merge pull request #19 from Calinou/optimize_textures
Optimize textures using OptiPNG
2015-02-22 13:54:28 +00:00
6e0fbc8bb2 Optimize textures using OptiPNG 2015-02-22 10:13:06 +01:00
9c2b9c9b5a Character model improvements. Extruded shields - closes #18 2015-02-21 16:34:49 +00:00
b8be801b94 Bump version to 0.4.3 2015-02-20 21:27:47 +00:00
679888398f Craft wooden armor from any type of wood [group:wood] 2015-02-20 15:09:30 +00:00
c03cefbc87 Don't show admin armor in the creative inventory 2015-02-19 22:11:03 +00:00
d95f494a94 Add some wieldview bug fixes from Carbone game by Calinou 2015-02-19 22:01:09 +00:00
195d138da5 Use b3d armor model export by ExeterDad 2015-02-19 21:08:24 +00:00
dd9c63e4ca Merge pull request #17 from ExeterDad/master
unlinked textures in 3d_amor_character blend file, and created 3d_amor ....
2015-02-19 20:56:26 +00:00
358e4a2467 unlinked textures in 3d_amor_character blend file, and created 3d_amor .b3d export 2015-02-19 14:59:44 -05:00
3dd43c7c6f Update shields to use the ARMOR_MATERIALS table 2015-02-19 19:18:34 +00:00
b17d8ea55a Allow individual armor materials to be disabled via armor.conf 2015-02-19 18:55:58 +00:00
e6979e9409 Update model files for newer versions of blender 2015-02-01 16:53:39 +00:00
466c5e6957 Add missing 'admin boots' texture 2015-01-24 00:18:20 +00:00
a9fcbf29fe Added cactus armor and admin armor 2015-01-09 20:16:22 +00:00
499d5af310 More error logging enhancements 2015-01-07 21:25:40 +00:00
e3c2616328 Improve error logging a little 2015-01-04 21:37:12 +00:00
b5db0f1aa6 Remove undeclared variable warnings on start-up 2015-01-04 19:57:55 +00:00
ad6c464573 More UV fixes 2014-10-09 18:34:21 +01:00
5ab2f73695 Fix UV error on cape 2014-10-08 18:55:01 +01:00
e14af35b95 Add compatibilty for caped skins 2014-10-05 19:05:11 +01:00
c3d37e83c2 Remove old character model 2014-10-05 19:03:40 +01:00
046880a534 Add compatiblity for SmallJoker's u_skins fork 2014-10-02 21:08:18 +01:00
258b1cbf48 Bump version to 0.4.2 2014-09-28 19:51:35 +01:00
c10a606632 Update README.md and fix paste error in crafting_guide.txt 2014-09-28 19:37:16 +01:00
2415d66057 Merge pull request #12 from donat-b/patch-1
Update init.lua
2014-09-28 15:13:09 +01:00
abf445014e Update init.lua
fix typo in condition
2014-09-28 15:39:31 +04:00
4415e2b33b Add support for simple skins by TenPlus1 2014-09-12 18:30:09 +01:00
36688c74a8 Add check for nil player inventory 2014-09-11 20:13:16 +01:00
672dbe1f54 Expose physics overrides in global armor.def 2014-09-11 20:11:08 +01:00
3c98acb9c9 Make ARMOR_DROP default depend on presence of bones mod 2014-08-17 17:07:27 +01:00
5075cc48a4 Allow per world configuration overrides 2014-08-17 17:00:52 +01:00
7eebc378a6 Fix crash if wielditem inventory image is nil 2014-06-25 21:10:35 +01:00
6f7a0ea7fc Merge pull request #9 from Megaf/master
Added Gold Armor and Shield
2014-06-12 22:28:47 +01:00
7ee4126d15 Merge branch 'master' of https://github.com/Megaf/minetest-3d_armor 2014-06-12 12:39:50 -03:00
b67de94223 Added gold recipe. 2014-06-12 12:39:17 -03:00
3604420d9e Added Gold Shield recipe. 2014-06-12 12:10:43 -03:00
0936d6f173 Change gold damage.
Gold is equivalent as bronze now.
2014-06-12 12:06:03 -03:00
e4ab8c02ac Created gold shields
They are as strong as Bronze Shields.
2014-06-12 12:04:08 -03:00
db157c080d Added Gold textures to shields.
new file:   shields/textures/shields_inv_shield_gold.png
	new file:   shields/textures/shields_shield_gold.png
	new file:   shields/textures/shields_shield_gold_preview.png
2014-06-12 12:00:52 -03:00
aaf90c2b24 new file: 3d_armor/textures/3d_armor_inv_chestplate_gold.png 2014-06-12 11:56:43 -03:00
4420afb8d1 Added gold textures.
new file:   3d_armor/textures/3d_armor_boots_gold.png
	new file:   3d_armor/textures/3d_armor_boots_gold_preview.png
	new file:   3d_armor/textures/3d_armor_chestplate_gold.png
	new file:   3d_armor/textures/3d_armor_chestplate_gold_preview.png
	new file:   3d_armor/textures/3d_armor_helmet_gold.png
	new file:   3d_armor/textures/3d_armor_helmet_gold_preview.png
	new file:   3d_armor/textures/3d_armor_inv_boots_gold.png
	new file:   3d_armor/textures/3d_armor_inv_helmet_gold.png
	new file:   3d_armor/textures/3d_armor_inv_leggings_gold.png
	new file:   3d_armor/textures/3d_armor_leggings_gold.png
	new file:   3d_armor/textures/3d_armor_leggings_gold_preview.png
2014-06-12 11:44:28 -03:00
3e9ce303e6 Update crafting_guide.txt
Added gold armor recipes.
2014-06-12 11:34:28 -03:00
11887fc73b Added Gold armor 2014-06-12 11:32:58 -03:00
85f56f7ba0 Check for valid player inventory 2014-04-21 19:10:24 +01:00
eedf913638 Set inventory mod to main page on die player 2014-04-18 00:12:38 +01:00
ecfd397d77 Fix error in previous commit 2014-04-15 22:06:47 +01:00
b76508397f Only round the drop position when using bones mod 2014-04-15 21:55:23 +01:00
9aaba7569c Update config example 2014-04-15 21:52:24 +01:00
1886fe6b1a Fix armor wear level being fully restored on item drop 2014-04-14 19:28:23 +01:00
19d45efd12 Fix preview not updating when armor is destroyed 2014-04-14 19:25:10 +01:00
72b612f081 Update armor.conf.example 2014-04-13 20:26:14 +01:00
8a881022e9 Make armor more configurable 2014-04-13 20:17:11 +01:00
8457220413 Add support for unified inventory and skins 2014-04-13 17:41:19 +01:00
cf2786a818 Add support for bones mod 2014-04-08 22:03:01 +01:00
5345c50c7e Bump version to 0.4.1 for minetest 0.4.9 2014-01-03 20:55:32 +00:00
2b8e0c5fd9 Merge pull request #6 from Bremaweb/armor-physics
add physics overrides to armor
2013-12-23 11:24:12 -08:00
55e2b69a08 change delay back to 0 2013-12-22 19:51:46 -06:00
a07a00c117 remove unused variable 2013-12-20 23:56:50 -06:00
681bf25505 add physics overrides to armor 2013-12-20 23:52:15 -06:00
0b3deea513 Improve player model hanlding and update to version 0.4.0 2013-11-12 21:22:52 +00:00
9dbf76d013 UV mapping fix, edge of boots showing on hat layer 2013-10-15 22:03:43 +01:00
f71204db09 Merge pull request #5 from BlockMen/2nd
Better implementation of support for hud
2013-09-13 10:38:44 -07:00
025c0136b7 Merge pull request #4 from BlockMen/master
Add support for Better HUD mod
2013-09-12 10:15:26 -07:00
cf87528a03 General way to provide read out of armor 2013-09-12 01:29:30 +02:00
9481e548cf Add support for Better HUD mod 2013-09-12 01:08:11 +02:00
02ba28f11b Make wielded item more 3d looking 2013-08-04 22:20:03 +01:00
5e52758216 Add texture transform support 2013-08-04 22:17:08 +01:00
59048743ab Update Textures 2013-07-14 19:20:54 +01:00
cfc6984a36 Update Models 2013-07-14 19:15:11 +01:00
619a52688f Add multiple UV texture support 2013-07-14 18:24:24 +01:00
8f2852c6b3 Rename inventory++ icon 2013-07-06 18:05:10 +01:00
956193b49a Re add support for inventory++ by Zeg9 2013-07-04 19:15:38 +01:00
d7a87a515b Only load formspec when armor inventory selected 2013-06-26 22:55:55 +01:00
eeb69e1280 Update README.md 2013-06-24 20:45:05 +01:00
cf0331a043 Add diamond shield craft registration 2013-06-24 20:34:51 +01:00
61e6052019 Add shields back as a separate mod 2013-06-24 19:06:19 +01:00
0edd6ac9e0 Update README.md 2013-06-22 19:40:54 +01:00
efea71a63e Version update: 0.3.0 2013-06-22 19:31:57 +01:00
250 changed files with 6088 additions and 7263 deletions

14
.github/workflows/integration-test.yml vendored Normal file
View File

@ -0,0 +1,14 @@
name: integration-test
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: integration-test
run: ./integration-test.sh

17
.github/workflows/luacheck.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: luacheck
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: apt
run: sudo apt-get install -y luarocks
- name: luacheck install
run: luarocks install --local luacheck
- name: luacheck run
run: $HOME/.luarocks/bin/luacheck ./

4
.gitignore vendored
View File

@ -4,4 +4,8 @@
*bak*
tags
*.vim
armor.conf
## Eclipse project files & directories
.project
.settings

34
.luacheckrc Normal file
View File

@ -0,0 +1,34 @@
unused_args = false
globals = {
"wieldview",
"armor",
"armor_i18n",
"inventory_plus"
}
read_globals = {
-- Stdlib
string = {fields = {"split"}},
table = {fields = {"copy", "getn"}},
-- Minetest
"vector", "ItemStack",
"dump", "VoxelArea",
-- deps
"default",
"minetest",
"unified_inventory",
"intllib",
"wardrobe",
"player_monoids",
"armor_monoid",
"sfinv",
"ARMOR_MATERIALS",
"ARMOR_FIRE_NODES",
"pova",
"skins",
"u_skins"
}

26
3d_armor/LICENSE.txt Normal file
View File

@ -0,0 +1,26 @@
[mod] 3d Armor [3d_armor]
=========================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
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

View File

@ -1,15 +1,191 @@
[mod] Visible Player Armor [3d_armor]
=====================================
depends: default, inventory_plus, unified_skins
Depends: default
Adds craftable armor that is visible to other players. Each armor item worn contibutes to
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.
Armor takes damage when a player is hurt but also offers a percentage chance of healing.
Overall level is boosted by 10% when wearing a full matching set.
default settings: [minetest.conf]
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.
# Set number of seconds between armor updates.
3d_armor_update_time = 1
Armor Configuration
-------------------
Override the following default settings by adding them to your minetest.conf file.
-- 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 = <filename>
preview = <filename>
armor_groups = <table>
damage_groups = <table>
reciprocate_damage = <bool>
on_equip = <function>
on_unequip = <function>
on_destroy = <function>
on_damage = <function>
on_punched = <function>
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)

539
3d_armor/api.lua Normal file
View File

@ -0,0 +1,539 @@
-- 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",
},
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 state = 0
local count = 0
local material = {count=1}
local preview = armor:get_preview(name)
local texture = "3d_armor_trans.png"
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
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 item = stack:get_name()
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
-- Preserve immortal group (damage disabled for player)
local immortal = player:get_armor_groups().immortal
if immortal and immortal ~= 0 then
groups.immortal = 1
end
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
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 set_state
local set_count
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 itemname = stack:get_name()
local use = minetest.get_item_group(itemname, "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(itemname, "flammable") > 0
end
if damage == true then
self:damage(player, i, stack, use)
set_state = self.def[name].state
set_count = self.def[name].count
end
state = state + stack:get_wear()
count = count + 1
end
end
if set_count and set_count ~= count then
state = set_state or state
count = set_count or count
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

View File

@ -0,0 +1,65 @@
-- 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.
-- Note that existing armor that is removed will show up as an unknown item.
ARMOR_MATERIALS = {
wood = "group:wood",
cactus = "default:cactus",
steel = "default:steel_ingot",
bronze = "default:bronze_ingot",
diamond = "default:diamond",
gold = "default:gold_ingot",
mithril = "moreores:mithril_ingot",
crystal = "ethereal:crystal_ingot",
}
-- Enable fire protection (defaults true if using ethereal mod)
ARMOR_FIRE_PROTECT = false
-- Fire protection nodes, (name, protection level, damage)
ARMOR_FIRE_NODES = {
{"default:lava_source", 5, 4},
{"default:lava_flowing", 5, 4},
{"fire:basic_flame", 3, 4},
{"fire:permanent_flame", 3, 4},
{"ethereal:crystal_spike", 2, 1},
{"ethereal:fire_flower", 2, 1},
{"default:torch", 1, 1},
}
-- Increase this if you get initialization glitches when a player first joins.
ARMOR_INIT_DELAY = 1
-- Number of initialization attempts.
-- Use in conjunction with ARMOR_INIT_DELAY if initialization problems persist.
ARMOR_INIT_TIMES = 1
-- Increase this if armor is not getting into bones due to server lag.
ARMOR_BONES_DELAY = 1
-- How often player armor/wield items are updated.
ARMOR_UPDATE_TIME = 1
-- Drop armor when a player dies.
-- Uses bones mod if present, otherwise items are dropped around the player.
ARMOR_DROP = true
-- Pulverise armor when a player dies, overrides ARMOR_DROP.
ARMOR_DESTROY = false
-- You can use this to increase or decrease overall armor effectiveness,
-- eg: ARMOR_LEVEL_MULTIPLIER = 0.5 will reduce armor level by half.
ARMOR_LEVEL_MULTIPLIER = 1
-- You can use this to increase or decrease overall armor healing,
-- eg: ARMOR_HEAL_MULTIPLIER = 0 will disable healing altogether.
ARMOR_HEAL_MULTIPLIER = 1
-- You can use this to increase or decrease overall armor radiation protection,
-- eg: ARMOR_RADIATION_MULTIPLIER = 0 will completely disable radiation protection.
-- Note: patched technic mod is required
ARMOR_RADIATION_MULTIPLIER = 1

372
3d_armor/armor.lua Normal file
View File

@ -0,0 +1,372 @@
-- support for i18n
local S = armor_i18n.gettext
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,
})
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},
})
local wood_armor_fuel = {
helmet = 6,
chestplate = 8,
leggings = 7,
boots = 5
}
for armor, burn in pairs(wood_armor_fuel) do
minetest.register_craft({
type = "fuel",
recipe = "3d_armor:" .. armor .. "_wood",
burntime = burn,
})
end
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},
})
local cactus_armor_fuel = {
helmet = 14,
chestplate = 16,
leggings = 15,
boots = 13
}
for armor, burn in pairs(cactus_armor_fuel) do
minetest.register_craft({
type = "fuel",
recipe = "3d_armor:" .. armor .. "_cactus",
burntime = burn,
})
end
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"),
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"),
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"),
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"),
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

View File

@ -1,91 +0,0 @@
armor_api = {
player_hp = {},
}
armor_api.get_armor_textures = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local textures = {}
local player_inv = player:get_inventory()
for _,v in ipairs({"head", "torso", "legs"}) do
local stack = player_inv:get_stack("armor_"..v, 1)
if stack:get_definition().groups["armor_"..v] then
local item = stack:get_name()
textures[v] = item:gsub("%:", "_")..".png"
end
end
local stack = player_inv:get_stack("armor_shield", 1)
if stack:get_definition().groups["armor_shield"] then
local item = stack:get_name()
textures["shield"] = minetest.registered_items[item].inventory_image
end
return textures
end
armor_api.set_player_armor = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local player_inv = player:get_inventory()
local armor_level = 0
for _,v in ipairs({"head", "torso", "legs", "shield"}) do
local stack = player_inv:get_stack("armor_"..v, 1)
local armor = stack:get_definition().groups["armor_"..v] or 0
armor_level = armor_level + armor
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
end
player:set_armor_groups(armor_groups)
uniskins:update_player_visuals(player)
end
armor_api.update_armor = function(self, player)
if not player then
return
end
local name = player:get_player_name()
local hp = player:get_hp()
if hp == nil or hp == 0 or hp == self.player_hp[name] then
return
end
if self.player_hp[name] > hp then
local player_inv = player:get_inventory()
local armor_inv = minetest.get_inventory({type="detached", name=name.."_outfit"})
if armor_inv == nil then
return
end
local heal_max = 0
for _,v in ipairs({"head", "torso", "legs", "shield"}) do
local stack = armor_inv:get_stack("armor_"..v, 1)
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_"..v, 1, stack)
player_inv:set_stack("armor_"..v, 1, stack)
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
self:set_player_armor(player)
end
heal_max = heal_max + heal
end
end
if heal_max > math.random(100) then
player:set_hp(self.player_hp[name])
return
end
end
self.player_hp[name] = hp
end

View File

@ -12,8 +12,13 @@ Helmets:
+---+---+---+
[3d_armor:helmet_wood] X = [default:wood]
[3d_armor:helmet_cactus] X = [default:cactus]
[3d_armor:helmet_steel] X = [default:steel_ingot]
[3d_armor:helmet_bronze] X = [default:bronze_ingot]
[3d_armor:helmet_diamond] X = [default:diamond]
[3d_armor:helmet_gold] X = [default:gold_ingot]
[3d_armor:helmet_mithril] X = [moreores:mithril_ingot] *
[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] **
Chestplates:
@ -26,8 +31,13 @@ Chestplates:
+---+---+---+
[3d_armor:chestplate_wood] X = [default:wood]
[3d_armor:chestplate_cactus] X = [default:cactus]
[3d_armor:chestplate_steel] X = [default:steel_ingot]
[3d_armor:chestplate_bronze] X = [default:bronze_ingot]
[3d_armor:chestplate_diamond] X = [default:diamond]
[3d_armor:chestplate_gold] X = [default:gold_ingot]
[3d_armor:chestplate_mithril] X = [moreores:mithril_ingot] *
[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] **
Leggings:
@ -40,35 +50,30 @@ Leggings:
+---+---+---+
[3d_armor:leggings_wood] X = [default:wood]
[3d_armor:leggings_cactus] X = [default:cactus]
[3d_armor:leggings_steel] X = [default:steel_ingot]
[3d_armor:leggings_bronze] X = [default:bronze_ingot]
[3d_armor:leggings_diamond] X = [default:diamond]
[3d_armor:leggings_gold] X = [default:gold_ingot]
[3d_armor:leggings_mithril] X = [moreores:mithril_ingot] *
[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] **
Shields:
Boots:
+---+---+---+
| X | X | X |
| X | | X |
+---+---+---+
| X | X | X |
+---+---+---+
| | X | |
| X | | X |
+---+---+---+
[3d_armor:shield_wood] X = [default:wood]
[3d_armor:shield_steel] X = [default:steel_ingot]
[3d_armor:shield_bronze] X = [default:bronze_ingot
Enhanced Wooden Shield:
SI = [default:steel_ingot]
WS = [3d_armor:shield_wood]
+----+
| SI |
+----+
| WS |
+----+
| SI |
+----+
[3d_armor:shield_enhanced_wood]
[3d_armor:boots_wood] X = [default:wood]
[3d_armor:boots_cactus] X = [default:cactus]
[3d_armor:boots_steel] X = [default:steel_ingot]
[3d_armor:boots_bronze] X = [default:bronze_ingot
[3d_armor:boots_diamond] X = [default:diamond]
[3d_armor:boots_gold] X = [default:gold_ingot]
[3d_armor:boots_mithril] X = [moreores:mithril_ingot] *
[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] **
* Requires moreores mod by Calinou - https://forum.minetest.net/viewtopic.php?id=549
** Requires ethereal mod by Chinchow & TenPlus1 - https://github.com/tenplus1/ethereal

View File

@ -1,3 +1,8 @@
default
inventory_plus
unified_skins
player_monoids?
armor_monoid?
pova?
fire?
ethereal?
bakedclay?
intllib?

1
3d_armor/description.txt Normal file
View File

@ -0,0 +1 @@
Adds craftable armor that is visible to other players.

View File

@ -1,231 +1,493 @@
dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor_api.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
local time = 0
local update_time = tonumber(minetest.setting_get("3d_armor_update_time"))
if not update_time then
update_time = 1
minetest.setting_set("3d_armor_update_time", tostring(update_time))
-- 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")
-- integration test
if minetest.settings:get_bool("enable_3d_armor_integration_test") then
dofile(modpath.."/integration_test.lua")
end
-- Regisiter Head Armor
minetest.register_tool("3d_armor:helmet_wood", {
description = "Wood Helmet",
inventory_image = "3d_armor_inv_helmet_wood.png",
groups = {armor_head=5, armor_heal=0, armor_use=1000},
wear = 0,
})
-- Legacy Config Support
minetest.register_tool("3d_armor:helmet_steel", {
description = "Steel Helmet",
inventory_image = "3d_armor_inv_helmet_steel.png",
groups = {armor_head=10, armor_heal=5, armor_use=250},
wear = 0,
})
minetest.register_tool("3d_armor:helmet_bronze", {
description = "Bronze Helmet",
inventory_image = "3d_armor_inv_helmet_bronze.png",
groups = {armor_head=15, armor_heal=10, armor_use=100},
wear = 0,
})
-- Regisiter Torso Armor
minetest.register_tool("3d_armor:chestplate_wood", {
description = "Wood Chestplate",
inventory_image = "3d_armor_inv_chestplate_wood.png",
groups = {armor_torso=10, armor_heal=0, armor_use=1000},
wear = 0,
})
minetest.register_tool("3d_armor:chestplate_steel", {
description = "Steel Chestplate",
inventory_image = "3d_armor_inv_chestplate_steel.png",
groups = {armor_torso=15, armor_heal=5, 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=25, armor_heal=10, armor_use=100},
wear = 0,
})
-- Regisiter Leg Armor
minetest.register_tool("3d_armor:leggings_wood", {
description = "Wood Leggings",
inventory_image = "3d_armor_inv_leggings_wood.png",
groups = {armor_legs=5, armor_heal=0, armor_use=1000},
wear = 0,
})
minetest.register_tool("3d_armor:leggings_steel", {
description = "Steel Leggings",
inventory_image = "3d_armor_inv_leggings_steel.png",
groups = {armor_legs=10, armor_heal=5, armor_use=250},
wear = 0,
})
minetest.register_tool("3d_armor:leggings_bronze", {
description = "Bronze Leggings",
inventory_image = "3d_armor_inv_leggings_bronze.png",
groups = {armor_legs=15, armor_heal=10, armor_use=100},
wear = 0,
})
-- Regisiter Shields
minetest.register_tool("3d_armor:shield_wood", {
description = "Wooden Shield",
inventory_image = "3d_armor_inv_shield_wood.png",
groups = {armor_shield=10, armor_heal=0, armor_use=1000},
wear = 0,
})
minetest.register_tool("3d_armor:shield_enhanced_wood", {
description = "Enhanced Wooden Shield",
inventory_image = "3d_armor_inv_shield_enhanced_wood.png",
groups = {armor_shield=15, armor_heal=5, armor_use=500},
wear = 0,
})
minetest.register_tool("3d_armor:shield_steel", {
description = "Steel Shield",
inventory_image = "3d_armor_inv_shield_steel.png",
groups = {armor_shield=20, armor_heal=5, armor_use=250},
wear = 0,
})
minetest.register_tool("3d_armor:shield_bronze", {
description = "Bronze Shield",
inventory_image = "3d_armor_inv_shield_bronze.png",
groups = {armor_shield=25, armor_heal=10, armor_use=100},
wear = 0,
})
-- Register Craft Recipies
local craft_ingreds = {
wood = "default:wood",
steel = "default:steel_ingot",
bronze = "default:bronze_ingot",
}
for k, v in pairs(craft_ingreds) 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:shield_"..k,
recipe = {
{v, v, v},
{v, v, v},
{"", v, ""},
},
})
local input = io.open(modpath.."/armor.conf", "r")
if input then
dofile(modpath.."/armor.conf")
input:close()
end
minetest.register_craft({
output = "3d_armor:shield_enhanced_wood",
recipe = {
{"default:steel_ingot"},
{"3d_armor:shield_wood"},
{"default:steel_ingot"},
},
})
-- Register Callbacks
minetest.register_on_player_receive_fields(function(player, formname, fields)
local name = player:get_player_name()
if fields.outfit then
inventory_plus.set_inventory_formspec(player, "size[8,7.5]"
.."button[0,0;2,0.5;main;Back]"
.."list[current_player;main;0,3.5;8,4;]"
.."list[detached:"..name.."_outfit;armor_head;3,0;1,1;]"
.."list[detached:"..name.."_outfit;armor_torso;3,1;1,1;]"
.."list[detached:"..name.."_outfit;armor_legs;3,2;1,1;]"
.."list[detached:"..name.."_outfit;armor_shield;4,1;1,1;]")
return
input = io.open(worldpath.."/armor.conf", "r")
if input then
dofile(worldpath.."/armor.conf")
input:close()
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
for field, _ in pairs(fields) do
if string.sub(field,0,string.len("skins_set_")) == "skins_set_" then
minetest.after(0, function(player)
armor_api:set_player_armor(player)
end, player)
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
-- 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
-- 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
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_damage(function(player, index, stack)
local name = player:get_player_name()
local def = stack:get_definition()
if name and def and def.description and stack:get_wear() > 60100 then
minetest.chat_send_player(name, S("Your @1 is almost broken!", def.description))
minetest.sound_play("default_tool_breaks", {to_player = name, gain = 2.0})
end
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))
minetest.sound_play("default_tool_breaks", {to_player = name, gain = 2.0})
end
end)
minetest.register_on_joinplayer(function(player)
inventory_plus.register_button(player,"outfit", "Outfit")
local function validate_armor_inventory(player)
-- Workaround for detached inventory swap exploit
local _, inv = armor:get_valid_player(player, "[validate_armor_inventory]")
local pos = player:get_pos()
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()
local name = player:get_player_name()
local armor_inv = minetest.create_detached_inventory(name.."_outfit",{
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)
minetest.item_drop(stack, player, pos)
-- 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
local function init_player_armor(initplayer)
local name = initplayer:get_player_name()
local pos = initplayer: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)
player:get_inventory():set_stack(listname, index, stack)
armor_api:set_player_armor(player)
validate_armor_inventory(player)
armor:save_armor_inventory(player)
armor:set_player_armor(player)
end,
on_take = function(inv, listname, index, stack, player)
player:get_inventory():set_stack(listname, index, nil)
armor_api:set_player_armor(player)
validate_armor_inventory(player)
armor:save_armor_inventory(player)
armor:set_player_armor(player)
end,
allow_put = function(inv, listname, index, stack, player)
if inv:is_empty(listname) then
return 1
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, put_stack, player)
local element = armor:get_element(put_stack:get_name())
if not element then
return 0
end
return 0
for i = 1, 6 do
local stack = inv:get_stack("armor", i)
local def = stack:get_definition() or {}
if def.groups and def.groups["armor_"..element]
and i ~= index then
return 0
end
end
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 0
return count
end,
})
for _,v in ipairs({"head", "torso", "legs", "shield"}) do
local armor = "armor_"..v
player_inv:set_size(armor, 1)
armor_inv:set_size(armor, 1)
armor_inv:set_stack(armor, 1, player_inv:get_stack(armor, 1))
}, name)
armor_inv:set_size("armor", 6)
if not armor:load_armor_inventory(initplayer) and armor.migrate_old_inventory then
local player_inv = initplayer: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(initplayer)
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", initplayer, 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(initplayer)
return true
end
-- 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
local player_name = player:get_player_name()
for field, _ in pairs(fields) do
if string.find(field, "skins_set") then
minetest.after(0, function()
local pplayer = minetest.get_player_by_name(player_name)
if player then
local skin = armor:get_player_skin(name)
armor.textures[name].skin = skin
armor:set_player_armor(pplayer)
end
end)
end
end
armor_api.player_hp[name] = 0
minetest.after(0, function(player)
armor_api:set_player_armor(player)
end, player)
end)
minetest.register_on_joinplayer(function(player)
default.player_set_model(player, "3d_armor_character.b3d")
local player_name = player:get_player_name()
minetest.after(0, function()
local pplayer = minetest.get_player_by_name(player_name)
if pplayer and init_player_armor(pplayer) == false then
pending_players[pplayer] = 0
end
end)
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, 16)
local minp = vector.subtract(pos, 16)
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.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
minetest.register_on_player_hpchange(function(player, hp_change, reason)
if player and reason.type ~= "drown" and reason.hunger == nil
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)
time = time + dtime
if time > update_time then
for _,player in ipairs(minetest.get_connected_players()) do
armor_api:update_armor(player)
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
time = 0
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
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

View File

@ -0,0 +1,25 @@
minetest.log("warning", "[TEST] integration-test enabled!")
minetest.register_on_mods_loaded(function()
minetest.after(1, function()
local data = minetest.write_json({ success = true }, true);
local file = io.open(minetest.get_worldpath().."/integration_test.json", "w" );
if file then
file:write(data)
file:close()
end
file = io.open(minetest.get_worldpath().."/registered_nodes.txt", "w" );
if file then
for name in pairs(minetest.registered_nodes) do
file:write(name .. '\n')
end
file:close()
end
minetest.log("warning", "[TEST] integration tests done!")
minetest.request_shutdown("success")
end)
end)

45
3d_armor/intllib.lua Normal file
View File

@ -0,0 +1,45 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- 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

384
3d_armor/locale/es.po Normal file
View File

@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

295
3d_armor/locale/fr.po Normal file
View File

@ -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 <fat115@framasoft.org>, 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 <fat115@framasoft.org>\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"

295
3d_armor/locale/it.po Normal file
View File

@ -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 <h4mlet@riseup.net>, 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 <h4mlet@riseup.net>\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"

296
3d_armor/locale/ms.po Normal file
View File

@ -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) <mnh48mail@gmail.com>, 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) <mnh48mail@gmail.com>\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"

295
3d_armor/locale/pt.po Normal file
View File

@ -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 <borgesdossantosbruno@gmail.com>, 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 <borgesdossantosbruno@gmail.com>\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"

295
3d_armor/locale/pt_BR.po Normal file
View File

@ -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 <borgesdossantosbruno@gmail.com>, 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 <borgesdossantosbruno@gmail.com>\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"

294
3d_armor/locale/ru.po Normal file
View File

@ -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 <codexp@gmx.net>, 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 <codexp@gmx.net>\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 "кристалловый щит"

View File

@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

4
3d_armor/mod.conf Normal file
View File

@ -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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 B

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

Some files were not shown because too many files have changed in this diff Show More