Codebase list minetest-mod-3d-armor / d7a8977
New upstream snapshot. Debian Janitor 1 year, 5 months ago
460 changed file(s) with 5979 addition(s) and 3308 deletion(s). Raw diff Collapse all Expand all
+0
-14
.github/workflows/integration-test.yml less more
0 name: integration-test
1
2 on: [push]
3
4 jobs:
5 build:
6
7 runs-on: ubuntu-latest
8
9 steps:
10 - uses: actions/checkout@v1
11
12 - name: integration-test
13 run: ./integration-test.sh
+0
-17
.github/workflows/luacheck.yml less more
0 name: luacheck
1
2 on: [push]
3
4 jobs:
5 build:
6
7 runs-on: ubuntu-latest
8
9 steps:
10 - uses: actions/checkout@v1
11 - name: apt
12 run: sudo apt-get install -y luarocks
13 - name: luacheck install
14 run: luarocks install --local luacheck
15 - name: luacheck run
16 run: $HOME/.luarocks/bin/luacheck ./
+0
-11
.gitignore less more
0 ## Generic ignorable patterns and files
1 *~
2 .*.swp
3 *bak*
4 tags
5 *.vim
6 armor.conf
7
8 ## Eclipse project files & directories
9 .project
10 .settings
0
1 -- place this file in mod ".ldoc" directory
2
3 local print, type, string, table, tostring, tonumber, error, pairs, ipairs
4 if import then
5 print = import("print")
6 type = import("type")
7 string = import("string")
8 table = import("table")
9 tostring = import("tostring")
10 tonumber = import("tonumber")
11 error = import("error")
12 pairs = import("pairs")
13 ipairs = import("ipairs")
14 end
15
16 project = "3d_armor"
17 title = "3D Armor"
18 format = "markdown"
19 not_luadoc = true
20 boilerplate = false
21 wrap = false
22 style = true
23 favicon = "https://www.minetest.net/media/icon.svg"
24
25 file = {
26 "3d_armor/api.lua",
27 ".ldoc/settings.luadoc",
28 --".ldoc/armors.luadoc",
29 ".ldoc/helmets.luadoc",
30 ".ldoc/chestplates.luadoc",
31 ".ldoc/leggings.luadoc",
32 ".ldoc/boots.luadoc",
33 --".ldoc/shields.luadoc",
34 "shields/init.lua",
35 ".ldoc/crafting.luadoc",
36 }
37
38
39 new_type("setting", "Settings")
40 new_type("armor", "Armors")
41 new_type("craft", "Craft Recipes")
42
43 alias("helmet", "armor")
44 alias("chestplate", "armor")
45 alias("leggings", "armor")
46 alias("boots", "armor")
47 alias("shield", "armor")
48 alias("grp", "group")
49
50 -- function declarations
51 local format_text
52 local format_group
53
54 custom_tags = {
55 -- settings
56 {
57 "settype",
58 title = "Type",
59 hidden = true,
60 },
61 {
62 "min",
63 title = "Minimum Value",
64 hidden = true,
65 },
66 {
67 "max",
68 title = "Maximum Value",
69 hidden = true,
70 },
71 {
72 "default",
73 title = "Default Value",
74 hidden = true,
75 },
76 -- craft items/tools
77 {
78 -- specify image basename only
79 "img",
80 title = "Inventory Image",
81 format = function(value)
82 return "<img src=\"../data/" .. value .. "\" style=\"width:32px; height:32px;\" />"
83 end,
84 },
85 {
86 -- specify full (relative or absolute) image path
87 "image",
88 title = "Image",
89 format = function(value)
90 return "<img src=\"" .. value .. "\" style=\"width:32px; height:32px;\" />"
91 end,
92 },
93 {
94 "group",
95 title = "Groups",
96 format = function(value)
97 return format_group(value)
98 end,
99 },
100 {
101 "armorgrp",
102 title = "Armor Groups",
103 format = function(value)
104 return format_group(value)
105 end,
106 },
107 {
108 "damagegrp",
109 title = "Damage Groups",
110 format = function(value)
111 return format_group(value)
112 end,
113 },
114 }
115
116
117 if string then
118 string.trim = function(st, delim)
119 if not delim then
120 delim = " "
121 end
122
123 while string.find(st, delim) == 1 do
124 st = st:sub(2)
125 end
126
127 while string.sub(st, string.len(st)) == delim do
128 st = st:sub(1, string.len(st)-1)
129 end
130
131 return st
132 end
133
134 string.split = function(st, delim)
135 local list = {}
136
137 local idx = string.find(st, delim)
138 while idx do
139 table.insert(list, st:sub(1, idx-1))
140 st = st:sub(idx+1)
141 idx = string.find(st, delim)
142 end
143 -- add remaining item
144 table.insert(list, st)
145
146 return list
147 end
148 end
149
150 if table then
151 if not table.copy then
152 table.copy = function(orig_table)
153 local new_table = {}
154 for k, v in pairs(orig_table) do
155 new_table[k] = v
156 end
157
158 return new_table
159 end
160 end
161 end
162
163 format_text = function(text, flags)
164 local ret = "<"
165 local ttype = "span"
166 if flags.code then
167 ttype = "code"
168 end
169
170 ret = ret .. ttype .. " style=\""
171
172 if flags.size then
173 ret = ret .. "font-size:" .. flags.size .. ";"
174 end
175 if flags.mono then
176 ret = ret .. "font-family:monospace;"
177 end
178 if flags.italic then
179 ret = ret .. "font-style:italic;"
180 end
181 if flags.bold then
182 ret = ret .. "font-weight:bold;"
183 end
184 if flags.color then
185 ret = ret .. "color:" .. flags.color .. ";"
186 end
187 if flags.bgcolor then
188 ret = ret .. "background-color:" .. flags.bgcolor .. ";"
189 end
190
191 ret = ret .. "\">" .. text .. "</" .. ttype .. ">"
192
193 return ret
194 end
195
196 format_group = function(text)
197 if string then
198 local idx, k, v = string.find(text, " ")
199 if idx then
200 text = format_text(string.sub(text, 1, idx-1) .. ": ", {mono=true, color="darkgreen"})
201 .. string.sub(text, idx)
202 end
203 end
204
205 return text
206 end
207
208
209 local function format_setting_tag(desc, value)
210 return "\n- <span style=\"font-size:80%;\">`" .. desc .. ":`</span> `" .. value .. "`"
211 end
212
213
214 local registered = {
215 settings = {},
216 }
217
218 local function setting_handler(item)
219 -- avoid parsing again
220 if registered.settings[item.name] then
221 return item
222 end
223
224 if not ipairs or not type then
225 return item
226 end
227
228 local tags = {
229 {"settype", "type"},
230 {"default"},
231 {"min", "minimum value"},
232 {"max", "maximum value"},
233 }
234
235 local def = {
236 ["settype"] = format_setting_tag("type", "string"),
237 }
238
239 for _, t in ipairs(tags) do
240 local name = t[1]
241 local desc = t[2]
242 if not desc then desc = name end
243
244 local value = item.tags[name]
245 if type(value) == "table" then
246 if #value > 1 then
247 local msg = item.file.filename .. " (line " .. item.lineno
248 .. "): multiple instances of tag \"" .. name .. "\" found"
249 if error then
250 error(msg)
251 elseif print then
252 print("WARNING: " .. msg)
253 end
254 end
255
256 if value[1] then
257 def[name] = format_setting_tag(desc, value[1])
258 end
259 end
260 end
261
262 item.description = item.description .. "\n\n**Definition:**\n" .. def.settype
263 for _, t in ipairs({def.default, def.min, def.max}) do
264 if t then
265 item.description = item.description .. t
266 end
267 end
268
269 registered.settings[item.name] = true
270
271 return item
272 end
273
274 function custom_display_name_handler(item, default_handler)
275 if item.type == "setting" then
276 item = setting_handler(item)
277 end
278
279 if item then
280 return default_handler(item)
281 end
282 end
283
284
285 local custom_see_links = {
286 ["ObjectRef"] = "https://minetest.gitlab.io/minetest/class-reference/#objectref",
287 ["PlayerMetaRef"] = "https://minetest.gitlab.io/minetest/class-reference/#playermetaref",
288 ["ItemDef"] = "https://minetest.gitlab.io/minetest/definition-tables/#item-definition",
289 ["ItemStack"] = "https://minetest.gitlab.io/minetest/class-reference/#itemstack",
290 ["groups"] = "https://minetest.gitlab.io/minetest/groups/",
291 ["entity_damage_mechanism"] = "https://minetest.gitlab.io/minetest/entity-damage-mechanism/",
292 ["vector"] = "https://minetest.gitlab.io/minetest/representations-of-simple-things/#positionvector",
293 }
294
295 local function format_custom_see(name, section)
296 local url = custom_see_links[name]
297 if not url then
298 url = ""
299 end
300
301 if not name then
302 name = ""
303 end
304
305 return name, url
306 end
307
308 custom_see_handler("^(ObjectRef)$", function(name, section)
309 return format_custom_see(name, section)
310 end)
311
312 custom_see_handler("^(PlayerMetaRef)$", function(name, section)
313 return format_custom_see(name, section)
314 end)
315
316 custom_see_handler("^(ItemDef)$", function(name, section)
317 return format_custom_see(name, section)
318 end)
319
320 custom_see_handler("^(groups)$", function(name, section)
321 return format_custom_see(name, section)
322 end)
323
324 custom_see_handler("^(entity_damage_mechanism)$", function(name, section)
325 return format_custom_see(name, section)
326 end)
327
328 custom_see_handler("^(ItemStack)$", function(name, section)
329 return format_custom_see(name, section)
330 end)
331
332 custom_see_handler("^(vector)$", function(name, section)
333 return name, "https://minetest.gitlab.io/minetest/representations-of-simple-things/#positionvector"
334 end)
0
1 --- 3D Armor Crafting
2 --
3 -- @topic crafting
4
5
6 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
7 --
8 -- @craft armor
9 -- @usage
10 -- Key:
11 -- - m: material
12 -- - wood: group:wood
13 -- - cactus: default:cactus
14 -- - steel: default:steel_ingot
15 -- - bronze: default:bronze_ingot
16 -- - diamond: default:diamond
17 -- - gold: default:gold_ingot
18 -- - mithril: moreores:mithril_ingot
19 -- - crystal: ethereal:crystal_ingot
20 -- - nether: nether:nether_ingot
21 --
22 -- helmet: chestplate: leggings:
23 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
24 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
25 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
26 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
27 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
28 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
29 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
30 --
31 -- boots: shield:
32 -- ┌───┬───┬───┐ ┌───┬───┬───┐
33 -- │ │ │ │ │ m │ m │ m │
34 -- ├───┼───┼───┤ ├───┼───┼───┤
35 -- │ m │ │ m │ │ m │ m │ m │
36 -- ├───┼───┼───┤ ├───┼───┼───┤
37 -- │ m │ │ m │ │ │ m │ │
38 -- └───┴───┴───┘ └───┴───┴───┘
0 #!/usr/bin/env bash
1
2 # Place this file in mod ".ldoc" directory.
3 #
4 # To change output directory set the `d_export` environment variable.
5 # Example:
6 # $ d_export=/custom/path ./gendoc.sh
7
8
9 d_ldoc="$(dirname $(readlink -f $0))"
10 f_config="${d_ldoc}/config.ld"
11
12 cd "${d_ldoc}/.."
13
14 d_root="$(pwd)"
15 d_export="${d_export:-${d_root}/3d_armor/docs/reference}"
16 d_data="${d_export}/data"
17
18 cmd_ldoc="${d_ldoc}/ldoc/ldoc.lua"
19 if test -f "${cmd_ldoc}"; then
20 if test ! -x "${cmd_ldoc}"; then
21 chmod +x "${cmd_ldoc}"
22 fi
23 else
24 cmd_ldoc="ldoc"
25 fi
26
27
28 # clean old files
29 rm -rf "${d_export}"
30
31 # generate items, settings, & crafts topics temp files
32 echo -e "\ngenerating temp files ..."
33 for script in src settings; do
34 script="${d_ldoc}/parse_${script}.py"
35 if test ! -f "${script}"; then
36 echo "ERROR: script doesn't exist: ${script}"
37 else
38 # check script's executable bit
39 if test ! -x "${script}"; then
40 chmod +x "${script}"
41 fi
42 # execute script
43 "${script}"
44 fi
45 done
46
47 echo
48
49 # generate new doc files
50 "${cmd_ldoc}" --UNSAFE_NO_SANDBOX -c "${f_config}" -d "${d_export}" "${d_root}"; retval=$?
51
52 # check exit status
53 if test ${retval} -ne 0; then
54 echo -e "\nan error occurred (ldoc return code: ${retval})"
55 exit ${retval}
56 fi
57
58 echo -e "\ncleaning temp files ..."
59 find "${d_ldoc}" -type f -name "*.luadoc" ! -name "crafting.luadoc" -exec rm -vf {} +
60
61 # HACK: ldoc does not seem to like the "shields:" prefix
62 echo -e "\ncompensating for LDoc's issue with \"shields:\" prefix ..."
63 sed -i \
64 -e 's/<strong>shield_/<strong>shields:shield_/' \
65 -e 's/<td class="name\(.*\)>shield_/<td class="name\1>shields:shield_/' \
66 -e 's/<a href="#shield_/<a href="#shields:shield_/' \
67 -e 's/<a name.*"shield_/<a name="shields:shield_/' \
68 "${d_export}/topics/shields.html"
69
70 # copy textures to data directory
71 printf "\ncopying textures ..."
72 mkdir -p "${d_data}"
73 texture_count=0
74 for d_mod in armor_* shields; do
75 printf "\rcopying textures from ${d_mod} ...\n"
76 for png in $(find "${d_root}/${d_mod}/textures" -maxdepth 1 -type f -name "*.png"); do
77 if test -f "${d_data}/$(basename ${png})"; then
78 echo "WARNING: not overwriting existing file: ${png}"
79 else
80 cp "${png}" "${d_data}"
81 texture_count=$((texture_count + 1))
82 printf "\rcopied ${texture_count} textures"
83 fi
84 done
85 done
86
87 echo -e "\n\nDone!"
0 /* BEGIN RESET
1
2 Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3 Code licensed under the BSD License:
4 http://developer.yahoo.com/yui/license.html
5 version: 2.8.2r1
6 */
7 html {
8 color: #000;
9 background: #FFF;
10 }
11 body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
12 margin: 0;
13 padding: 0;
14 }
15 table {
16 border-collapse: collapse;
17 border-spacing: 0;
18 }
19 fieldset,img {
20 border: 0;
21 }
22 address,caption,cite,code,dfn,em,strong,th,var,optgroup {
23 font-style: inherit;
24 font-weight: inherit;
25 }
26 del,ins {
27 text-decoration: none;
28 }
29 li {
30 margin-left: 20px;
31 }
32 caption,th {
33 text-align: left;
34 }
35 h1,h2,h3,h4,h5,h6 {
36 font-size: 100%;
37 font-weight: bold;
38 }
39 q:before,q:after {
40 content: '';
41 }
42 abbr,acronym {
43 border: 0;
44 font-variant: normal;
45 }
46 sup {
47 vertical-align: baseline;
48 }
49 sub {
50 vertical-align: baseline;
51 }
52 legend {
53 color: #000;
54 }
55 input,button,textarea,select,optgroup,option {
56 font-family: inherit;
57 font-size: inherit;
58 font-style: inherit;
59 font-weight: inherit;
60 }
61 input,button,textarea,select {*font-size:100%;
62 }
63 /* END RESET */
64
65 body {
66 margin-left: 1em;
67 margin-right: 1em;
68 font-family: arial, helvetica, geneva, sans-serif;
69 background-color: #ffffff; margin: 0px;
70 }
71
72 code, tt { font-family: monospace; font-size: 1.1em; }
73 span.parameter { font-family:monospace; }
74 span.parameter:after { content:":"; }
75 span.types:before { content:"("; }
76 span.types:after { content:")"; }
77 .type { font-weight: bold; font-style:italic }
78
79 body, p, td, th { font-size: .95em; line-height: 1.2em;}
80
81 p, ul { margin: 10px 0 0 0px;}
82
83 strong { font-weight: bold;}
84
85 em { font-style: italic;}
86
87 h1 {
88 font-size: 1.5em;
89 margin: 20px 0 20px 0;
90 }
91 h2, h3, h4 { margin: 15px 0 10px 0; }
92 h2 { font-size: 1.25em; }
93 h3 { font-size: 1.15em; }
94 h4 { font-size: 1.06em; }
95
96 a:link { font-weight: bold; color: #004080; text-decoration: none; }
97 a:visited { font-weight: bold; color: #006699; text-decoration: none; }
98 a:link:hover { text-decoration: underline; }
99
100 hr {
101 color:#cccccc;
102 background: #00007f;
103 height: 1px;
104 }
105
106 blockquote { margin-left: 3em; }
107
108 ul { list-style-type: disc; }
109
110 p.name {
111 font-family: "Andale Mono", monospace;
112 padding-top: 1em;
113 }
114
115 pre {
116 background-color: rgb(245, 245, 245);
117 border: 1px solid #C0C0C0; /* silver */
118 padding: 10px;
119 margin: 10px 0 10px 0;
120 overflow: auto;
121 font-family: "Andale Mono", monospace;
122 }
123
124 pre.example {
125 font-size: .85em;
126 }
127
128 table.index { border: 1px #00007f; }
129 table.index td { text-align: left; vertical-align: top; }
130
131 #container {
132 margin-left: 1em;
133 margin-right: 1em;
134 background-color: #f0f0f0;
135 }
136
137 #product {
138 text-align: center;
139 border-bottom: 1px solid #cccccc;
140 background-color: #ffffff;
141 }
142
143 #product big {
144 font-size: 2em;
145 }
146
147 #main {
148 background-color: #f0f0f0;
149 border-left: 2px solid #cccccc;
150 }
151
152 #navigation {
153 float: left;
154 width: 14em;
155 vertical-align: top;
156 background-color: #f0f0f0;
157 overflow: visible;
158 position: fixed;
159 }
160
161 #navigation h2 {
162 background-color:#e7e7e7;
163 font-size:1.1em;
164 color:#000000;
165 text-align: left;
166 padding:0.2em;
167 border-top:1px solid #dddddd;
168 border-bottom:1px solid #dddddd;
169 }
170
171 #navigation ul
172 {
173 font-size:1em;
174 list-style-type: none;
175 margin: 1px 1px 10px 1px;
176 }
177
178 #navigation li {
179 text-indent: -1em;
180 display: block;
181 margin: 3px 0px 0px 22px;
182 }
183
184 #navigation li li a {
185 margin: 0px 3px 0px -1em;
186 }
187
188 #content {
189 margin-left: 14em;
190 padding: 1em;
191 width: 700px;
192 border-left: 2px solid #cccccc;
193 border-right: 2px solid #cccccc;
194 background-color: #ffffff;
195 min-height: 425px;
196 }
197
198 #about {
199 clear: both;
200 padding: 5px;
201 border-top: 2px solid #cccccc;
202 background-color: #ffffff;
203 }
204
205 @media print {
206 body {
207 font: 12pt "Times New Roman", "TimeNR", Times, serif;
208 }
209 a { font-weight: bold; color: #004080; text-decoration: underline; }
210
211 #main {
212 background-color: #ffffff;
213 border-left: 0px;
214 }
215
216 #container {
217 margin-left: 2%;
218 margin-right: 2%;
219 background-color: #ffffff;
220 }
221
222 #content {
223 padding: 1em;
224 background-color: #ffffff;
225 }
226
227 #navigation {
228 display: none;
229 }
230 pre.example {
231 font-family: "Andale Mono", monospace;
232 font-size: 10pt;
233 page-break-inside: avoid;
234 }
235 }
236
237 table.module_list {
238 border-width: 1px;
239 border-style: solid;
240 border-color: #cccccc;
241 border-collapse: collapse;
242 }
243 table.module_list td {
244 border-width: 1px;
245 padding: 3px;
246 border-style: solid;
247 border-color: #cccccc;
248 }
249 table.module_list td.name { background-color: #f0f0f0; min-width: 200px; }
250 table.module_list td.summary { width: 100%; }
251
252
253 table.function_list {
254 border-width: 1px;
255 border-style: solid;
256 border-color: #cccccc;
257 border-collapse: collapse;
258 }
259 table.function_list td {
260 border-width: 1px;
261 padding: 3px;
262 border-style: solid;
263 border-color: #cccccc;
264 }
265 table.function_list td.name { background-color: #f0f0f0; min-width: 200px; }
266 table.function_list td.summary { width: 100%; }
267
268 ul.nowrap {
269 overflow:auto;
270 white-space:nowrap;
271 }
272
273 dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
274 dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
275 dl.table h3, dl.function h3 {font-size: .95em;}
276
277 /* stop sublists from having initial vertical space */
278 ul ul { margin-top: 0px; }
279 ol ul { margin-top: 0px; }
280 ol ol { margin-top: 0px; }
281 ul ol { margin-top: 0px; }
282
283 /* make the target distinct; helps when we're navigating to a function */
284 a:target + * {
285 background-color: #FF9;
286 }
287
288
289 /* styles for prettification of source */
290 pre .comment { color: #558817; }
291 pre .constant { color: #a8660d; }
292 pre .escape { color: #844631; }
293 pre .keyword { color: #aa5050; font-weight: bold; }
294 pre .library { color: #0e7c6b; }
295 pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
296 pre .string { color: #8080ff; }
297 pre .number { color: #f8660d; }
298 pre .operator { color: #2239a8; font-weight: bold; }
299 pre .preprocessor, pre .prepro { color: #a33243; }
300 pre .global { color: #800080; }
301 pre .user-keyword { color: #800080; }
302 pre .prompt { color: #558817; }
303 pre .url { color: #272fc2; text-decoration: underline; }
304
0 #!/usr/bin/env python
1
2 # This script will format "settingtypes.txt" file found at the root
3 # of 3d_armor modpack into a format readable by LDoc.
4
5 import sys, os, errno, codecs
6
7
8 path = os.path.realpath(__file__)
9 script = os.path.basename(path)
10 d_root = os.path.dirname(os.path.dirname(path))
11 d_ldoc = os.path.join(d_root, ".ldoc")
12 f_settings = os.path.join(d_root, "settingtypes.txt")
13
14 if not os.path.isfile(f_settings):
15 print("settingtypes.txt does not exist")
16 sys.exit(errno.ENOENT)
17
18 i_stream = codecs.open(f_settings, "r", "utf-8")
19 data_in = i_stream.read()
20 i_stream.close()
21
22 data_in = data_in.replace("\r", "")
23
24 sets = data_in.split("\n\n")
25
26 for idx in reversed(range(len(sets))):
27 set = sets[idx]
28 lines = set.split("\n")
29 for idx2 in reversed(range(len(lines))):
30 li = lines[idx2].strip(" \t")
31 if li == "" or li[0] == "[":
32 lines.pop(idx2)
33
34 if len(lines) == 0:
35 sets.pop(idx)
36 else:
37 sets[idx] = "\n".join(lines)
38
39 filtered = []
40
41 for set in sets:
42 comment = False
43 lines = set.split("\n")
44 new_lines = []
45 for li in lines:
46 if li[0] == "#":
47 new_lines.append(li)
48 else:
49 new_lines.append(li)
50 filtered.append("\n".join(new_lines))
51 new_lines = []
52
53 settings = []
54
55 def parse_setting(set):
56 desc = []
57 setting = summary = stype = sdefault = soptions = None
58
59 for li in set.split("\n"):
60 if li[0] == "#":
61 desc.append("-- {}".format(li.lstrip(" #")))
62 else:
63 setting = li.split(" ")[0]
64 summary = li.split(")")[0].split("(")[-1]
65 li = li.split(")")[-1].strip()
66 rem = li.split(" ")
67 stype = rem[0]
68 rem.pop(0)
69
70 if len(rem) > 0:
71 sdefault = rem[0]
72 rem.pop(0)
73
74 if len(rem) > 0:
75 soptions = " ".join(rem)
76
77 if not setting:
78 return
79
80 st = "---"
81 if summary:
82 if summary[-1] != ".":
83 summary = "{}.".format(summary)
84 st = "{} {}".format(st, summary)
85
86 st = "{}\n--".format(st)
87
88 if len(desc) > 0:
89 st = "{}\n{}\n--".format(st, "\n".join(desc))
90
91 st = "{}\n-- @setting {}".format(st, setting)
92
93 if stype:
94 st = "{}\n-- @settype {}".format(st, stype)
95
96 if sdefault:
97 st = "{}\n-- @default {}".format(st, sdefault)
98
99 # TODO: add options
100
101 settings.append(st)
102
103 for f in filtered:
104 parse_setting(f)
105
106 outfile = os.path.join(d_ldoc, "settings.luadoc")
107 data_out = "\n--- 3D Armor Settings\n--\n-- @topic settings\n\n\n{}\n".format("\n\n".join(settings))
108
109 o_stream = codecs.open(outfile, "w", "utf-8")
110 if not o_stream:
111 print("ERROR: could not open file for writing: {}".format(outfile))
112 sys.exit(errno.EIO)
113
114 o_stream.write(data_out)
115 o_stream.close()
116
117 print("settings exported to\t{}".format(outfile))
0 #!/usr/bin/env python
1
2 # This script will parse source files for docstring.
3
4 import os, codecs
5
6
7 path = os.path.realpath(__file__)
8 script = os.path.basename(path)
9 d_root = os.path.dirname(os.path.dirname(path))
10 d_ldoc = os.path.join(d_root, ".ldoc")
11
12
13 armor_types = {
14 "armor": {"topic": "Armors", "values": []},
15 "helmet": {"topic": "Helmets", "values": []},
16 "chestplate": {"topic": "Chestplates", "values": []},
17 "leggings": {"topic": "Leggings", "values": []},
18 "boots": {"topic": "Boots", "values": []},
19 #"shield": {"topic": "Shields", "values": []},
20 }
21
22 def parse_file(f):
23 buffer = codecs.open(f, "r", "utf-8")
24 if not buffer:
25 print("ERROR: could not open file for reading: {}".format(f))
26 return
27
28 data_in = buffer.read()
29 buffer.close()
30
31 # format to LF (Unix)
32 data_in = data_in.replace("\r\n", "\n").replace("\r", "\n")
33
34 current_item = []
35 item_type = None
36 new_item = False
37 for li in data_in.split("\n"):
38 li = li.strip()
39 if li.startswith("---"):
40 new_item = True
41 elif not li.startswith("--"):
42 new_item = False
43
44 if new_item:
45 current_item.append(li)
46 if not item_type:
47 for a_type in armor_types:
48 if "@{} ".format(a_type) in li:
49 item_type = a_type
50 break
51 elif item_type and len(current_item):
52 armor_types[item_type]["values"].append("\n".join(current_item))
53 item_type = None
54 current_item = []
55 else:
56 current_item = []
57
58 to_parse = []
59
60 for obj in os.listdir(d_root):
61 fullpath = os.path.join(d_root, obj)
62 if not obj.startswith(".") and os.path.isdir(fullpath):
63 for root, dirs, files in os.walk(fullpath):
64 for f in files:
65 if f.endswith(".lua"):
66 to_parse.append(os.path.join(root, f))
67
68 for p in to_parse:
69 if not os.path.isfile(p):
70 print("ERROR: {} is not a file".format(p))
71 else:
72 parse_file(p)
73
74 for t in armor_types:
75 topic = armor_types[t]["topic"]
76 items = armor_types[t]["values"]
77
78 if len(items):
79 outfile = os.path.join(d_ldoc, "{}.luadoc".format(topic.lower()))
80
81 buffer = codecs.open(outfile, "w", "utf-8")
82 if not buffer:
83 print("ERROR: could not open file for writing: {}".format(outfile))
84 continue
85
86 buffer.write("\n--- 3D Armor {}\n--\n-- @topic {}\n\n\n{}\n".format(topic, topic.lower(), "\n\n".join(items)))
87 buffer.close()
88
89 print("{} exported to\t{}".format(topic.lower(), outfile))
33 globals = {
44 "wieldview",
55 "armor",
6 "armor_i18n",
76 "inventory_plus"
87 }
98
1817
1918 -- deps
2019 "default",
20 "player_api",
2121 "minetest",
2222 "unified_inventory",
23 "intllib",
2423 "wardrobe",
2524 "player_monoids",
2625 "armor_monoid",
0 # [mod] Visible Player Armor [3d_armor]
1
2 | | | | |
3 |--|--|--|--|
4 |-[Overview](#overview) |||-[API](#api)
5 |-[Armor Configuration](#armor-configuration) |||- - [3d_Armor Item Storage](#3d_armor-item-storage)
6 |- - [disable_specific_materials](#to-disable-individual-armor-materials) |||- - [Armor Registration](#armor-registration)
7 |- - [armor_init_delay](#initialization-glitches-when-a-player-first-joins) |||- - [Registering Armor Groups](#registering-armor-groups)
8 |- - [armor_init_times](#number-of-initialization-attempts) |||- - [Groups used by 3d_Armor](#groups-used-by-3d_armor)
9 |- - [armor_bones_delay](#armor-not-in-bones-due-to-server-lag) |||- - - [Elements](#elements)
10 |- - [armor_update_time](#how-often-player-armor-items-are-updated) |||- - - [Attributes](#attributes)
11 |- - [armor_drop](#drop-armor-when-a-player-dies) |||- - - [Physics](#physics)
12 |- - [armor_destroy](#destroy-armor-when-a-player-dies) |||- - - [Durability](#durability)
13 |- - [armor_level_multiplier](#armor-level-multiplyer) |||- - - [Armor Material](#armor-material)
14 |- - [armor_heal_multiplier](#armor-healing-multiplyer) |||- - [Armour Functions](#armor-functions)
15 |- - [armor_set_elements](#allows-the-customisation-of-armor-set) |||- - - [armor:set_player_armor](#armor-set_player_armor)
16 |- - [armor_set_bonus](#armor-set-bonus-multiplier) |||- - - [armor:punch](#armor-punch)
17 |- - [armor_water_protect](#enable-water-protection) |||- - - [armor:damage](#armor-damage)
18 |- - [armor_fire_protect](#enable-fire-protection) |||- - - [armor:remove_all](#armor-remove_all)
19 |- - [armor_punch_damage](#enable-punch-damage-effects) |||- - - [armor:equip](#armor-equip)
20 |- - [armor_migrate_old_inventory](#migration-of-old-armor-inventories) |||- - - [armor:unequip](#armor-unequip)
21 |- - [wieldview_update_time](#how-often-player-wield-items-are-updated) |||- - - [armor:update_skin](#armor-update_skin)
22 |-[Credits](#credits) |||- - [Callbacks](#Callbacks)
23 | |||- - - [Item callbacks](#item-callbacks)
24 | |||- - - [Global callbacks](#global-callbacks)
25
26 # Overview
27
28 **Depends:** default
29
30 **Recommends:** sfinv, unified_inventory or smart_inventory (use only one to avoid conflicts)
31
32 **Supports:** player_monoids, armor_monoid and POVA
33
34 Adds craftable armor that is visible to other players. Each armor item worn contributes to
35 a player's armor group level making them less vulnerable to weapons.
36
37 Armor takes damage when a player is hurt but also offers a percentage chance of healing.
38 Overall level is boosted by 10% when wearing a full matching set.
39
40 # Armor Configuration
41
42 Change the following default settings by going to Main Menu>>Settings(Tab)>>All Settings(Button)>>Mods>>minetest-3d_Armor>>3d_Armor
43
44 ### To disable individual armor materials
45 **set the below to false**
46
47 armor_material_wood = true
48 armor_material_cactus = true
49 armor_material_steel = true
50 armor_material_bronze = true
51 armor_material_diamond = true
52 armor_material_gold = true
53 armor_material_mithril = true
54 armor_material_crystal = true
55 armor_material_nether = true
56
57 ### Initialization glitches when a player first joins
58 **Increase to prevent glitches**
59
60 armor_init_delay = 2
61
62 ### Number of initialization attempts
63 **Increase to prevent glitches - Use in conjunction with armor_init_delay if initialization problems persist.**
64
65 armor_init_times = 10
66
67 ### Armor not in bones due to server lag
68 **Increase to help resolve**
69
70 armor_bones_delay = 1
71
72 ### How often player armor items are updated
73 **Number represents how often per second update is performed, higher value means less performance hit for servers but armor items maybe delayed in updating when switching.Fractional seconds also supported eg 0.1**
74
75 armor_update_time = 1
76
77 ### Drop armor when a player dies
78 **Uses bones mod if present, otherwise items are dropped around the player when false.**
79
80 armor_drop = true
81
82 ### Destroy armor when a player dies
83 **overrides armor_drop.**
84
85 armor_destroy = false
86
87 ### Armor level multiplyer
88 **Increase to make armor more effective and decrease to make armor less effective**
89 **eg: level_multiplier = 0.5 will reduce armor level by half.**
90
91 armor_level_multiplier = 1
92
93 ### Armor healing multiplyer
94 **Increase to make armor healing more effective and decrease to make healing less effective**
95 **eg: armor_heal_multiplier = 0 will disable healing altogether.**
96
97 armor_heal_multiplier = 1
98
99 ### Allows the customisation of armor set
100 **Shields already configured as need to be worn to complete an armor set**
101 **These names come from [Element names](#groups-used-by-3d_armor), the second half of the element name only is used eg armor_head is head**
102
103 armor_set_elements = head torso legs feet shield
104
105 ### Armor set bonus multiplier
106 **Set to 1 to disable set bonus**
107
108 armor_set_multiplier = 1.1
109
110 ### Enable water protection
111 **periodically restores breath when activated**
112
113 armor_water_protect = true
114
115 ### Enable fire protection
116 **defaults to true if using ethereal mod**
117
118 armor_fire_protect = false
119
120 ### Fire protection enabled, disable torch fire damage
121 **when fire protection is enabled allows you to disable fire damage from torches**
122 **defaults to true if using ethereal mod**
123
124 armor_fire_protect_torch = false
125
126 ### Enable punch damage effects
127
128 armor_punch_damage = true
129
130 ### Migration of old armor inventories
131
132 armor_migrate_old_inventory = true
133
134 ### How often player wield items are updated
135 **Number represents how often per second update is performed, higher value means less performance hit for servers but wield items maybe delayed in updating when switching. Fractional seconds also supported eg 0.1**
136 ***Note this is MT engine functionality but included for completness***
137
138 wieldview_update_time = 1
139
140 # API
141
142 ## 3d_Armor item storage
143 3d_Armor stores each armor piece a player currently has equiped in a ***detached*** inventory. The easiest way to access this inventory if needed is using this line of code
144
145 local _, armor_inv = armor:get_valid_player(player, "3d_armor")
146
147 **Example**
148
149 armor:register_on_equip(function(player, index, stack)
150 local _, armor_inv = armor:get_valid_player(player, "3d_armor")
151 for i = 1, 6 do
152 local stack = armor_inv:get_stack("armor", i)
153 if stack:get_name() == "3d_armor:chestplate_gold" then
154 minetest.chat_send_player(player:get_player_name(),"Got to love the Bling!!!")
155 end
156 end
157 end)
158
159 ## Armor Registration
160
161 armor:register_armor(name, def)
162
163 Wrapper function for `minetest.register_tool`, which enables the easy registration of new armor items. While registering armor as a tool item is still supported, this may be deprecated in future so all armor items should be registered using *armor:register_armor(name,def)*.
164
165 ### Additional fields supported by 3d_armor
166
167 texture = <filename>
168 preview = <filename>
169 armor_groups = <table>
170 damage_groups = <table>
171 reciprocate_damage = <bool>
172 on_equip = <function>
173 on_unequip = <function>
174 on_destroy = <function>
175 on_damage = <function>
176 on_punched = <function>
177
178 ***Reciprocal tool*** damage will apply damage back onto the attacking tool/weapon, however this will only be done by the first armor inventory item with `reciprocate_damage = true`, damage does not stack.
179
180 **Example Simple:**
181
182 armor:register_armor("mod_name:chestplate_leather", {
183 description = "Leather Chestplate",
184 inventory_image = "mod_name_inv_chestplate_leather.png",
185 texture = "mod_name_leather_chestplate.png",
186 preview = "mod_name_leather_chestplate_preview.png",
187 groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1},
188 armor_groups = {fleshy=10},
189 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}
190 })
191 *See ***armor.lua*** under **3d_armor>>3d_armor** for further examples*
192
193 **Extended functionality**
194 The values for ***texture*** and ***preview*** do not need to be included when registering armor if they follow the naming convention in the textures mod folder of:
195 ***texture:*** *mod_name_leather_chestplate.png*
196 ***preview:*** *mod_name_leather_chestplate_preview.png*
197
198 ## Registering Armor Groups
199 3d armor has a built in armor group which is ***fleshy*** all players base vulnerability to being fleshy is ***100***.
200 3d armour allows for the easy registration/addition of new armor groups::
201
202 armor:register_armor_group(group, base)
203
204 ***group:*** Is the name of the new armor group
205 ***base*** Is the starting vulnerability that all players have to that new group. This dosent need to be 100.
206
207 **Example**
208
209 armor:register_armor_group("radiation", 100)
210
211 New armor group is registered called *radiation* and all players start off with a base vulnerability of *100* to radiation.
212
213 **Example** *Showing armor reg, new group usage and custom function*
214
215 armor:register_armor("mod_name:speed_boots", {
216 description = "Speed Boots",
217 inventory_image = "mod_name_speed_boots_inv.png",
218 texture = "mod_name_speed_boots.png",
219 preview = "mod_name_speed_boots_preview.png",
220 groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1},
221 armor_groups = {fleshy=10, radiation=10},
222 damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
223 reciprocate_damage = true,
224 on_destroy = function(player, index, stack)
225 local pos = player:get_pos()
226 if pos then
227 minetest.sound_play({
228 name = "mod_name_break_sound",
229 pos = pos,
230 gain = 0.5,
231 })
232 end
233 end,
234 })
235
236 ### Tools/weapons and new armor groups
237 The above allows armor to block/prevent new damage types but you also need to assign the new damage group to a tool/weapon or even a node (see technic mod) to make wearing the armor item meaningful. Simply add the ***armor_groups*** name to the tool items ***damage_groups***.
238
239 **Example**
240
241 minetest.register_tool("mod_name:glowing_sword", {
242 description = "Glowing Sword",
243 inventory_image = "mod_name_tool_glowingsword.png",
244 tool_capabilities = {full_punch_interval = 1.2,max_drop_level=0,
245 groupcaps={
246 cracky = {times={[3]=1.60}, uses=10, maxlevel=1},},
247 damage_groups = {fleshy=10,radiation=20},
248 },
249 sound = {breaks = "default_tool_breaks"},
250 groups = {pickaxe = 1, flammable = 2}
251 })
252
253 ## Groups used by 3d_Armor
254 3d_armor has many default groups already registered, these are categorized under 4 main headings
255 - **Elements:** armor_head, armor_torso, armor_legs, armor_feet
256 - **Attributes:** armor_heal, armor_fire, armor_water, armor_feather
257 - **Physics:** physics_jump, physics_speed, physics_gravity
258 - **Durability:** armor_use, flammable
259
260 ***Note: for calculation purposes "Attributes" and "Physics" values stack***
261
262 ### Elements
263 Additional armor elements can be added by dependant mods, for example shields adds the group armor_shield which has by default a limit that only 1 shield can be worn at a time.
264
265 Adding Elements is more complex but the below code can be used to add new elements;
266
267 if minetest.global_exists("armor") and armor.elements then
268 table.insert(armor.elements, "hands")
269 end
270 **1st line** not strictly needed but checks that the global table "armor" and subtable "elements" exists
271 **2nd line** adds a new value to the armor.elements table called "hands"
272
273 See ***init.lua*** under **3d_armor>>shields** for a further example
274
275 The new armor item can now be registered using the new element
276 **Example**
277
278 armor:register_armor("mod_name:gloves_wood", {
279 description = "Wood Gauntlets",
280 inventory_image = "mod_name_inv_gloves_wood.png",
281 texture = "mod_name_gloves_wood.png",
282 preview = "mod_name_gloves_wood_preview.png",
283 groups = {armor_hands=1, armor_heal=0, armor_use=2000, flammable=1},
284 armor_groups = {fleshy=5},
285 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
286 })
287
288 ### Attributes
289 Three attributes are avaliable in 3d_armor these are armor_heal, armor_fire and armor_water. Although possible to add additional attributes they would do nothing as code needs to be provide to specifiy the behaviour this could be done in a dependant mod
290
291 #### Armor_heal
292 This isn't how much the armor will heal but relates to the chance the armor will completely block the damage. For each point of ***armor_heal*** there is a 1% chance that damage will be completely blocked, this value will stack between all armor pieces
293
294 **Example**
295 The below Diamond chestplate has a 12% chance to completely block all damage (armor_heal=12), however so do boots, helmet and trousers so if the player was wearing all 4 pieces they would have a 48% chance of blocking all damage each attack.
296
297 armor:register_armor("3d_armor:chestplate_diamond", {
298 description = S("Diamond Chestplate"),
299 inventory_image = "3d_armor_inv_chestplate_diamond.png",
300 groups = {armor_torso=1, armor_heal=12, armor_use=200},
301 armor_groups = {fleshy=20},
302 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
303 })
304
305 #### Armor_fire
306 ***"Armor_fire"*** provides 5 levels of fire protection
307 - level 1 protects against torches
308 - level 2 protects against crystal spike (Ethereal mod)
309 - level 3 protects against fire
310 - level 4 unused
311 - level 5 protects against lava
312
313 **Example**
314
315 armor:register_armor("mod_name:fire_proof_jacket", {
316 description = "Fire Proof Jacket",
317 inventory_image = "mod_name_inv_fire_proof_jacket.png",
318 groups = {armor_torso=1, armor_fire=3, armor_use=1000},
319 armor_groups = {fleshy=10},
320 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
321 })
322
323 #### Armor_water
324 ***"Armor_water"*** will periodically restore a players breath when underwater. This only has one level or state, which is armor_water=1
325
326 **Example**
327
328 armor:register_armor("mod_name:helmet_underwater_breath", {
329 description = "Helmet of Underwater Breathing",
330 inventory_image = "mod_name_inv_helmet_underwater_breath.png",
331 groups = {armor_head=1, armor_water=1, armor_use=1000},
332 armor_groups = {fleshy=5},
333 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
334 })
335
336 #### Armor_feather
337 ***"Armor_feather"*** will slow a player when falling. This only has one level or state, which is armor_feather=1
338
339 ### Physics
340 The physics attributes supported by 3d_armor are ***physics_jump, physics_speed and physics_gravity***. Although 3d_armor supports the use of this with no other mods it is recommended that the mod [player_monoids](https://forum.minetest.net/viewtopic.php?t=14895) is used to help with intermod compatability.
341
342 ***physics_jump*** - Will increase/decrease the jump strength of the player so they can jump more/less. The base number is "1" and any value is added or subtracted, supports fractional so "physics_jump=1" will increase jump strength by 100%. "physics_jump= -0.5" will decrease jump by 50%.
343
344 ***physics_speed*** - Will increase/decrease the walk speed of the player so they walk faster/slower. The base number is "1" and any value is added or subtracted, supports fractional so "physics_speed=1.5" will increase speed by 150%, "physics_speed= -0.5" will decrease speed by 50%.
345
346 ***physics_gravity*** - Will increase/decrease gravity the player experiences so it's higher/lower. The base number is "1" and any value is added or subtracted, supports fractional so "physics_gravity=2" will increase gravity by 200%, "physics_gravity= -1" will decrease gravity by 100%.
347
348 *Note: The player physics modifications won't be applied via `set_physics_override` if `player_physics_locked` is set to 1 in the respective player's meta.*
349
350 ### Durability
351 Durability is determined by the value assigned to the group ***armor_use***. The higher the ***armor_use*** value the faster/more quickly it is damaged/degrades. This is calculated using the formula:
352
353 Total uses = approx(65535/armor_use)
354
355 **Example**
356 All wood armor items have an ***armor_use=2000***;
357
358 65535/2000 = 32.76 (32)
359 After 32 uses(hits) the armor item will break.
360
361 All diamond armor items have an ***armor_use=200***;
362
363 65535/2000 = 327.6 (327)
364 After 327 uses(hits) the armor item will break.
365
366 ### Armor Material
367 The material the armor is made from is defined by adding the material to the end of registered armor item name. It is very important the material is the last item in the registered item name and it is preceeded by an "_" eg "_materialname".
368 The material name is what 3d_armor uses to determine if a player is wearing a set of armor. To recieve the set bonus all items worn must be made of the same material.
369 So to get a set bonus under the default set settings the players armor items listed below must be made of the same material:
370 * head - Helmet
371 * torso - Chestplate
372 * legs - Leggings
373 * feet - Boots
374 * shield - Shields
375
376 If all of the above were made of material "wood" the player would recieve an ***armor_set_bonus*** of armor_level * 1.1, essentially +10%
377
378 **Example One**
379
380 armor:register_armor("3d_armor:helmet_bronze", {
381 description = S("Bronze Helmet"),
382 inventory_image = "3d_armor_inv_helmet_bronze.png",
383 groups = {armor_head=1, armor_heal=6, armor_use=400, physics_speed=-0.01, physics_gravity=0.01},
384 armor_groups = {fleshy=10},
385 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
386 })
387
388 **Example Two**
389
390 armor:register_armor("new_mod:helmet_spartan_bronze", {
391 description = S("Spartan Helmet"),
392 inventory_image = "new_mod_inv_helmet_spartan_bronze.png",
393 groups = {armor_head=1, armor_heal=6, armor_use=350, physics_speed=-0.01, physics_gravity=0.01},
394 armor_groups = {fleshy=12},
395 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
396 })
397
398 ***Note: At the moment an armor item can only be made of one material***
399
400 ## Armor Functions
401
402 See also: [API Reference](https://minetest-mods.github.io/3d_armor/reference/)
403
404 ### armor set_player_armor
405
406 armor:set_player_armor(player)
407
408 Primarily an internal function but can be called externally to apply any
409 changes that might not otherwise get handled.
410
411 ### armor punch
412
413 armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
414
415 Used to apply damage to all equipped armor based on the damage groups of
416 each individual item.`hitter`, `time_from_last_punch` and `tool_capabilities`
417 are optional but should be valid if included.
418
419 ### armor damage
420
421 armor:damage(player, index, stack, use)
422
423 Adds wear to a single armor itemstack, triggers `on_damage` callbacks and
424 updates the necessary inventories. Also handles item destruction callbacks
425 and so should NOT be called from `on_unequip` to avoid an infinite loop.
426
427 ### armor remove_all
428
429 armor:remove_all(player)
430
431 Removes all armors from the player's inventory without triggering any callback.
432
433 ### armor equip
434
435 armor:equip(player, armor_name)
436
437 Equip the armor, removing the itemstack from the main inventory if there's one.
438
439 ### armor unequip
440
441 armor:unequip(player, armor_name)
442
443 Unequip the armor, adding the itemstack to the main inventory.
444
445 ### armor update_skin
446
447 armor:update_skin(player_name)
448
449 Triggers a skin update with the same action as if a field with `skins_set` was submitted.
450
451 ## Callbacks
452
453 ### Item Callbacks
454
455 In all of the below when armor is destroyed `stack` will contain a copy of the previous stack.
456
457 *unsure what this note means may apply to all item callbacks or just on_punched*
458 Return `false` to override armor damage effects.
459
460 #### on_equip
461
462 on_equip = func(player, index, stack)
463
464 #### on_unequip
465
466 on_unequip = func(player, index, stack)
467
468 #### on_destroy
469
470 on_destroy = func(player, index, stack)
471
472 #### on_damage
473
474 on_damage = func(player, index, stack)
475
476 #### on_punched
477
478 on_punched = func(player, hitter, time_from_last_punch, tool_capabilities)
479
480 `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.
481 When fire protection is enabled, hitter == "fire" in the event of fire damage.
482
483
484 ### Global Callbacks
485
486 #### armor register_on_update
487
488 armor:register_on_update(function(player))
489
490 #### armor register_on_equip
491
492 armor:register_on_equip(function(player, index, stack))
493
494 #### armor register_on_unequip
495
496 armor:register_on_unequip(function(player, index, stack))
497
498 #### armor register_on_destroy
499 armor:register_on_destroy(function(player, index, stack))
500
501 **Example**
502
503 armor:register_on_update(function(player)
504 print(player:get_player_name().." armor updated!")
505 end)
506
507
508 # Credits
509
510 ### The below have added too, tested or in other ways contributed to the development and ongoing support of 3d_Armor
511
512 |Stu |Stujones11 |Stu |Github Ghosts |
513 |:---------------:|:---------------:|:---------------:|:---------------:|
514 |Pavel_S |BlockMen |Tenplus1 |donat-b |
515 |JPRuehmann |BrandonReese |Megaf |Zeg9 |
516 |poet.nohit |Echoes91 |Adimgar |Khonkhortisan |
517 |VanessaE |CraigyDavi |proller |Thomasrudin |
518 |Byakuren |kilbith (jp) |afflatus |G1ov4 |
519 |Thomas-S |Dragonop |Napiophelios |Emojigit |
520 |rubenwardy |daviddoesminetest|bell07 |OgelGames |
521 |tobyplowy |crazyginger72 |fireglow |bhree |
522 |Lone_Wolf(HT) |Wuzzy(2) |numberZero |Monte48 |
523 |AntumDeluge |Terumoc |runsy |Dacmot |
524 |codexp |davidthecreator |SmallJoker |orbea |
525 |BuckarooBanzay |daret |Exeterdad |Calinou |
526 |Pilcrow182 |indriApollo |HybridDog |CraigyDavi |
527 |Paly-2 |Diogogomes | | |
528
529 *Note: Names gathered from 3d_armor forum thread and github, I may have missed some people, apologises if I have - S01*
+0
-191
3d_armor/README.txt less more
0 [mod] Visible Player Armor [3d_armor]
1 =====================================
2
3 Depends: default
4
5 Recommends: sfinv, unified_inventory or smart_inventory (use only one to avoid conflicts)
6
7 Supports: player_monoids and armor_monoid
8
9 Adds craftable armor that is visible to other players. Each armor item worn contributes to
10 a player's armor group level making them less vulnerable to weapons.
11
12 Armor takes damage when a player is hurt but also offers a percentage chance of healing.
13 Overall level is boosted by 10% when wearing a full matching set.
14
15 Fire protection added by TenPlus1 when using crystal armor if Ethereal mod active, level 1
16 protects against torches, level 2 for crystal spike, level 3 for fire, level 5 for lava.
17
18 Armor Configuration
19 -------------------
20
21 Override the following default settings by adding them to your minetest.conf file.
22
23 -- Set false to disable individual armor materials.
24 armor_material_wood = true
25 armor_material_cactus = true
26 armor_material_steel = true
27 armor_material_bronze = true
28 armor_material_diamond = true
29 armor_material_gold = true
30 armor_material_mithril = true
31 armor_material_crystal = true
32
33 -- Increase this if you get initialization glitches when a player first joins.
34 armor_init_delay = 2
35
36 -- Number of initialization attempts.
37 -- Use in conjunction with armor_init_delay if initialization problems persist.
38 armor_init_times = 10
39
40 -- Increase this if armor is not getting into bones due to server lag.
41 armor_bones_delay = 1
42
43 -- How often player armor items are updated.
44 armor_update_time = 1
45
46 -- Drop armor when a player dies.
47 -- Uses bones mod if present, otherwise items are dropped around the player.
48 armor_drop = true
49
50 -- Pulverise armor when a player dies, overrides armor_drop.
51 armor_destroy = false
52
53 -- You can use this to increase or decrease overall armor effectiveness,
54 -- eg: level_multiplier = 0.5 will reduce armor level by half.
55 armor_level_multiplier = 1
56
57 -- You can use this to increase or decrease overall armor healing,
58 -- eg: armor_heal_multiplier = 0 will disable healing altogether.
59 armor_heal_multiplier = 1
60
61 -- Enable water protection (periodically restores breath when activated)
62 armor_water_protect = true
63
64 -- Enable fire protection (defaults true if using ethereal mod)
65 armor_fire_protect = false
66
67 -- Enable punch damage effects.
68 armor_punch_damage = true
69
70 -- Enable migration of old armor inventories
71 armor_migrate_old_inventory = true
72
73 API
74 ---
75
76 Armor Registration:
77
78 armor:register_armor(name, def)
79
80 Wrapper function for `minetest.register_tool`, while registering armor as
81 a tool item is still supported, this may be deprecated in future so new code
82 should use this method.
83
84 Additional fields supported by 3d_armor:
85
86 texture = <filename>
87 preview = <filename>
88 armor_groups = <table>
89 damage_groups = <table>
90 reciprocate_damage = <bool>
91 on_equip = <function>
92 on_unequip = <function>
93 on_destroy = <function>
94 on_damage = <function>
95 on_punched = <function>
96
97 armor:register_armor_group(group, base)
98
99 Example:
100
101 armor:register_armor_group("radiation", 100)
102
103 armor:register_armor("mod_name:speed_boots", {
104 description = "Speed Boots",
105 inventory_image = "mod_name_speed_boots_inv.png",
106 texture = "mod_name_speed_boots.png",
107 preview = "mod_name_speed_boots_preview.png",
108 groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1},
109 armor_groups = {fleshy=10, radiation=10},
110 damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
111 reciprocate_damage = true,
112 on_destroy = function(player, index, stack)
113 local pos = player:get_pos()
114 if pos then
115 minetest.sound_play({
116 name = "mod_name_break_sound",
117 pos = pos,
118 gain = 0.5,
119 })
120 end
121 end,
122 })
123
124 See armor.lua, technic_armor and shields mods for more examples.
125
126 Default groups:
127
128 Elements: armor_head, armor_torso, armor_legs, armor_feet
129 Attributes: armor_heal, armor_fire, armor_water
130 Physics: physics_jump, physics_speed, physics_gravity
131 Durability: armor_use, flammable
132
133 Notes:
134
135 Elements may be modified by dependent mods, eg shields adds armor_shield.
136 Attributes and physics values are 'stackable', durability is determined
137 by the level of armor_use, total uses == approx (65535/armor_use), non-fleshy
138 damage groups need to be defined in the tool/weapon used against the player.
139
140 Reciprocal tool damage will be done only by the first armor inventory item
141 with `reciprocate_damage = true`
142
143 Armor Functions:
144
145 armor:set_player_armor(player)
146
147 Primarily an internal function but can be called externally to apply any
148 changes that might not otherwise get handled.
149
150 armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
151
152 Used to apply damage to all equipped armor based on the damage groups of
153 each individual item.`hitter`, `time_from_last_punch` and `tool_capabilities`
154 are optional but should be valid if included.
155
156 armor:damage(player, index, stack, use)
157
158 Adds wear to a single armor itemstack, triggers `on_damage` callbacks and
159 updates the necessary inventories. Also handles item destruction callbacks
160 and so should NOT be called from `on_unequip` to avoid an infinite loop.
161
162 Item Callbacks:
163
164 on_equip = func(player, index, stack)
165 on_unequip = func(player, index, stack)
166 on_destroy = func(player, index, stack)
167 on_damage = func(player, index, stack)
168 on_punched = func(player, hitter, time_from_last_punch, tool_capabilities)
169
170 Notes:
171
172 `on_punched` is called every time a player is punched or takes damage, `hitter`,
173 `time_from_last_punch` and `tool_capabilities` can be `nil` and will be in the
174 case of fall damage, etc. When fire protection is enabled, hitter == "fire"
175 in the event of fire damage. Return `false` to override armor damage effects.
176 When armor is destroyed `stack` will contain a copy of the previous stack.
177
178 Global Callbacks:
179
180 armor:register_on_update(func(player))
181 armor:register_on_equip(func(player, index, stack))
182 armor:register_on_unequip(func(player, index, stack))
183 armor:register_on_destroy(func(player, index, stack))
184
185 Global Callback Example:
186
187 armor:register_on_update(function(player)
188 print(player:get_player_name().." armor updated!")
189 end)
190
0
1 --- 3D Armor API
2 --
3 -- @topic api
4
5
6 local transparent_armor = minetest.settings:get_bool("armor_transparent", false)
7
8
9 --- Tables
10 --
11 -- @section tables
12
13 --- Armor definition table used for registering armor.
14 --
15 -- @table ArmorDef
16 -- @tfield string description Human-readable name/description.
17 -- @tfield string inventory_image Image filename used for icon.
18 -- @tfield table groups See: `ArmorDef.groups`
19 -- @tfield table armor_groups See: `ArmorDef.armor_groups`
20 -- @tfield table damage_groups See: `ArmorDef.damage_groups`
21 -- @see ItemDef
22 -- @usage local def = {
23 -- description = "Wood Helmet",
24 -- inventory_image = "3d_armor_inv_helmet_wood.png",
25 -- groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
26 -- armor_groups = {fleshy=5},
27 -- damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
28 -- }
29
30 --- Groups table.
31 --
32 -- General groups defining item behavior.
33 --
34 -- Some commonly used groups: ***armor\_&lt;type&gt;***, ***armor\_heal***, ***armor\_use***
35 --
36 -- @table ArmorDef.groups
37 -- @tfield int armor_type The armor type. "head", "torso", "hands", "shield", etc.
38 -- (**Note:** replace "type" with actual type).
39 -- @tfield int armor_heal Healing value of armor when equipped.
40 -- @tfield int armor_use Amount of uses/damage before armor "breaks".
41 -- @see groups
42 -- @usage groups = {
43 -- armor_head = 1,
44 -- armor_heal = 5,
45 -- armor_use = 2000,
46 -- flammable = 1,
47 -- }
48
49 --- Armor groups table.
50 --
51 -- Groups that this item is effective against when taking damage.
52 --
53 -- Some commonly used groups: ***fleshy***
54 --
55 -- @table ArmorDef.armor_groups
56 -- @usage armor_groups = {
57 -- fleshy = 5,
58 -- }
59
60 --- Damage groups table.
61 --
62 -- Groups that this item is effective on when used as a weapon/tool.
63 --
64 -- Some commonly used groups: ***cracky***, ***snappy***, ***choppy***, ***crumbly***, ***level***
65 --
66 -- @table ArmorDef.damage_groups
67 -- @see entity_damage_mechanism
68 -- @usage damage_groups = {
69 -- cracky = 3,
70 -- snappy = 2,
71 -- choppy = 3,
72 -- crumbly = 2,
73 -- level = 1,
74 -- }
75
76 --- @section end
77
78
079 -- support for i18n
1 local S = armor_i18n.gettext
80 local S = minetest.get_translator(minetest.get_current_modname())
281
382 local skin_previews = {}
483 local use_player_monoids = minetest.global_exists("player_monoids")
32111 timer = 0,
33112 elements = {"head", "torso", "legs", "feet"},
34113 physics = {"jump", "speed", "gravity"},
35 attributes = {"heal", "fire", "water"},
114 attributes = {"heal", "fire", "water", "feather"},
36115 formspec = "image[2.5,0;2,4;armor_preview]"..
37116 default.gui_bg..
38117 default.gui_bg_img..
52131 gold = "default:gold_ingot",
53132 mithril = "moreores:mithril_ingot",
54133 crystal = "ethereal:crystal_ingot",
134 nether = "nether:nether_ingot",
55135 },
56136 fire_nodes = {
137 {"nether:lava_source", 5, 8},
57138 {"default:lava_source", 5, 8},
58139 {"default:lava_flowing", 5, 8},
59140 {"fire:basic_flame", 3, 4},
60141 {"fire:permanent_flame", 3, 4},
61142 {"ethereal:crystal_spike", 2, 1},
62143 {"ethereal:fire_flower", 2, 1},
144 {"nether:lava_crust", 2, 1},
63145 {"default:torch", 1, 1},
64146 {"default:torch_ceiling", 1, 1},
65147 {"default:torch_wall", 1, 1},
73155 on_destroy = {},
74156 },
75157 migrate_old_inventory = true,
76 version = "0.4.13",
158 version = "0.4.13",
159 get_translator = S
77160 }
78161
79162 armor.config = {
93176 material_gold = true,
94177 material_mithril = true,
95178 material_crystal = true,
179 material_nether = true,
180 set_elements = "head torso legs feet shield",
181 set_multiplier = 1.1,
96182 water_protect = true,
97183 fire_protect = minetest.get_modpath("ethereal") ~= nil,
184 fire_protect_torch = minetest.get_modpath("ethereal") ~= nil,
185 feather_fall = true,
98186 punch_damage = true,
99187 }
100188
101 -- Armor Registration
102
189
190 --- Methods
191 --
192 -- @section methods
193
194 --- Registers a new armor item.
195 --
196 -- @function armor:register_armor
197 -- @tparam string name Armor item technical name (ex: "3d\_armor:helmet\_gold").
198 -- @tparam ArmorDef def Armor definition table.
199 -- @usage armor:register_armor("3d_armor:helmet_wood", {
200 -- description = "Wood Helmet",
201 -- inventory_image = "3d_armor_inv_helmet_wood.png",
202 -- groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
203 -- armor_groups = {fleshy=5},
204 -- damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
205 -- })
103206 armor.register_armor = function(self, name, def)
207 def.on_secondary_use = function(itemstack, player)
208 return armor:equip(player, itemstack)
209 end
210 def.on_place = function(itemstack, player, pointed_thing)
211 if pointed_thing.type == "node" and player and not player:get_player_control().sneak then
212 local node = minetest.get_node(pointed_thing.under)
213 local ndef = minetest.registered_nodes[node.name]
214 if ndef and ndef.on_rightclick then
215 return ndef.on_rightclick(pointed_thing.under, node, player, itemstack, pointed_thing)
216 end
217 end
218 return armor:equip(player, itemstack)
219 end
220 -- The below is a very basic check to try and see if a material name exists as part
221 -- of the item name. However this check is very simple and just checks theres "_something"
222 -- at the end of the item name and logging an error to debug if not.
223 local check_mat_exists = string.match(name, "%:.+_(.+)$")
224 if check_mat_exists == nil then
225 minetest.log("warning:[3d_armor] Registered armor "..name..
226 " does not have \"_material\" specified at the end of the item registration name")
227 end
104228 minetest.register_tool(name, def)
105229 end
106230
231 --- Registers a new armor group.
232 --
233 -- @function armor:register_armor_group
234 -- @tparam string group Group ID.
235 -- @tparam int base Base armor value.
107236 armor.register_armor_group = function(self, group, base)
108237 base = base or 100
109238 self.registered_groups[group] = base
112241 end
113242 end
114243
115 -- Armor callbacks
116
244 --- Armor Callbacks Registration
245 --
246 -- @section callbacks
247
248 --- Registers a callback for when player visuals are update.
249 --
250 -- @function armor:register_on_update
251 -- @tparam function func Function to be executed.
252 -- @see armor:update_player_visuals
253 -- @usage armor:register_on_update(function(player, index, stack)
254 -- -- code to execute
255 -- end)
117256 armor.register_on_update = function(self, func)
118257 if type(func) == "function" then
119258 table.insert(self.registered_callbacks.on_update, func)
120259 end
121260 end
122261
262 --- Registers a callback for when armor is equipped.
263 --
264 -- @function armor:register_on_equip
265 -- @tparam function func Function to be executed.
266 -- @usage armor:register_on_equip(function(player, index, stack)
267 -- -- code to execute
268 -- end)
123269 armor.register_on_equip = function(self, func)
124270 if type(func) == "function" then
125271 table.insert(self.registered_callbacks.on_equip, func)
126272 end
127273 end
128274
275 --- Registers a callback for when armor is unequipped.
276 --
277 -- @function armor:register_on_unequip
278 -- @tparam function func Function to be executed.
279 -- @usage armor:register_on_unequip(function(player, index, stack)
280 -- -- code to execute
281 -- end)
129282 armor.register_on_unequip = function(self, func)
130283 if type(func) == "function" then
131284 table.insert(self.registered_callbacks.on_unequip, func)
132285 end
133286 end
134287
288 --- Registers a callback for when armor is damaged.
289 --
290 -- @function armor:register_on_damage
291 -- @tparam function func Function to be executed.
292 -- @see armor:damage
293 -- @usage armor:register_on_damage(function(player, index, stack)
294 -- -- code to execute
295 -- end)
135296 armor.register_on_damage = function(self, func)
136297 if type(func) == "function" then
137298 table.insert(self.registered_callbacks.on_damage, func)
138299 end
139300 end
140301
302 --- Registers a callback for when armor is destroyed.
303 --
304 -- @function armor:register_on_destroy
305 -- @tparam function func Function to be executed.
306 -- @see armor:damage
307 -- @usage armor:register_on_destroy(function(player, index, stack)
308 -- -- code to execute
309 -- end)
141310 armor.register_on_destroy = function(self, func)
142311 if type(func) == "function" then
143312 table.insert(self.registered_callbacks.on_destroy, func)
144313 end
145314 end
146315
316 --- @section end
317
318
319 --- Methods
320 --
321 -- @section methods
322
323 --- Runs callbacks.
324 --
325 -- @function armor:run_callbacks
326 -- @tparam function callback Function to execute.
327 -- @tparam ObjectRef player First parameter passed to callback.
328 -- @tparam int index Second parameter passed to callback.
329 -- @tparam ItemStack stack Callback owner.
147330 armor.run_callbacks = function(self, callback, player, index, stack)
148331 if stack then
149332 local def = stack:get_definition() or {}
159342 end
160343 end
161344
345 --- Updates visuals.
346 --
347 -- @function armor:update_player_visuals
348 -- @tparam ObjectRef player
162349 armor.update_player_visuals = function(self, player)
163350 if not player then
164351 return
174361 self:run_callbacks("on_update", player)
175362 end
176363
364 --- Sets player's armor attributes.
365 --
366 -- @function armor:set_player_armor
367 -- @tparam ObjectRef player
177368 armor.set_player_armor = function(self, player)
178369 local name, armor_inv = self:get_valid_player(player, "[set_player_armor]")
179370 if not name then
181372 end
182373 local state = 0
183374 local count = 0
184 local material = {count=1}
185375 local preview = armor:get_preview(name)
186376 local texture = "3d_armor_trans.png"
187377 local physics = {}
189379 local levels = {}
190380 local groups = {}
191381 local change = {}
382 local set_worn = {}
383 local armor_multi = 0
384 local worn_armor = armor:get_weared_armor_elements(player)
192385 for _, phys in pairs(self.physics) do
193386 physics[phys] = 1
194387 end
230423 tex = tex:gsub(".png$", "")
231424 local prev = def.preview or tex.."_preview"
232425 prev = prev:gsub(".png$", "")
233 texture = texture.."^"..tex..".png"
426 if not transparent_armor then
427 texture = texture.."^"..tex..".png"
428 end
234429 preview = preview.."^"..prev..".png"
235430 state = state + stack:get_wear()
236431 count = count + 1
242437 local value = def.groups["armor_"..attr] or 0
243438 attributes[attr] = attributes[attr] + value
244439 end
245 local mat = string.match(item, "%:.+_(.+)$")
246 if material.name then
247 if material.name == mat then
248 material.count = material.count + 1
440 end
441 end
442 -- The following code compares player worn armor items against requirements
443 -- of which armor pieces are needed to be worn to meet set bonus requirements
444 for loc,item in pairs(worn_armor) do
445 local item_mat = string.match(item, "%:.+_(.+)$")
446 local worn_key = item_mat or "unknown"
447
448 -- Perform location checks to ensure the armor is worn correctly
449 for k,set_loc in pairs(armor.config.set_elements)do
450 if set_loc == loc then
451 if set_worn[worn_key] == nil then
452 set_worn[worn_key] = 0
453 set_worn[worn_key] = set_worn[worn_key] + 1
454 else
455 set_worn[worn_key] = set_worn[worn_key] + 1
249456 end
250 else
251 material.name = mat
252 end
457 end
458 end
459 end
460
461 -- Apply the armor multiplier only if the player is wearing a full set of armor
462 for mat_name,arm_piece_num in pairs(set_worn) do
463 if arm_piece_num == #armor.config.set_elements then
464 armor_multi = armor.config.set_multiplier
253465 end
254466 end
255467 for group, level in pairs(levels) do
256468 if level > 0 then
257469 level = level * armor.config.level_multiplier
258 if material.name and material.count == #self.elements then
259 level = level * 1.1
470 if armor_multi ~= 0 then
471 level = level * armor.config.set_multiplier
260472 end
261473 end
262474 local base = self.registered_groups[group]
278490 armor_monoid.monoid:add_change(player, change, "3d_armor:armor")
279491 else
280492 -- Preserve immortal group (damage disabled for player)
281 local immortal = player:get_armor_groups().immortal
493 local player_groups = player:get_armor_groups()
494 local immortal = player_groups.immortal
282495 if immortal and immortal ~= 0 then
283496 groups.immortal = 1
284497 end
498 -- Preserve fall_damage_add_percent group (fall damage modifier)
499 groups.fall_damage_add_percent = player_groups.fall_damage_add_percent
285500 player:set_armor_groups(groups)
286501 end
287502 if use_player_monoids then
300515 })
301516 pova.do_override(player)
302517 else
303 player:set_physics_override(physics)
518 local player_physics_locked = player:get_meta():get_int("player_physics_locked")
519 if player_physics_locked == nil or player_physics_locked == 0 then
520 player:set_physics_override(physics)
521 end
304522 end
305523 self.textures[name].armor = texture
306524 self.textures[name].preview = preview
310528 self:update_player_visuals(player)
311529 end
312530
531 --- Action when armor is punched.
532 --
533 -- @function armor:punch
534 -- @tparam ObjectRef player Player wearing the armor.
535 -- @tparam ObjectRef hitter Entity attacking player.
536 -- @tparam[opt] int time_from_last_punch Time in seconds since last punch action.
537 -- @tparam[opt] table tool_capabilities See `entity_damage_mechanism`.
313538 armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabilities)
314539 local name, armor_inv = self:get_valid_player(player, "[punch]")
315540 if not name then
338563 local groupcaps = tool_capabilities.groupcaps or {}
339564 local uses = 0
340565 damage = false
566 if next(groupcaps) == nil then
567 damage = true
568 end
341569 for group, caps in pairs(groupcaps) do
342570 local maxlevel = caps.maxlevel or 0
343571 local diff = maxlevel - level
392620 self.def[name].count = count
393621 end
394622
623 --- Action when armor is damaged.
624 --
625 -- @function armor:damage
626 -- @tparam ObjectRef player
627 -- @tparam int index Inventory index where armor is equipped.
628 -- @tparam ItemStack stack Armor item receiving damaged.
629 -- @tparam int use Amount of wear to add to armor item.
395630 armor.damage = function(self, player, index, stack, use)
396631 local old_stack = ItemStack(stack)
632 local worn_armor = armor:get_weared_armor_elements(player)
633 local armor_worn_cnt = 0
634 for k,v in pairs(worn_armor) do
635 armor_worn_cnt = armor_worn_cnt + 1
636 end
637 use = math.ceil(use/armor_worn_cnt)
397638 stack:add_wear(use)
398639 self:run_callbacks("on_damage", player, index, stack)
399640 self:set_inventory_stack(player, index, stack)
404645 end
405646 end
406647
648 --- Get elements of equipped armor.
649 --
650 -- @function armor:get_weared_armor_elements
651 -- @tparam ObjectRef player
652 -- @treturn table List of equipped armors.
653 armor.get_weared_armor_elements = function(self, player)
654 local name, inv = self:get_valid_player(player, "[get_weared_armor]")
655 local weared_armor = {}
656 if not name then
657 return
658 end
659 for i=1, inv:get_size("armor") do
660 local item_name = inv:get_stack("armor", i):get_name()
661 local element = self:get_element(item_name)
662 if element ~= nil then
663 weared_armor[element] = item_name
664 end
665 end
666 return weared_armor
667 end
668
669 --- Equips a piece of armor to a player.
670 --
671 -- @function armor:equip
672 -- @tparam ObjectRef player Player to whom item is equipped.
673 -- @tparam ItemStack itemstack Armor item to be equipped.
674 -- @treturn ItemStack Leftover item stack.
675 armor.equip = function(self, player, itemstack)
676 local name, armor_inv = self:get_valid_player(player, "[equip]")
677 local armor_element = self:get_element(itemstack:get_name())
678 if name and armor_element then
679 local index
680 for i=1, armor_inv:get_size("armor") do
681 local stack = armor_inv:get_stack("armor", i)
682 if self:get_element(stack:get_name()) == armor_element then
683 index = i
684 self:unequip(player, armor_element)
685 break
686 elseif not index and stack:is_empty() then
687 index = i
688 end
689 end
690 local stack = itemstack:take_item()
691 armor_inv:set_stack("armor", index, stack)
692 self:run_callbacks("on_equip", player, index, stack)
693 self:set_player_armor(player)
694 self:save_armor_inventory(player)
695 end
696 return itemstack
697 end
698
699 --- Unequips a piece of armor from a player.
700 --
701 -- @function armor:unequip
702 -- @tparam ObjectRef player Player from whom item is removed.
703 -- @tparam string armor_element Armor type identifier associated with the item
704 -- to be removed ("head", "torso", "hands", "shield", "legs", "feet", etc.).
705 armor.unequip = function(self, player, armor_element)
706 local name, armor_inv = self:get_valid_player(player, "[unequip]")
707 if not name then
708 return
709 end
710 for i=1, armor_inv:get_size("armor") do
711 local stack = armor_inv:get_stack("armor", i)
712 if self:get_element(stack:get_name()) == armor_element then
713 armor_inv:set_stack("armor", i, "")
714 minetest.after(0, function()
715 local inv = player:get_inventory()
716 if inv:room_for_item("main", stack) then
717 inv:add_item("main", stack)
718 else
719 minetest.add_item(player:get_pos(), stack)
720 end
721 end)
722 self:run_callbacks("on_unequip", player, i, stack)
723 self:set_player_armor(player)
724 self:save_armor_inventory(player)
725 return
726 end
727 end
728 end
729
730 --- Removes all armor worn by player.
731 --
732 -- @function armor:remove_all
733 -- @tparam ObjectRef player
734 armor.remove_all = function(self, player)
735 local name, inv = self:get_valid_player(player, "[remove_all]")
736 if not name then
737 return
738 end
739 inv:set_list("armor", {})
740 self:set_player_armor(player)
741 self:save_armor_inventory(player)
742 end
743
744 local skin_mod
745
746 --- Retrieves player's current skin.
747 --
748 -- @function armor:get_player_skin
749 -- @tparam string name Player name.
750 -- @treturn string Skin filename.
407751 armor.get_player_skin = function(self, name)
408 if (self.skin_mod == "skins" or self.skin_mod == "simple_skins") and skins.skins[name] then
752 if (skin_mod == "skins" or skin_mod == "simple_skins") and skins.skins[name] then
409753 return skins.skins[name]..".png"
410 elseif self.skin_mod == "u_skins" and u_skins.u_skins[name] then
754 elseif skin_mod == "u_skins" and u_skins.u_skins[name] then
411755 return u_skins.u_skins[name]..".png"
412 elseif self.skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then
756 elseif skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then
413757 return wardrobe.playerSkins[name]
414758 end
415759 return armor.default_skin..".png"
416760 end
417761
762 --- Updates skin.
763 --
764 -- @function armor:update_skin
765 -- @tparam string name Player name.
766 armor.update_skin = function(self, name)
767 minetest.after(0, function()
768 local pplayer = minetest.get_player_by_name(name)
769 if pplayer then
770 self.textures[name].skin = self:get_player_skin(name)
771 self:set_player_armor(pplayer)
772 end
773 end)
774 end
775
776 --- Adds preview for armor inventory.
777 --
778 -- @function armor:add_preview
779 -- @tparam string preview Preview image filename.
418780 armor.add_preview = function(self, preview)
419781 skin_previews[preview] = true
420782 end
421783
784 --- Retrieves preview for armor inventory.
785 --
786 -- @function armor:get_preview
787 -- @tparam string name Player name.
788 -- @treturn string Preview image filename.
422789 armor.get_preview = function(self, name)
423790 local preview = string.gsub(armor:get_player_skin(name), ".png", "_preview.png")
424791 if skin_previews[preview] then
427794 return "character_preview.png"
428795 end
429796
797 --- Retrieves armor formspec.
798 --
799 -- @function armor:get_armor_formspec
800 -- @tparam string name Player name.
801 -- @tparam[opt] bool listring Use `listring` formspec element (default: `false`).
802 -- @treturn string Formspec formatted string.
430803 armor.get_armor_formspec = function(self, name, listring)
431804 if armor.def[name].init_time == 0 then
432805 return "label[0,0;Armor not initialized!]"
449822 return formspec
450823 end
451824
825 --- Retrieves element.
826 --
827 -- @function armor:get_element
828 -- @tparam string item_name
829 -- @return Armor element.
452830 armor.get_element = function(self, item_name)
453831 for _, element in pairs(armor.elements) do
454832 if minetest.get_item_group(item_name, "armor_"..element) > 0 then
457835 end
458836 end
459837
838 --- Serializes armor inventory.
839 --
840 -- @function armor:serialize_inventory_list
841 -- @tparam table list Inventory contents.
842 -- @treturn string
460843 armor.serialize_inventory_list = function(self, list)
461844 local list_table = {}
462845 for _, stack in ipairs(list) do
465848 return minetest.serialize(list_table)
466849 end
467850
851 --- Deserializes armor inventory.
852 --
853 -- @function armor:deserialize_inventory_list
854 -- @tparam string list_string Serialized inventory contents.
855 -- @treturn table
468856 armor.deserialize_inventory_list = function(self, list_string)
469857 local list_table = minetest.deserialize(list_string)
470858 local list = {}
474862 return list
475863 end
476864
865 --- Loads armor inventory.
866 --
867 -- @function armor:load_armor_inventory
868 -- @tparam ObjectRef player
869 -- @treturn bool
477870 armor.load_armor_inventory = function(self, player)
478871 local _, inv = self:get_valid_player(player, "[load_armor_inventory]")
479872 if inv then
487880 end
488881 end
489882
883 --- Saves armor inventory.
884 --
885 -- Inventory is stored in `PlayerMetaRef` string "3d\_armor\_inventory".
886 --
887 -- @function armor:save_armor_inventory
888 -- @tparam ObjectRef player
490889 armor.save_armor_inventory = function(self, player)
491890 local _, inv = self:get_valid_player(player, "[save_armor_inventory]")
492891 if inv then
496895 end
497896 end
498897
898 --- Updates inventory.
899 --
900 -- DEPRECATED: Legacy inventory support.
901 --
902 -- @function armor:update_inventory
903 -- @param player
499904 armor.update_inventory = function(self, player)
500905 -- DEPRECATED: Legacy inventory support
501906 end
502907
908 --- Sets inventory stack.
909 --
910 -- @function armor:set_inventory_stack
911 -- @tparam ObjectRef player
912 -- @tparam int i Armor inventory index.
913 -- @tparam ItemStack stack Armor item.
503914 armor.set_inventory_stack = function(self, player, i, stack)
504915 local _, inv = self:get_valid_player(player, "[set_inventory_stack]")
505916 if inv then
508919 end
509920 end
510921
922 --- Checks for a player that can use armor.
923 --
924 -- @function armor:get_valid_player
925 -- @tparam ObjectRef player
926 -- @tparam string msg Additional info for log messages.
927 -- @treturn list Player name & armor inventory.
928 -- @usage local name, inv = armor:get_valid_player(player, "[equip]")
511929 armor.get_valid_player = function(self, player, msg)
512930 msg = msg or ""
513931 if not player then
514 minetest.log("warning", S("3d_armor: Player reference is nil @1", msg))
932 minetest.log("warning", ("3d_armor%s: Player reference is nil"):format(msg))
515933 return
516934 end
517935 local name = player:get_player_name()
518936 if not name then
519 minetest.log("warning", S("3d_armor: Player name is nil @1", msg))
937 minetest.log("warning", ("3d_armor%s: Player name is nil"):format(msg))
520938 return
521939 end
522940 local inv = minetest.get_inventory({type="detached", name=name.."_armor"})
523941 if not inv then
524 minetest.log("warning", S("3d_armor: Detached armor inventory is nil @1", msg))
942 -- This check may fail when called inside `on_joinplayer`
943 -- in that case, the armor will be initialized/updated later on
944 minetest.log("warning", ("3d_armor%s: Detached armor inventory is nil"):format(msg))
525945 return
526946 end
527947 return name, inv
528948 end
529949
950 --- Drops armor item at given position.
951 --
952 -- @tparam vector pos
953 -- @tparam ItemStack stack Armor item to be dropped.
530954 armor.drop_armor = function(pos, stack)
531955 local node = minetest.get_node_or_nil(pos)
532956 if node then
536960 end
537961 end
538962 end
963
964 --- Allows skin mod to be set manually.
965 --
966 -- Useful for skin mod forks that do not use the same name.
967 --
968 -- @tparam string mod Name of skin mod. Recognized names are "simple\_skins", "u\_skins", & "wardrobe".
969 armor.set_skin_mod = function(mod)
970 skin_mod = mod
971 end
1414 gold = "default:gold_ingot",
1515 mithril = "moreores:mithril_ingot",
1616 crystal = "ethereal:crystal_ingot",
17 nether = "nether:nether_ingot",
1718 }
1819
1920 -- Enable fire protection (defaults true if using ethereal mod)
+0
-372
3d_armor/armor.lua less more
0 -- support for i18n
1 local S = armor_i18n.gettext
2
3 armor:register_armor("3d_armor:helmet_admin", {
4 description = S("Admin Helmet"),
5 inventory_image = "3d_armor_inv_helmet_admin.png",
6 armor_groups = {fleshy=100},
7 groups = {armor_head=1, armor_heal=100, armor_use=0, armor_water=1,
8 not_in_creative_inventory=1},
9 on_drop = function(itemstack, dropper, pos)
10 return
11 end,
12 })
13
14 armor:register_armor("3d_armor:chestplate_admin", {
15 description = S("Admin Chestplate"),
16 inventory_image = "3d_armor_inv_chestplate_admin.png",
17 armor_groups = {fleshy=100},
18 groups = {armor_torso=1, armor_heal=100, armor_use=0,
19 not_in_creative_inventory=1},
20 on_drop = function(itemstack, dropper, pos)
21 return
22 end,
23 })
24
25 armor:register_armor("3d_armor:leggings_admin", {
26 description = S("Admin Leggings"),
27 inventory_image = "3d_armor_inv_leggings_admin.png",
28 armor_groups = {fleshy=100},
29 groups = {armor_legs=1, armor_heal=100, armor_use=0,
30 not_in_creative_inventory=1},
31 on_drop = function(itemstack, dropper, pos)
32 return
33 end,
34 })
35
36 armor:register_armor("3d_armor:boots_admin", {
37 description = S("Admin Boots"),
38 inventory_image = "3d_armor_inv_boots_admin.png",
39 armor_groups = {fleshy=100},
40 groups = {armor_feet=1, armor_heal=100, armor_use=0,
41 not_in_creative_inventory=1},
42 on_drop = function(itemstack, dropper, pos)
43 return
44 end,
45 })
46
47 minetest.register_alias("adminboots", "3d_armor:boots_admin")
48 minetest.register_alias("adminhelmet", "3d_armor:helmet_admin")
49 minetest.register_alias("adminchestplate", "3d_armor:chestplate_admin")
50 minetest.register_alias("adminleggings", "3d_armor:leggings_admin")
51
52 if armor.materials.wood then
53 armor:register_armor("3d_armor:helmet_wood", {
54 description = S("Wood Helmet"),
55 inventory_image = "3d_armor_inv_helmet_wood.png",
56 groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
57 armor_groups = {fleshy=5},
58 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
59 })
60 armor:register_armor("3d_armor:chestplate_wood", {
61 description = S("Wood Chestplate"),
62 inventory_image = "3d_armor_inv_chestplate_wood.png",
63 groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1},
64 armor_groups = {fleshy=10},
65 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
66 })
67 armor:register_armor("3d_armor:leggings_wood", {
68 description = S("Wood Leggings"),
69 inventory_image = "3d_armor_inv_leggings_wood.png",
70 groups = {armor_legs=1, armor_heal=0, armor_use=2000, flammable=1},
71 armor_groups = {fleshy=10},
72 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
73 })
74 armor:register_armor("3d_armor:boots_wood", {
75 description = S("Wood Boots"),
76 inventory_image = "3d_armor_inv_boots_wood.png",
77 armor_groups = {fleshy=5},
78 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
79 groups = {armor_feet=1, armor_heal=0, armor_use=2000, flammable=1},
80 })
81 local wood_armor_fuel = {
82 helmet = 6,
83 chestplate = 8,
84 leggings = 7,
85 boots = 5
86 }
87 for armor, burn in pairs(wood_armor_fuel) do
88 minetest.register_craft({
89 type = "fuel",
90 recipe = "3d_armor:" .. armor .. "_wood",
91 burntime = burn,
92 })
93 end
94 end
95
96 if armor.materials.cactus then
97 armor:register_armor("3d_armor:helmet_cactus", {
98 description = S("Cactus Helmet"),
99 inventory_image = "3d_armor_inv_helmet_cactus.png",
100 groups = {armor_head=1, armor_heal=0, armor_use=1000},
101 armor_groups = {fleshy=5},
102 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
103 })
104 armor:register_armor("3d_armor:chestplate_cactus", {
105 description = S("Cactus Chestplate"),
106 inventory_image = "3d_armor_inv_chestplate_cactus.png",
107 groups = {armor_torso=1, armor_heal=0, armor_use=1000},
108 armor_groups = {fleshy=10},
109 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
110 })
111 armor:register_armor("3d_armor:leggings_cactus", {
112 description = S("Cactus Leggings"),
113 inventory_image = "3d_armor_inv_leggings_cactus.png",
114 groups = {armor_legs=1, armor_heal=0, armor_use=1000},
115 armor_groups = {fleshy=10},
116 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
117 })
118 armor:register_armor("3d_armor:boots_cactus", {
119 description = S("Cactus Boots"),
120 inventory_image = "3d_armor_inv_boots_cactus.png",
121 groups = {armor_feet=1, armor_heal=0, armor_use=1000},
122 armor_groups = {fleshy=5},
123 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
124 })
125 local cactus_armor_fuel = {
126 helmet = 14,
127 chestplate = 16,
128 leggings = 15,
129 boots = 13
130 }
131 for armor, burn in pairs(cactus_armor_fuel) do
132 minetest.register_craft({
133 type = "fuel",
134 recipe = "3d_armor:" .. armor .. "_cactus",
135 burntime = burn,
136 })
137 end
138 end
139
140 if armor.materials.steel then
141 armor:register_armor("3d_armor:helmet_steel", {
142 description = S("Steel Helmet"),
143 inventory_image = "3d_armor_inv_helmet_steel.png",
144 groups = {armor_head=1, armor_heal=0, armor_use=800,
145 physics_speed=-0.01, physics_gravity=0.01},
146 armor_groups = {fleshy=10},
147 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
148 })
149 armor:register_armor("3d_armor:chestplate_steel", {
150 description = S("Steel Chestplate"),
151 inventory_image = "3d_armor_inv_chestplate_steel.png",
152 groups = {armor_torso=1, armor_heal=0, armor_use=800,
153 physics_speed=-0.04, physics_gravity=0.04},
154 armor_groups = {fleshy=15},
155 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
156 })
157 armor:register_armor("3d_armor:leggings_steel", {
158 description = S("Steel Leggings"),
159 inventory_image = "3d_armor_inv_leggings_steel.png",
160 groups = {armor_legs=1, armor_heal=0, armor_use=800,
161 physics_speed=-0.03, physics_gravity=0.03},
162 armor_groups = {fleshy=15},
163 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
164 })
165 armor:register_armor("3d_armor:boots_steel", {
166 description = S("Steel Boots"),
167 inventory_image = "3d_armor_inv_boots_steel.png",
168 groups = {armor_feet=1, armor_heal=0, armor_use=800,
169 physics_speed=-0.01, physics_gravity=0.01},
170 armor_groups = {fleshy=10},
171 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
172 })
173 end
174
175 if armor.materials.bronze then
176 armor:register_armor("3d_armor:helmet_bronze", {
177 description = S("Bronze Helmet"),
178 inventory_image = "3d_armor_inv_helmet_bronze.png",
179 groups = {armor_head=1, armor_heal=6, armor_use=400,
180 physics_speed=-0.01, physics_gravity=0.01},
181 armor_groups = {fleshy=10},
182 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
183 })
184 armor:register_armor("3d_armor:chestplate_bronze", {
185 description = S("Bronze Chestplate"),
186 inventory_image = "3d_armor_inv_chestplate_bronze.png",
187 groups = {armor_torso=1, armor_heal=6, armor_use=400,
188 physics_speed=-0.04, physics_gravity=0.04},
189 armor_groups = {fleshy=15},
190 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
191 })
192 armor:register_armor("3d_armor:leggings_bronze", {
193 description = S("Bronze Leggings"),
194 inventory_image = "3d_armor_inv_leggings_bronze.png",
195 groups = {armor_legs=1, armor_heal=6, armor_use=400,
196 physics_speed=-0.03, physics_gravity=0.03},
197 armor_groups = {fleshy=15},
198 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
199 })
200 armor:register_armor("3d_armor:boots_bronze", {
201 description = S("Bronze Boots"),
202 inventory_image = "3d_armor_inv_boots_bronze.png",
203 groups = {armor_feet=1, armor_heal=6, armor_use=400,
204 physics_speed=-0.01, physics_gravity=0.01},
205 armor_groups = {fleshy=10},
206 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
207 })
208 end
209
210 if armor.materials.diamond then
211 armor:register_armor("3d_armor:helmet_diamond", {
212 description = S("Diamond Helmet"),
213 inventory_image = "3d_armor_inv_helmet_diamond.png",
214 groups = {armor_head=1, armor_heal=12, armor_use=200},
215 armor_groups = {fleshy=15},
216 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
217 })
218 armor:register_armor("3d_armor:chestplate_diamond", {
219 description = S("Diamond Chestplate"),
220 inventory_image = "3d_armor_inv_chestplate_diamond.png",
221 groups = {armor_torso=1, armor_heal=12, armor_use=200},
222 armor_groups = {fleshy=20},
223 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
224 })
225 armor:register_armor("3d_armor:leggings_diamond", {
226 description = S("Diamond Leggings"),
227 inventory_image = "3d_armor_inv_leggings_diamond.png",
228 groups = {armor_legs=1, armor_heal=12, armor_use=200},
229 armor_groups = {fleshy=20},
230 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
231 })
232 armor:register_armor("3d_armor:boots_diamond", {
233 description = S("Diamond Boots"),
234 inventory_image = "3d_armor_inv_boots_diamond.png",
235 groups = {armor_feet=1, armor_heal=12, armor_use=200},
236 armor_groups = {fleshy=15},
237 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
238 })
239 end
240
241 if armor.materials.gold then
242 armor:register_armor("3d_armor:helmet_gold", {
243 description = S("Gold Helmet"),
244 inventory_image = "3d_armor_inv_helmet_gold.png",
245 groups = {armor_head=1, armor_heal=6, armor_use=300,
246 physics_speed=-0.02, physics_gravity=0.02},
247 armor_groups = {fleshy=10},
248 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
249 })
250 armor:register_armor("3d_armor:chestplate_gold", {
251 description = S("Gold Chestplate"),
252 inventory_image = "3d_armor_inv_chestplate_gold.png",
253 groups = {armor_torso=1, armor_heal=6, armor_use=300,
254 physics_speed=-0.05, physics_gravity=0.05},
255 armor_groups = {fleshy=15},
256 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
257 })
258 armor:register_armor("3d_armor:leggings_gold", {
259 description = S("Gold Leggings"),
260 inventory_image = "3d_armor_inv_leggings_gold.png",
261 groups = {armor_legs=1, armor_heal=6, armor_use=300,
262 physics_speed=-0.04, physics_gravity=0.04},
263 armor_groups = {fleshy=15},
264 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
265 })
266 armor:register_armor("3d_armor:boots_gold", {
267 description = S("Gold Boots"),
268 inventory_image = "3d_armor_inv_boots_gold.png",
269 groups = {armor_feet=1, armor_heal=6, armor_use=300,
270 physics_speed=-0.02, physics_gravity=0.02},
271 armor_groups = {fleshy=10},
272 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
273 })
274 end
275
276 if armor.materials.mithril then
277 armor:register_armor("3d_armor:helmet_mithril", {
278 description = S("Mithril Helmet"),
279 inventory_image = "3d_armor_inv_helmet_mithril.png",
280 groups = {armor_head=1, armor_heal=12, armor_use=100},
281 armor_groups = {fleshy=15},
282 damage_groups = {cracky=2, snappy=1, level=3},
283 })
284 armor:register_armor("3d_armor:chestplate_mithril", {
285 description = S("Mithril Chestplate"),
286 inventory_image = "3d_armor_inv_chestplate_mithril.png",
287 groups = {armor_torso=1, armor_heal=12, armor_use=100},
288 armor_groups = {fleshy=20},
289 damage_groups = {cracky=2, snappy=1, level=3},
290 })
291 armor:register_armor("3d_armor:leggings_mithril", {
292 description = S("Mithril Leggings"),
293 inventory_image = "3d_armor_inv_leggings_mithril.png",
294 groups = {armor_legs=1, armor_heal=12, armor_use=100},
295 armor_groups = {fleshy=20},
296 damage_groups = {cracky=2, snappy=1, level=3},
297 })
298 armor:register_armor("3d_armor:boots_mithril", {
299 description = S("Mithril Boots"),
300 inventory_image = "3d_armor_inv_boots_mithril.png",
301 groups = {armor_feet=1, armor_heal=12, armor_use=100},
302 armor_groups = {fleshy=15},
303 damage_groups = {cracky=2, snappy=1, level=3},
304 })
305 end
306
307 if armor.materials.crystal then
308 armor:register_armor("3d_armor:helmet_crystal", {
309 description = S("Crystal Helmet"),
310 inventory_image = "3d_armor_inv_helmet_crystal.png",
311 groups = {armor_head=1, armor_heal=12, armor_use=100, armor_fire=1},
312 armor_groups = {fleshy=15},
313 damage_groups = {cracky=2, snappy=1, level=3},
314 })
315 armor:register_armor("3d_armor:chestplate_crystal", {
316 description = S("Crystal Chestplate"),
317 inventory_image = "3d_armor_inv_chestplate_crystal.png",
318 groups = {armor_torso=1, armor_heal=12, armor_use=100, armor_fire=1},
319 armor_groups = {fleshy=20},
320 damage_groups = {cracky=2, snappy=1, level=3},
321 })
322 armor:register_armor("3d_armor:leggings_crystal", {
323 description = S("Crystal Leggings"),
324 inventory_image = "3d_armor_inv_leggings_crystal.png",
325 groups = {armor_legs=1, armor_heal=12, armor_use=100, armor_fire=1},
326 armor_groups = {fleshy=20},
327 damage_groups = {cracky=2, snappy=1, level=3},
328 })
329 armor:register_armor("3d_armor:boots_crystal", {
330 description = S("Crystal Boots"),
331 inventory_image = "3d_armor_inv_boots_crystal.png",
332 groups = {armor_feet=1, armor_heal=12, armor_use=100, physics_speed=1,
333 physics_jump=0.5, armor_fire=1},
334 armor_groups = {fleshy=15},
335 damage_groups = {cracky=2, snappy=1, level=3},
336 })
337 end
338
339 for k, v in pairs(armor.materials) do
340 minetest.register_craft({
341 output = "3d_armor:helmet_"..k,
342 recipe = {
343 {v, v, v},
344 {v, "", v},
345 {"", "", ""},
346 },
347 })
348 minetest.register_craft({
349 output = "3d_armor:chestplate_"..k,
350 recipe = {
351 {v, "", v},
352 {v, v, v},
353 {v, v, v},
354 },
355 })
356 minetest.register_craft({
357 output = "3d_armor:leggings_"..k,
358 recipe = {
359 {v, v, v},
360 {v, "", v},
361 {v, "", v},
362 },
363 })
364 minetest.register_craft({
365 output = "3d_armor:boots_"..k,
366 recipe = {
367 {v, "", v},
368 {v, "", v},
369 },
370 })
371 end
1818 [3d_armor:helmet_gold] X = [default:gold_ingot]
1919 [3d_armor:helmet_mithril] X = [moreores:mithril_ingot] *
2020 [3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] **
21 [3d_armor:helmet_nether] X = [ethereal:nether_ingot] **
2122
2223 Chestplates:
2324
3738 [3d_armor:chestplate_gold] X = [default:gold_ingot]
3839 [3d_armor:chestplate_mithril] X = [moreores:mithril_ingot] *
3940 [3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] **
41 [3d_armor:chestplate_nether] X = [ethereal:nether_ingot] **
4042
4143 Leggings:
4244
5658 [3d_armor:leggings_gold] X = [default:gold_ingot]
5759 [3d_armor:leggings_mithril] X = [moreores:mithril_ingot] *
5860 [3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] **
61 [3d_armor:leggings_nether] X = [ethereal:nether_ingot] **
5962
6063 Boots:
6164
7376 [3d_armor:boots_gold] X = [default:gold_ingot]
7477 [3d_armor:boots_mithril] X = [moreores:mithril_ingot] *
7578 [3d_armor:boots_crystal] X = [ethereal:crystal_ingot] **
79 [3d_armor:boots_nether] X = [ethereal:nether_ingot] **
7680
7781 * Requires moreores mod by Calinou - https://forum.minetest.net/viewtopic.php?id=549
7882 ** Requires ethereal mod by Chinchow & TenPlus1 - https://github.com/tenplus1/ethereal
83 ** Requires nether mod - https://github.com/minetest-mods/nether.git
44 fire?
55 ethereal?
66 bakedclay?
7 intllib?
7 moreores?
8 nether?
9 3d_armor_steel?
44 local pending_players = {}
55 local timer = 0
66
7 -- support for i18n
8 armor_i18n = { }
9 armor_i18n.gettext, armor_i18n.ngettext = dofile(modpath.."/intllib.lua")
7 dofile(modpath.."/api.lua")
108
119 -- local functions
12 local S = armor_i18n.gettext
1310 local F = minetest.formspec_escape
14
15 dofile(modpath.."/api.lua")
11 local S = armor.get_translator
1612
1713 -- integration test
1814 if minetest.settings:get_bool("enable_3d_armor_integration_test") then
19 dofile(modpath.."/integration_test.lua")
15 dofile(modpath.."/integration_test.lua")
2016 end
2117
2218
5147 local setting = minetest.settings:get("armor_"..name)
5248 if type(config) == "number" then
5349 setting = tonumber(setting)
50 elseif type(config) == "string" then
51 setting = tostring(setting)
5452 elseif type(config) == "boolean" then
5553 setting = minetest.settings:get_bool("armor_"..name)
5654 end
6563 end
6664 end
6765
66 -- Convert set_elements to a Lua table splitting on blank spaces
67 local t_set_elements = armor.config.set_elements
68 armor.config.set_elements = string.split(t_set_elements, " ")
69
70 -- Remove torch damage if fire_protect_torch == false
71 if armor.config.fire_protect_torch == false and armor.config.fire_protect == true then
72 for k,v in pairs(armor.fire_nodes) do
73 for k2,v2 in pairs(v) do
74 if string.find (v2,"torch") then
75 armor.fire_nodes[k] = nil
76 end
77 end
78 end
79 end
80
6881 -- Mod Compatibility
6982
7083 if minetest.get_modpath("technic") then
7184 armor.formspec = armor.formspec..
72 "label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]"
85 "label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]"
7386 armor:register_armor_group("radiation")
7487 end
7588 local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"}
8295 armor:add_preview(fn)
8396 end
8497 end
85 armor.skin_mod = mod
86 end
87 end
88 if not minetest.get_modpath("moreores") then
89 armor.materials.mithril = nil
90 end
91 if not minetest.get_modpath("ethereal") then
92 armor.materials.crystal = nil
93 end
94
95 dofile(modpath.."/armor.lua")
98 armor.set_skin_mod(mod)
99 end
100 end
101
96102
97103 -- Armor Initialization
98104
99105 armor.formspec = armor.formspec..
100106 "label[5,1;"..F(S("Level"))..": armor_level]"..
101 "label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]"
107 "label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]"
102108 if armor.config.fire_protect then
103 armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]"
109 armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]"
104110 end
105111 armor:register_on_damage(function(player, index, stack)
106112 local name = player:get_player_name()
196202 armor:set_player_armor(player)
197203 end,
198204 allow_put = function(inv, listname, index, put_stack, player)
205 if player:get_player_name() ~= name then
206 return 0
207 end
199208 local element = armor:get_element(put_stack:get_name())
200209 if not element then
201210 return 0
211220 return 1
212221 end,
213222 allow_take = function(inv, listname, index, stack, player)
223 if player:get_player_name() ~= name then
224 return 0
225 end
214226 return stack:get_count()
215227 end,
216228 allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
229 if player:get_player_name() ~= name then
230 return 0
231 end
217232 return count
218233 end,
219234 }, name)
273288
274289 -- Armor Player Model
275290
276 default.player_register_model("3d_armor_character.b3d", {
291 player_api.register_model("3d_armor_character.b3d", {
277292 animation_speed = 30,
278293 textures = {
279294 armor.default_skin..".png",
295310 if not name then
296311 return
297312 end
298 local player_name = player:get_player_name()
313 local player_name = player:get_player_name()
299314 for field, _ in pairs(fields) do
300315 if string.find(field, "skins_set") then
301 minetest.after(0, function()
302 local pplayer = minetest.get_player_by_name(player_name)
303 if player then
304 local skin = armor:get_player_skin(name)
305 armor.textures[name].skin = skin
306 armor:set_player_armor(pplayer)
307 end
308 end)
316 armor:update_skin(player_name)
309317 end
310318 end
311319 end)
312320
313321 minetest.register_on_joinplayer(function(player)
314322 default.player_set_model(player, "3d_armor_character.b3d")
315 local player_name = player:get_player_name()
323 local player_name = player:get_player_name()
316324
317325 minetest.after(0, function()
318 local pplayer = minetest.get_player_by_name(player_name)
326 -- TODO: Added in 7566ecc - What's the prupose?
327 local pplayer = minetest.get_player_by_name(player_name)
319328 if pplayer and init_player_armor(pplayer) == false then
320329 pending_players[pplayer] = 0
321330 end
379388 end)
380389 end
381390 end)
391 else -- reset un-dropped armor and it's effects
392 minetest.register_on_respawnplayer(function(player)
393 armor:set_player_armor(player)
394 end)
382395 end
383396
384397 if armor.config.punch_damage == true then
385398 minetest.register_on_punchplayer(function(player, hitter,
386399 time_from_last_punch, tool_capabilities)
387400 local name = player:get_player_name()
388 if name then
401 local hit_ip = hitter:is_player()
402 if name and hit_ip and minetest.is_protected(player:get_pos(), "") then
403 return
404 elseif name then
389405 armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
390406 last_punch_time[name] = minetest.get_gametime()
391407 end
413429
414430 minetest.register_globalstep(function(dtime)
415431 timer = timer + dtime
416 if timer > armor.config.init_delay then
417 for player, count in pairs(pending_players) do
418 local remove = init_player_armor(player) == true
419 pending_players[player] = count + 1
420 if remove == false and count > armor.config.init_times then
421 minetest.log("warning", S("3d_armor: Failed to initialize player"))
422 remove = true
423 end
424 if remove == true then
425 pending_players[player] = nil
426 end
427 end
428 timer = 0
432
433 if armor.config.feather_fall == true then
434 for _,player in pairs(minetest.get_connected_players()) do
435 local name = player:get_player_name()
436 if armor.def[name].feather > 0 then
437 local vel_y = player:get_velocity().y
438 if vel_y < 0 and vel_y < 3 then
439 vel_y = -(vel_y * 0.05)
440 player:add_velocity({x = 0, y = vel_y, z = 0})
441 end
442 end
443 end
444 end
445
446 if timer <= armor.config.init_delay then
447 return
448 end
449 timer = 0
450
451 for player, count in pairs(pending_players) do
452 local remove = init_player_armor(player) == true
453 pending_players[player] = count + 1
454 if remove == false and count > armor.config.init_times then
455 minetest.log("warning", S("3d_armor: Failed to initialize player"))
456 remove = true
457 end
458 if remove == true then
459 pending_players[player] = nil
460 end
461 end
462
463 -- water breathing protection, added by TenPlus1
464 if armor.config.water_protect == true then
465 for _,player in pairs(minetest.get_connected_players()) do
466 local name = player:get_player_name()
467 if armor.def[name].water > 0 and
468 player:get_breath() < 10 then
469 player:set_breath(10)
470 end
471 end
429472 end
430473 end)
431474
432 -- Fire Protection and water breathing, added by TenPlus1.
433
475 -- Fire Protection, added by TenPlus1.
434476 if armor.config.fire_protect == true then
435 -- override hot nodes so they do not hurt player anywhere but mod
477 -- override any hot nodes that do not already deal damage
436478 for _, row in pairs(armor.fire_nodes) do
437479 if minetest.registered_nodes[row[1]] then
438 minetest.override_item(row[1], {damage_per_second = 0})
480 local damage = minetest.registered_nodes[row[1]].damage_per_second
481 if not damage or damage == 0 then
482 minetest.override_item(row[1], {damage_per_second = row[3]})
483 end
439484 end
440485 end
441486 else
442 print (S("[3d_armor] Fire Nodes disabled"))
443 end
444
445 if armor.config.water_protect == true or armor.config.fire_protect == true then
446 minetest.register_globalstep(function(dtime)
447 armor.timer = armor.timer + dtime
448 if armor.timer < armor.config.update_time then
449 return
450 end
451 for _,player in pairs(minetest.get_connected_players()) do
452 local name = player:get_player_name()
453 local pos = player:get_pos()
454 local hp = player:get_hp()
455 if not name or not pos or not hp then
456 return
457 end
458 -- water breathing
459 if armor.config.water_protect == true then
460 if armor.def[name].water > 0 and
461 player:get_breath() < 10 then
462 player:set_breath(10)
463 end
464 end
487 print ("[3d_armor] Fire Nodes disabled")
488 end
489
490 if armor.config.fire_protect == true then
491 minetest.register_on_player_hpchange(function(player, hp_change, reason)
492
493 if reason.type == "node_damage" and reason.node then
465494 -- fire protection
466 if armor.config.fire_protect == true then
467 local fire_damage = true
468 pos.y = pos.y + 1.4 -- head level
469 local node_head = minetest.get_node(pos).name
470 pos.y = pos.y - 1.2 -- feet level
471 local node_feet = minetest.get_node(pos).name
472 -- is player inside a hot node?
473 for _, row in pairs(armor.fire_nodes) do
474 -- check fire protection, if not enough then get hurt
475 if row[1] == node_head or row[1] == node_feet then
476 if fire_damage == true then
495 if armor.config.fire_protect == true and hp_change < 0 then
496 local name = player:get_player_name()
497 for _,igniter in pairs(armor.fire_nodes) do
498 if reason.node == igniter[1] then
499 if armor.def[name].fire < igniter[2] then
477500 armor:punch(player, "fire")
478 last_punch_time[name] = minetest.get_gametime()
479 fire_damage = false
480 end
481 if hp > 0 and armor.def[name].fire < row[2] then
482 hp = hp - row[3] * armor.config.update_time
483 player:set_hp(hp)
484 break
501 else
502 hp_change = 0
485503 end
486504 end
487505 end
488506 end
489507 end
490 armor.timer = 0
491 end)
492 end
508 return hp_change
509 end, true)
510 end
+0
-45
3d_armor/intllib.lua less more
0
1 -- Fallback functions for when `intllib` is not installed.
2 -- Code released under Unlicense <http://unlicense.org>.
3
4 -- Get the latest version of this file at:
5 -- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
6
7 local function format(str, ...)
8 local args = { ... }
9 local function repl(escape, open, num, close)
10 if escape == "" then
11 local replacement = tostring(args[tonumber(num)])
12 if open == "" then
13 replacement = replacement..close
14 end
15 return replacement
16 else
17 return "@"..open..num..close
18 end
19 end
20 return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
21 end
22
23 local gettext, ngettext
24 if minetest.get_modpath("intllib") then
25 if intllib.make_gettext_pair then
26 -- New method using gettext.
27 gettext, ngettext = intllib.make_gettext_pair()
28 else
29 -- Old method using text files.
30 gettext = intllib.Getter()
31 end
32 end
33
34 -- Fill in missing functions.
35
36 gettext = gettext or function(msgid, ...)
37 return format(msgid, ...)
38 end
39
40 ngettext = ngettext or function(msgid, msgid_plural, n, ...)
41 return format(n==1 and msgid or msgid_plural, ...)
42 end
43
44 return gettext, ngettext
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor : Abgetrennter Rüstungsbestand ist nicht gesetzt: @1
6 3d_armor: Player name is nil @1=3d_armor : Spielername ist nicht gesetzt: @1
7 3d_armor: Player reference is nil @1=3d_armor : Spielerreferenz ist nicht gesetzt: @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor : Initialisierung des Spielers fehlgeschlagen
12 Fire=Feuer
13 Heal=Heilen
14 Level=Stufe
15 Radiation=Strahlen
16 Your @1 got destroyed!=Deine @1 wurde zerstört!
17 Your @1 is almost broken!=Deine @1 ist fast kaputt!
18 [3d_armor] Fire Nodes disabled=[3d_armor] Feuer-Knoten deaktiviert
0 # textdomain: 3d_armor
1
2 Radiation=Radiado
3 Level=Nivelo
4 Heal=Sanigi
5 Fire=Fajro
6 Your @1 is almost broken!=Via @1 estas preskaŭ rompita!
7 Your @1 got destroyed!=Via @1 detruiĝis!
8 3d_armor: Failed to initialize player=3d_armour: Malsukcesis pravalorigi la ludanton
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: La armadura desconectada es nula @1
6 3d_armor: Player name is nil @1=3d_armor: El nombre del jugador es nulo @1
7 3d_armor: Player reference is nil @1=3d_armor: La referencia del jugador es nula @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor: Fallo en la inicialización del jugador
12 Fire=Fuego
13 Heal=Salud
14 Level=Nivel
15 Radiation=Radiación
16 Your @1 got destroyed!=¡Tu @1 fue destruído!
17 Your @1 is almost broken!=¡Tu @1 esta a punto de romperse!
18 [3d_armor] Fire Nodes disabled=[3d_armor] Nodos de fuego desabilitados
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor : Inventaire détaché pour l'armure non trouvé @1
6 3d_armor: Player name is nil @1=3d_armor : Nom du joueur non trouvé @1
7 3d_armor: Player reference is nil @1=3d_armor : Référence au joueur non trouvée @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor : Impossible d'initialiser le joueur
12 Fire=Fire
13 Heal=Soins
14 Level=Niveau
15 Radiation=Radiation
16 Your @1 got destroyed!=Une partie de votre armure a été détruite : @1 !
17 Your @1 is almost broken!=Une partie de votre armure est presque détruite : @1 !
18 [3d_armor] Fire Nodes disabled=[3d_armor] Nœuds de type feu désactivés
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: L'inventario separato dell'armatura è nullo @1
6 3d_armor: Player name is nil @1=3d_armor: Il nome dell'utente è nullo @1
7 3d_armor: Player reference is nil @1=3d_armor: Il riferimento all'utente è nullo @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor: Inizializzazione dell'utente fallita
12 Fire=Fuoco
13 Heal=Guarigione
14 Level=Livello
15 Radiation=Radiazione
16 Your @1 got destroyed!=@1 in frantumi!
17 Your @1 is almost broken!=@1 quasi in frantumi!
18 [3d_armor] Fire Nodes disabled=[3d_armor] Nodi fuoco disabilitati
19
20
21 ##### not used anymore #####
22
23 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod caricata ma inutilizzata.
24 Back=Indietro
25 Armor=Armatura
26 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod caricata ma inutilizzata.
27 Armor stand top=Parte superiore del supporto per armatura
28 Armor stand=Supporto per armatura
29 Armor Stand=Supporto per armatura
30 Locked Armor stand=Supporto per armatura chiuso a chiave
31 Armor Stand (owned by @1)=Supporto per armatura (di proprietà di @1)
32 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mod caricata ma inutilizzata.
33 3d Armor=Armatura 3D
34 Armor not initialized!=Armatura non inizializzata!
35 Admin Shield=Scudo dell'amministratrice/tore
36 Wooden Shield=Scudo di legno
37 Enhanced Wood Shield=Scudo di legno migliorato
38 Cactus Shield=Scudo di cactus
39 Enhanced Cactus Shield=Scudo di cactus migliorato
40 Steel Shield=Scudo d'acciaio
41 Bronze Shield=Scudo di bronzo
42 Diamond Shield=Scudo di diamante
43 Gold Shield=Scudo d'oro
44 Mithril Shield=Scudo di mithril
45 Crystal Shield=Scudo di cristallo
46 Nether Shield=Scudo di nether
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Inventori perisai terpisah tiada nilai @1
6 3d_armor: Player name is nil @1=3d_armor: Nama pemain tiada nilai @1
7 3d_armor: Player reference is nil @1=3d_armor: Rujukan pemain tiada nilai @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor: Gagal mengasalkan pemain
12 Fire=Api
13 Heal=Pulih
14 Level=Tahap
15 Radiation=Radiasi
16 Your @1 got destroyed!=@1 anda telah musnah!
17 Your @1 is almost broken!=
18 [3d_armor] Fire Nodes disabled=[3d_armor] Nod-nod Api dilumpuhkan
19
20
21 ##### not used anymore #####
22
23 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mods dimuatkan tetapi tidak digunakan.
24 Back=Kembali
25 Armor=Perisai
26 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mods dimuatkan tetapi tidak digunakan.
27 Armor stand top=Bhg atas dirian perisai
28 Armor stand=Dirian perisai
29 Armor Stand=Dirian Perisai
30 Locked Armor stand=Dirian perisai Berkunci
31 Armor Stand (owned by @1)=Dirian Perisai (milik @1)
32 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mods dimuatkan tetapi tidak digunakan.
33 3d Armor=Perisai 3d
34 Armor not initialized!=Perisai tidak diasalkan!
35 Admin Shield=Perisai Pegang Pentadbir
36 Wooden Shield=Perisai Pegang Kayu
37 Enhanced Wood Shield=Perisai Pegang Kayu Kukuh
38 Cactus Shield=Perisai Pegang Kaktus
39 Enhanced Cactus Shield=Perisai Pegang Kaktus Kukuh
40 Steel Shield=Perisai Pegang Keluli
41 Bronze Shield=Perisai Pegang Gangsa
42 Diamond Shield=Perisai Pegang Intan
43 Gold Shield=Perisai Pegang Emas
44 Mithril Shield=Perisai Pegang Mithril
45 Crystal Shield=Perisai Pegang Kristal
46 Nether Shield=Perisai Pegang Nether
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Inventario avulso de armadura é nulo @1
6 3d_armor: Player name is nil @1=3d_armor: Nome de jogador é nulo @1
7 3d_armor: Player reference is nil @1=3d_armor: Referência Jogador é nula @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor: Falha ao inicializar jogador
12 Fire=Fogo
13 Heal=Saúde
14 Level=Nível
15 Radiation=Radiação
16 Your @1 got destroyed!=@1 foi destruído(a)!
17 Your @1 is almost broken!=
18 [3d_armor] Fire Nodes disabled=[3d_armor] Nodes de gofo desabilitados
19
20
21 ##### not used anymore #####
22
23 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod carregado mas inoperante.
24 Back=Voltar
25 Armor=Armadura
26 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod carregado mas inoperante.
27 Armor stand top=Topo de estande de armadura
28 Armor stand=Estande de armadura
29 Armor Stand=Estande de Armadura
30 Locked Armor stand=Estande de Armadura Trancada
31 Armor Stand (owned by @1)=Estande de Armadura (pertente a @1)
32 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mod carregado mas inoperante.
33 3d Armor=3d Armor
34 Armor not initialized!=Armadura não inicializada!
35 Admin Shield=Escudo de Administrador
36 Wooden Shield=Escudo de Madeira
37 Enhanced Wood Shield=Escudo de Madeira Melhorado
38 Cactus Shield=Escudo de Cacto
39 Enhanced Cactus Shield=Escudo de Cacto Melhorado
40 Steel Shield=Escudo de Aço
41 Bronze Shield=Escudo de Bronze
42 Diamond Shield=Escudo de Diamante
43 Gold Shield=Escudo de Ouro
44 Mithril Shield=Escudo de Mithril
45 Crystal Shield=Escudo de Cristal
46 Nether Shield=Escudo de Nether
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Inventario avulso de armadura é nulo @1
6 3d_armor: Player name is nil @1=3d_armor: Nome de jogador é nulo @1
7 3d_armor: Player reference is nil @1=3d_armor: Referência Jogador é nula @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor: Falha ao inicializar jogador
12 Fire=Fogo
13 Heal=Saúde
14 Level=Nível
15 Radiation=Radiação
16 Your @1 got destroyed!=@1 foi destruído(a)!
17 Your @1 is almost broken!=
18 [3d_armor] Fire Nodes disabled=[3d_armor] Nodes de gofo desabilitados
19
20
21 ##### not used anymore #####
22
23 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod carregado mas inoperante.
24 Back=Voltar
25 Armor=Armadura
26 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod carregado mas inoperante.
27 Armor stand top=Topo de estande de armadura
28 Armor stand=Estande de armadura
29 Armor Stand=Estande de Armadura
30 Locked Armor stand=Estande de Armadura Trancada
31 Armor Stand (owned by @1)=Estande de Armadura (pertente a @1)
32 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mod carregado mas inoperante.
33 3d Armor=3d Armor
34 Armor not initialized!=Armadura não inicializada!
35 Admin Shield=Escudo de Administrador
36 Wooden Shield=Escudo de Madeira
37 Enhanced Wood Shield=Escudo de Madeira Melhorado
38 Cactus Shield=Escudo de Cacto
39 Enhanced Cactus Shield=Escudo de Cacto Melhorado
40 Steel Shield=Escudo de Aço
41 Bronze Shield=Escudo de Bronze
42 Diamond Shield=Escudo de Diamante
43 Gold Shield=Escudo de Ouro
44 Mithril Shield=Escudo de Mithril
45 Crystal Shield=Escudo de Cristal
46 Nether Shield=Escudo de Nether
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Отдельный инвентарь брони является nil @1
6 3d_armor: Player name is nil @1=3d_armor: Имя игрока является nil @1
7 3d_armor: Player reference is nil @1=3d_armor: Ссылка игрока является nil @1
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=3d_armor: не смог подготовить игрока
12 Fire=огонь
13 Heal=исцеление
14 Level=уровень
15 Radiation=излучение
16 Your @1 got destroyed!=твой(и) @1 был(и) разрушен(ы)!
17 Your @1 is almost broken!=
18 [3d_armor] Fire Nodes disabled=[3d_armor] блоки огня отключены
19
20
21 ##### not used anymore #####
22
23 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: мод загружен но не используется.
24 Back=назад
25 Armor=бронь
26 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: мод загружен но не используется.
27 Armor stand top=стойка для брони (верх)
28 Armor stand=стойка для брони
29 Armor Stand=стойка для брони
30 Locked Armor stand=защищенная стойка для брони
31 Armor Stand (owned by @1)=стойка для брони (принадлежит @1)
32 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: мод загружен но не используется.
33 3d Armor=3D бронь
34 Armor not initialized!=бронь не подготовлена!
35 Admin Shield=щит админа
36 Wooden Shield=деревянный щит
37 Enhanced Wood Shield=улучшенный деревянный щит
38 Cactus Shield=кактусный щит
39 Enhanced Cactus Shield=улучшенный кактусный щит
40 Steel Shield=стальной щит
41 Bronze Shield=бронзовый щит
42 Diamond Shield=алмазный щит
43 Gold Shield=золотой щит
44 Mithril Shield=мифриловый щит
45 Crystal Shield=кристалловый щит
+0
-384
3d_armor/locale/es.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2017-08-06 18:20+0200\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: es\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player name is nil @1"
22 msgstr "3d_armor: El nombre del jugador es nulo @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player inventory is nil @1"
26 msgstr "3d_armor: El inventario del jugador es nulo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: La armadura desconectada es nula @1"
31
32 #: ../3d_armor/api.lua
33 msgid "3d_armor: Player reference is nil @1"
34 msgstr "3d_armor: La referencia del jugador es nula @1"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Helmet"
38 msgstr "Casco de admin"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Chestplate"
42 msgstr "Peto de admin"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Leggings"
46 msgstr "Polainas de admin"
47
48 #: ../3d_armor/armor.lua
49 msgid "Admin Boots"
50 msgstr "Botas de admin"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Helmet"
54 msgstr "Casco de madera"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Chestplate"
58 msgstr "Peto de madera"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Leggings"
62 msgstr "Polainas de madera"
63
64 #: ../3d_armor/armor.lua
65 msgid "Wood Boots"
66 msgstr "Botas de madera"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Helmet"
70 msgstr "Casco de cactus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Chestplate"
74 msgstr "Peto de cactus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Leggings"
78 msgstr "Polainas de cactus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Cactus Boots"
82 msgstr "Botas de cactus"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Helmet"
86 msgstr "Casco de acero"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Chestplate"
90 msgstr "Peto de acero"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Leggings"
94 msgstr "Polainas de acero"
95
96 #: ../3d_armor/armor.lua
97 msgid "Steel Boots"
98 msgstr "Botas de acero"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Helmet"
102 msgstr "Casco de bronce"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Chestplate"
106 msgstr "Peto de bronce"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Leggings"
110 msgstr "Polainas de bronce"
111
112 #: ../3d_armor/armor.lua
113 msgid "Bronze Boots"
114 msgstr "Botas de bronce"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Helmet"
118 msgstr "Casco de diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Chestplate"
122 msgstr "Peto de diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Leggings"
126 msgstr "Polainas de diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Diamond Boots"
130 msgstr "Botas de diamante"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Helmet"
134 msgstr "Casco de oro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Chestplate"
138 msgstr "Peto de oro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Leggings"
142 msgstr "Polainas de oro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Gold Boots"
146 msgstr "Botas de oro"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Helmet"
150 msgstr "Casco de mitrilo"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Chestplate"
154 msgstr "Peto de mitrilo"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Leggings"
158 msgstr "Polainas de mitrilo"
159
160 #: ../3d_armor/armor.lua
161 msgid "Mithril Boots"
162 msgstr "Botas de mitrilo"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Helmet"
166 msgstr "Casco de cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Chestplate"
170 msgstr "Peto de cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Leggings"
174 msgstr "Polainas de cristal"
175
176 #: ../3d_armor/armor.lua
177 msgid "Crystal Boots"
178 msgstr "Botas de cristal"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Radiation"
182 msgstr "Radiación"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Level"
186 msgstr "Nivel"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Heal"
190 msgstr "Salud"
191
192 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
193 msgid "Fire"
194 msgstr "Fuego"
195
196 #: ../3d_armor/init.lua
197 msgid "Your @1 got destroyed!"
198 msgstr "¡Tu @1 fue destruído!"
199
200 #: ../3d_armor/init.lua
201 msgid "3d_armor: Failed to initialize player"
202 msgstr "3d_armor: Fallo en la inicialización del jugador"
203
204 #: ../3d_armor/init.lua
205 msgid "[3d_armor] Fire Nodes disabled"
206 msgstr "[3d_armor] Nodos de fuego desabilitados"
207
208 #: ../3d_armor_ip/init.lua
209 msgid "3d_armor_ip: Mod loaded but unused."
210 msgstr "3d_armor_ip: Mod cargado, pero sin ser usado."
211
212 #: ../3d_armor_ip/init.lua
213 msgid "Back"
214 msgstr "Volver"
215
216 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
217 msgid "Armor"
218 msgstr "Armadura"
219
220 #: ../3d_armor_sfinv/init.lua
221 msgid "3d_armor_sfinv: Mod loaded but unused."
222 msgstr "3d_armor_sfinv: Mod cargado, pero sin ser usado."
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand top"
226 msgstr "Parte arriba maniquí armadura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor stand"
230 msgstr "Maniquí para armadura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Armor Stand"
234 msgstr "Maniquí para armadura"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Locked Armor stand"
238 msgstr "Maniquí para armadura (bloqueado)"
239
240 #: ../3d_armor_stand/init.lua
241 msgid "Armor Stand (owned by @1)"
242 msgstr "Maniquí para armadura (propiedad de @1)"
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d_armor_ui: Mod loaded but unused."
246 msgstr "3d_armor_ui: Mod cargado, pero sin ser usado."
247
248 #: ../3d_armor_ui/init.lua
249 msgid "3d Armor"
250 msgstr "Armadura 3d"
251
252 #: ../3d_armor_ui/init.lua
253 msgid "Armor not initialized!"
254 msgstr "¡Armadura no inicializada!"
255
256 #: ../hazmat_suit/init.lua
257 msgid "hazmat_suit: Mod loaded but unused."
258 msgstr "hazmat_suit: Mod cargado, pero sin ser usado."
259
260 #: ../hazmat_suit/init.lua
261 msgid "Hazmat Helmet"
262 msgstr "Casco de hazmat"
263
264 #: ../hazmat_suit/init.lua
265 msgid "Hazmat Chestplate"
266 msgstr "Peto de hazmat"
267
268 #: ../hazmat_suit/init.lua
269 msgid "Hazmat Sleeve"
270 msgstr "Manga de hazmat"
271
272 #: ../hazmat_suit/init.lua
273 msgid "Hazmat Leggins"
274 msgstr "Polainas de hazmat"
275
276 #: ../hazmat_suit/init.lua
277 msgid "Hazmat Boots"
278 msgstr "Botas de hazmat"
279
280 #: ../hazmat_suit/init.lua
281 msgid "Hazmat Suit"
282 msgstr "Traje de hazmat"
283
284 #: ../shields/init.lua
285 msgid "Admin Shield"
286 msgstr "Escudo de admin"
287
288 #: ../shields/init.lua
289 msgid "Wooden Shield"
290 msgstr "Escudo de madera"
291
292 #: ../shields/init.lua
293 msgid "Enhanced Wood Shield"
294 msgstr "Escudo de madera mejorado"
295
296 #: ../shields/init.lua
297 msgid "Cactus Shield"
298 msgstr "Escudo de cactus"
299
300 #: ../shields/init.lua
301 msgid "Enhanced Cactus Shield"
302 msgstr "Escudo de cactus mejorado"
303
304 #: ../shields/init.lua
305 msgid "Steel Shield"
306 msgstr "Escudo de acero"
307
308 #: ../shields/init.lua
309 msgid "Bronze Shield"
310 msgstr "Escudo de bronce"
311
312 #: ../shields/init.lua
313 msgid "Diamond Shield"
314 msgstr "Escudo de diamante"
315
316 #: ../shields/init.lua
317 msgid "Gold Shield"
318 msgstr "Escudo de oro"
319
320 #: ../shields/init.lua
321 msgid "Mithril Shield"
322 msgstr "Escudo de mitrilo"
323
324 #: ../shields/init.lua
325 msgid "Crystal Shield"
326 msgstr "Escudo de cristal"
327
328 #: ../technic_armor/init.lua
329 msgid "technic_armor: Mod loaded but unused."
330 msgstr "technic_armor: Mod cargado, pero no usado."
331
332 #: ../technic_armor/init.lua
333 msgid "Lead"
334 msgstr "Plomo"
335
336 #: ../technic_armor/init.lua
337 msgid "Brass"
338 msgstr "Latón"
339
340 #: ../technic_armor/init.lua
341 msgid "Cast Iron"
342 msgstr "Hierro fundido"
343
344 #: ../technic_armor/init.lua
345 msgid "Carbon Steel"
346 msgstr "Acero carbono"
347
348 #: ../technic_armor/init.lua
349 msgid "Stainless Steel"
350 msgstr "Acero inoxidable"
351
352 #: ../technic_armor/init.lua
353 msgid "Tin"
354 msgstr "Estaño"
355
356 #: ../technic_armor/init.lua
357 msgid "Silver"
358 msgstr "Plata"
359
360 #: ../technic_armor/init.lua
361 msgid "Helmet"
362 msgstr "Casco"
363
364 #: ../technic_armor/init.lua
365 msgid "Chestplate"
366 msgstr "Peto"
367
368 #: ../technic_armor/init.lua
369 msgid "Leggins"
370 msgstr "Polainas"
371
372 #: ../technic_armor/init.lua
373 msgid "Boots"
374 msgstr "Botas"
375
376 #: ../technic_armor/init.lua
377 msgid "Shield"
378 msgstr "Escudo"
379
380 #. 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)
381 #: ../technic_armor/init.lua
382 msgid "@1 @2"
383 msgstr "@2 de @1"
+0
-295
3d_armor/locale/fr.po less more
0 # French translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # fat115 <fat115@framasoft.org>, 2017.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: \n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
11 "Last-Translator: fat115 <fat115@framasoft.org>\n"
12 "Language-Team: \n"
13 "Language: fr\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Poedit 1.8.12\n"
18 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor : Référence au joueur non trouvée @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor : Nom du joueur non trouvé @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor : Inventaire détaché pour l'armure non trouvé @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Casque d'admin"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Cuirasse d'admin"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Jambières d'admin"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Bottes d'admin"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Casque en bois"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Cuirasse en bois"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Jambières en bois"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Bottes en bois"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Casque en cactus"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Cuirasse en cactus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Jambières en cactus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Bottes en cactus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Casque en acier"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr " = Cuirasse en acier"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Jambières en acier"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Bottes en acier"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Casque en bronze"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Cuirasse en bronze"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Jambières en bronze"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Bottes en bronze"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Casque en diamant"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Cuirasse en diamant"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Jambières en diamant"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Bottes en diamant"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Casque en or"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Cuirasse en or"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Jambières en or"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Bottes en or"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Casque en mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Cuirasse en mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Jambières en mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Bottes en mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Casque en cristal"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Cuirasse en cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Jambières en cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Bottes en cristal"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiation"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Niveau"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Soins"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fire"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "Une partie de votre armure a été détruite : @1 !"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor : Impossible d'initialiser le joueur"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Noeuds de type feu désactivés"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip : Mod chargé mais inutilisé."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Retour"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armure"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv : Mod chargé mais inutilisé."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Haut de support d'armure"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Support d'armure"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Support d'armure"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Support d'armure verrouillé"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Support d'armure (propriété de @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui : Mod chargé mais inutilisé."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "Armure 3d"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armure non initialisée !"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Bouclier d'admin"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Bouclier en bois"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Bouclier en bois amélioré"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Bouclier en cactus"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Bouclier en cactus amélioré"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Bouclier en acier"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Bouclier en bronze"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Bouclier en diamant"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Bouclier en or"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Bouclier en mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Bouclier en cristal"
+0
-295
3d_armor/locale/it.po less more
0 # Italian translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # Hamlet <h4mlet@riseup.net>, 2017.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: Italian localization file for the 3D Armor module\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
11 "Last-Translator: H4mlet <h4mlet@riseup.net>\n"
12 "Language-Team: ITALIANO\n"
13 "Language: it\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "X-Generator: Poedit 1.6.10\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Il riferimento alla/al giocatrice/tore è nullo @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Il nome della/del gicatrice/tore è nullo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: L'inventario staccato dell'armatura è nullo @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Elmo dell'amministratrice/tore"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Corazza dell'amministratrice/tore"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Gambali dell'amministratrice/tore"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Stivali dell'amministratrice/tore"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Elmo di legno"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Corazza di legno"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Gambali di legno"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Stivali di legno"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Elmo di cactus"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Corazza di cactus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Gambali di cactus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Stivali di cactus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Elmo di acciaio"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Corazza di acciaio"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Gambali di acciaio"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Stivali di acciaio"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Elmo di bronzo"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Corazza di bronzo"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Gambali di bronzo"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Stivali di bronzo"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Elmo di diamante"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Corazza di diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Gambali di diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Stivali di diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Elmo d'oro"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Corazza d'oro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Gambali d'oro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Stivali d'oro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Elmo di mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Corazza di mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Gambali di mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Stivali di mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Elmo di cristallo"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Corazza di cristallo"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Gambali di cristallo"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Stivali di cristallo"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiazione"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Livello"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Guarigione"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fuoco"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "Il/i vostro/i @1 è/sono stato/i distrutto/i!"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor: Inizializzazione della/del giocatrice/tore fallita"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Nodi fuoco disabilitati"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip: Mod caricato ma inutilizzato."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Indietro"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armatura"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv: Mod caricato ma inutilizzato."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Parte superiore del supporto per armatura"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Supporto per armatura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Supporto per armatura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Supporto per armatura chiuso a chiave"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Supporto per armatura (di proprietà di @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui: Mod caricato ma inutilizzato."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "Armatura 3D"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armatura non inizializzata!"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Scudo dell'amministratrice/tore"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Scudo di legno"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Scudo di legno migliorato"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Scudo di cactus"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Scudo di cactus migliorato"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Scudo di acciaio"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Scudo di bronzo"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Scudo di diamante"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Scudo d'oro"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Scudo di mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Scudo di cristallo"
+0
-296
3d_armor/locale/ms.po less more
0 # Malay translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>, 2018.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: \n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:21+0200\n"
10 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
11 "Last-Translator: MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>\n"
12 "Language-Team: \n"
13 "Language: ms\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Poedit 2.0.6\n"
18 "Plural-Forms: nplurals=1; plural=0;\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Rujukan pemain tiada nilai @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Nama pemain tiada nilai @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: Inventori perisai terpisah tiada nilai @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Helmet Pentadbir"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Perisai Dada Pentadbir"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Perisai Kaki Pentadbir"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "But Pentadbir"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Helmet Kayu"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Perisai Dada Kayu"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Perisai Kaki Kayu"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "But Kayu"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Helmet Kaktus"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Perisai Dada Kaktus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Perisai Kaki Kaktus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "But Kaktus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Helmet Keluli"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Perisai Dada Keluli"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Perisai Kaki Keluli"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "But Keluli"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Helmet Gangsa"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Perisai Dada Gangsa"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Perisai Kaki Gangsa"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "But Gangsa"
111
112 # 'Diamond' should be translated as 'intan' because the more common word 'berlian' is only specifically used for the gemstone diamond.
113 #: ../3d_armor/armor.lua
114 msgid "Diamond Helmet"
115 msgstr "Helmet Intan"
116
117 #: ../3d_armor/armor.lua
118 msgid "Diamond Chestplate"
119 msgstr "Perisai Dada Intan"
120
121 #: ../3d_armor/armor.lua
122 msgid "Diamond Leggings"
123 msgstr "Perisai Kaki Intan"
124
125 #: ../3d_armor/armor.lua
126 msgid "Diamond Boots"
127 msgstr "But Intan"
128
129 #: ../3d_armor/armor.lua
130 msgid "Gold Helmet"
131 msgstr "Helmet Emas"
132
133 #: ../3d_armor/armor.lua
134 msgid "Gold Chestplate"
135 msgstr "Perisai Dada Emas"
136
137 #: ../3d_armor/armor.lua
138 msgid "Gold Leggings"
139 msgstr "Perisai Kaki Emas"
140
141 #: ../3d_armor/armor.lua
142 msgid "Gold Boots"
143 msgstr "But Emas"
144
145 #: ../3d_armor/armor.lua
146 msgid "Mithril Helmet"
147 msgstr "Helmet Mithril"
148
149 #: ../3d_armor/armor.lua
150 msgid "Mithril Chestplate"
151 msgstr "Perisai Dada Mithril"
152
153 #: ../3d_armor/armor.lua
154 msgid "Mithril Leggings"
155 msgstr "Perisai Kaki Mithril"
156
157 #: ../3d_armor/armor.lua
158 msgid "Mithril Boots"
159 msgstr "But Mithril"
160
161 #: ../3d_armor/armor.lua
162 msgid "Crystal Helmet"
163 msgstr "Helmet Kristal"
164
165 #: ../3d_armor/armor.lua
166 msgid "Crystal Chestplate"
167 msgstr "Perisai Dada Kristal"
168
169 #: ../3d_armor/armor.lua
170 msgid "Crystal Leggings"
171 msgstr "Perisai Kaki Kristal"
172
173 #: ../3d_armor/armor.lua
174 msgid "Crystal Boots"
175 msgstr "But Kristal"
176
177 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
178 msgid "Radiation"
179 msgstr "Radiasi"
180
181 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
182 msgid "Level"
183 msgstr "Tahap"
184
185 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
186 msgid "Heal"
187 msgstr "Pulih"
188
189 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
190 msgid "Fire"
191 msgstr "Api"
192
193 #: ../3d_armor/init.lua
194 msgid "Your @1 got destroyed!"
195 msgstr "@1 anda telah musnah!"
196
197 #: ../3d_armor/init.lua
198 msgid "3d_armor: Failed to initialize player"
199 msgstr "3d_armor: Gagal mengasalkan pemain"
200
201 #: ../3d_armor/init.lua
202 msgid "[3d_armor] Fire Nodes disabled"
203 msgstr "[3d_armor] Nod-nod Api dilumpuhkan"
204
205 #: ../3d_armor_ip/init.lua
206 msgid "3d_armor_ip: Mod loaded but unused."
207 msgstr "3d_armor_ip: Mods dimuatkan tetapi tidak digunakan."
208
209 #: ../3d_armor_ip/init.lua
210 msgid "Back"
211 msgstr "Kembali"
212
213 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
214 msgid "Armor"
215 msgstr "Perisai"
216
217 #: ../3d_armor_sfinv/init.lua
218 msgid "3d_armor_sfinv: Mod loaded but unused."
219 msgstr "3d_armor_sfinv: Mods dimuatkan tetapi tidak digunakan."
220
221 #: ../3d_armor_stand/init.lua
222 msgid "Armor stand top"
223 msgstr "Bhg atas dirian perisai"
224
225 #: ../3d_armor_stand/init.lua
226 msgid "Armor stand"
227 msgstr "Dirian perisai"
228
229 #: ../3d_armor_stand/init.lua
230 msgid "Armor Stand"
231 msgstr "Dirian Perisai"
232
233 #: ../3d_armor_stand/init.lua
234 msgid "Locked Armor stand"
235 msgstr "Dirian perisai Berkunci"
236
237 #: ../3d_armor_stand/init.lua
238 msgid "Armor Stand (owned by @1)"
239 msgstr "Dirian Perisai (milik @1)"
240
241 #: ../3d_armor_ui/init.lua
242 msgid "3d_armor_ui: Mod loaded but unused."
243 msgstr "3d_armor_ui: Mods dimuatkan tetapi tidak digunakan."
244
245 #: ../3d_armor_ui/init.lua
246 msgid "3d Armor"
247 msgstr "Perisai 3d"
248
249 #: ../3d_armor_ui/init.lua
250 msgid "Armor not initialized!"
251 msgstr "Perisai tidak diasalkan!"
252
253 #: ../shields/init.lua
254 msgid "Admin Shield"
255 msgstr "Perisai Pegang Pentadbir"
256
257 #: ../shields/init.lua
258 msgid "Wooden Shield"
259 msgstr "Perisai Pegang Kayu"
260
261 #: ../shields/init.lua
262 msgid "Enhanced Wood Shield"
263 msgstr "Perisai Pegang Kayu Kukuh"
264
265 #: ../shields/init.lua
266 msgid "Cactus Shield"
267 msgstr "Perisai Pegang Kaktus"
268
269 #: ../shields/init.lua
270 msgid "Enhanced Cactus Shield"
271 msgstr "Perisai Pegang Kaktus Kukuh"
272
273 #: ../shields/init.lua
274 msgid "Steel Shield"
275 msgstr "Perisai Pegang Keluli"
276
277 #: ../shields/init.lua
278 msgid "Bronze Shield"
279 msgstr "Perisai Pegang Gangsa"
280
281 #: ../shields/init.lua
282 msgid "Diamond Shield"
283 msgstr "Perisai Pegang Intan"
284
285 #: ../shields/init.lua
286 msgid "Gold Shield"
287 msgstr "Perisai Pegang Emas"
288
289 #: ../shields/init.lua
290 msgid "Mithril Shield"
291 msgstr "Perisai Pegang Mithril"
292
293 #: ../shields/init.lua
294 msgid "Crystal Shield"
295 msgstr "Perisai Pegang Kristal"
+0
-295
3d_armor/locale/pt.po less more
0 # LANGUAGE translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # BrunoMine <borgesdossantosbruno@gmail.com>, 2018.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: 3d_armor\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-11-08 13:12-0200\n"
11 "Language-Team: \n"
12 "MIME-Version: 1.0\n"
13 "Content-Type: text/plain; charset=UTF-8\n"
14 "Content-Transfer-Encoding: 8bit\n"
15 "X-Generator: Poedit 2.0.6\n"
16 "Last-Translator: BrunoMine <borgesdossantosbruno@gmail.com>\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "Language: pt\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Referência Jogador é nula @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Nome de jogador é nulo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: Inventario avulso de armadura é nulo @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Capacete de Administrador"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Peitoral de Administrador"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Calças de Administrador"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Botas de Administrador"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Capacete de Madeira"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Peitoral de Madeira"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Calças de Madeira"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Botas de Madeira"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Capacete de Cacto"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Peitoral de Cacto"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Calças de Cacto"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Botas de Madeira"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Capacete de Aço"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Peitoral de Aço"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Calças de Aço"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Botas de Aço"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Capacete de Bronze"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Peitoral de Bronze"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Calças de Bronze"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Botas de Bronze"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Capacete de Diamante"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Peitoral de Diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Calças de Diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Botas de Diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Capacete de Ouro"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Peitoral de Ouro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Calças de Ouro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Botas de Ouro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Capacete de Mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Peitoral de Mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Calças de Mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Botas de Mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Capacete de Cristal"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Peitoral de Cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Calças de Cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Botas de Cristal"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiação"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Nível"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Saúde"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fogo"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "@1 foi destruído(a)!"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor: Falha ao inicializar jogador"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Nodes de gofo desabilitados"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip: Mod carregado mas inoperante."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Voltar"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armadura"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv: Mod carregado mas inoperante."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Topo de estande de armadura"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Estande de armadura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Estande de Armadura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Estande de Armadura Trancada"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Estande de Armadura (pertente a @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui: Mod carregado mas inoperante."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "3d Armor"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armadura não inicializada!"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Escudo de Administrador"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Escudo de Madeira"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Escudo de Madeira Melhorado"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Escudo de Cacto"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Escudo de Cacto Melhorado"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Escudo de Aço"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Escudo de Bronze"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Escudo de Diamante"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Escudo de Ouro"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Escudo de Mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Escudo de Cristal"
+0
-295
3d_armor/locale/pt_BR.po less more
0 # LANGUAGE translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # BrunoMine <borgesdossantosbruno@gmail.com>, 2018.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: 3d_armor\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-11-08 13:12-0200\n"
11 "Language-Team: \n"
12 "MIME-Version: 1.0\n"
13 "Content-Type: text/plain; charset=UTF-8\n"
14 "Content-Transfer-Encoding: 8bit\n"
15 "X-Generator: Poedit 2.0.6\n"
16 "Last-Translator: BrunoMine <borgesdossantosbruno@gmail.com>\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "Language: pt_BR\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Referência Jogador é nula @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Nome de jogador é nulo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: Inventario avulso de armadura é nulo @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Capacete de Administrador"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Peitoral de Administrador"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Calças de Administrador"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Botas de Administrador"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Capacete de Madeira"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Peitoral de Madeira"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Calças de Madeira"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Botas de Madeira"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Capacete de Cacto"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Peitoral de Cacto"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Calças de Cacto"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Botas de Madeira"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Capacete de Aço"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Peitoral de Aço"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Calças de Aço"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Botas de Aço"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Capacete de Bronze"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Peitoral de Bronze"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Calças de Bronze"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Botas de Bronze"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Capacete de Diamante"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Peitoral de Diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Calças de Diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Botas de Diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Capacete de Ouro"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Peitoral de Ouro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Calças de Ouro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Botas de Ouro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Capacete de Mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Peitoral de Mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Calças de Mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Botas de Mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Capacete de Cristal"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Peitoral de Cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Calças de Cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Botas de Cristal"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiação"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Nível"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Saúde"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fogo"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "@1 foi destruído(a)!"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor: Falha ao inicializar jogador"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Nodes de gofo desabilitados"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip: Mod carregado mas inoperante."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Voltar"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armadura"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv: Mod carregado mas inoperante."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Topo de estande de armadura"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Estande de armadura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Estande de Armadura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Estande de Armadura Trancada"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Estande de Armadura (pertente a @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui: Mod carregado mas inoperante."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "3d Armor"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armadura não inicializada!"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Escudo de Administrador"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Escudo de Madeira"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Escudo de Madeira Melhorado"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Escudo de Cacto"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Escudo de Cacto Melhorado"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Escudo de Aço"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Escudo de Bronze"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Escudo de Diamante"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Escudo de Ouro"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Escudo de Mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Escudo de Cristal"
+0
-294
3d_armor/locale/ru.po less more
0 # Russian translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # CodeXP <codexp@gmx.net>, 2018.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: 3d_armor\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-07-23 21:21+0200\n"
11 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
12 "Last-Translator: CodeXP <codexp@gmx.net>\n"
13 "Language-Team: \n"
14 "Language: ru\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #: ../3d_armor/api.lua
20 msgid "3d_armor: Player reference is nil @1"
21 msgstr "3d_armor: Ссылка игрока является nil @1"
22
23 #: ../3d_armor/api.lua
24 msgid "3d_armor: Player name is nil @1"
25 msgstr "3d_armor: Имя игрока является nil @1"
26
27 #: ../3d_armor/api.lua
28 msgid "3d_armor: Detached armor inventory is nil @1"
29 msgstr "3d_armor: Отдельный инвентарь брони является nil @1"
30
31 #: ../3d_armor/armor.lua
32 msgid "Admin Helmet"
33 msgstr "шлем админа"
34
35 #: ../3d_armor/armor.lua
36 msgid "Admin Chestplate"
37 msgstr "бронежилет админа"
38
39 #: ../3d_armor/armor.lua
40 msgid "Admin Leggings"
41 msgstr "гамаши админа"
42
43 #: ../3d_armor/armor.lua
44 msgid "Admin Boots"
45 msgstr "ботинки админа"
46
47 #: ../3d_armor/armor.lua
48 msgid "Wood Helmet"
49 msgstr "деревянный шлем"
50
51 #: ../3d_armor/armor.lua
52 msgid "Wood Chestplate"
53 msgstr "деревянный бронежилет"
54
55 #: ../3d_armor/armor.lua
56 msgid "Wood Leggings"
57 msgstr "деревянные гамаши"
58
59 #: ../3d_armor/armor.lua
60 msgid "Wood Boots"
61 msgstr "деревянные ботинки"
62
63 #: ../3d_armor/armor.lua
64 msgid "Cactus Helmet"
65 msgstr "кактусовый шлем"
66
67 #: ../3d_armor/armor.lua
68 msgid "Cactus Chestplate"
69 msgstr "кактусовый бронежилет"
70
71 #: ../3d_armor/armor.lua
72 msgid "Cactus Leggings"
73 msgstr "кактусовые гамаши"
74
75 #: ../3d_armor/armor.lua
76 msgid "Cactus Boots"
77 msgstr "кактусовые ботинки"
78
79 #: ../3d_armor/armor.lua
80 msgid "Steel Helmet"
81 msgstr "стальной шлем"
82
83 #: ../3d_armor/armor.lua
84 msgid "Steel Chestplate"
85 msgstr "стальной бронежилет"
86
87 #: ../3d_armor/armor.lua
88 msgid "Steel Leggings"
89 msgstr "стальные гамаши"
90
91 #: ../3d_armor/armor.lua
92 msgid "Steel Boots"
93 msgstr "стальные ботинки"
94
95 #: ../3d_armor/armor.lua
96 msgid "Bronze Helmet"
97 msgstr "бронзовый шлем"
98
99 #: ../3d_armor/armor.lua
100 msgid "Bronze Chestplate"
101 msgstr "бронзовый бронежилет"
102
103 #: ../3d_armor/armor.lua
104 msgid "Bronze Leggings"
105 msgstr "бронзовые гамаши"
106
107 #: ../3d_armor/armor.lua
108 msgid "Bronze Boots"
109 msgstr "бронзовые ботинки"
110
111 #: ../3d_armor/armor.lua
112 msgid "Diamond Helmet"
113 msgstr "алмазный шлем"
114
115 #: ../3d_armor/armor.lua
116 msgid "Diamond Chestplate"
117 msgstr "алмазный бронежилет"
118
119 #: ../3d_armor/armor.lua
120 msgid "Diamond Leggings"
121 msgstr "алмазные гамаши"
122
123 #: ../3d_armor/armor.lua
124 msgid "Diamond Boots"
125 msgstr "алмазные ботинки"
126
127 #: ../3d_armor/armor.lua
128 msgid "Gold Helmet"
129 msgstr "золотой шлем"
130
131 #: ../3d_armor/armor.lua
132 msgid "Gold Chestplate"
133 msgstr "золотой бронежилет"
134
135 #: ../3d_armor/armor.lua
136 msgid "Gold Leggings"
137 msgstr "золотые гамаши"
138
139 #: ../3d_armor/armor.lua
140 msgid "Gold Boots"
141 msgstr "золотые ботинки"
142
143 #: ../3d_armor/armor.lua
144 msgid "Mithril Helmet"
145 msgstr "мифриловый шлем"
146
147 #: ../3d_armor/armor.lua
148 msgid "Mithril Chestplate"
149 msgstr "мифриловый бронежилет"
150
151 #: ../3d_armor/armor.lua
152 msgid "Mithril Leggings"
153 msgstr "мифриловые гамаши"
154
155 #: ../3d_armor/armor.lua
156 msgid "Mithril Boots"
157 msgstr "мифриловые ботинки"
158
159 #: ../3d_armor/armor.lua
160 msgid "Crystal Helmet"
161 msgstr "кристалловый шлем"
162
163 #: ../3d_armor/armor.lua
164 msgid "Crystal Chestplate"
165 msgstr "кристалловый бронежилет"
166
167 #: ../3d_armor/armor.lua
168 msgid "Crystal Leggings"
169 msgstr "кристалловые гамаши"
170
171 #: ../3d_armor/armor.lua
172 msgid "Crystal Boots"
173 msgstr "кристалловые ботинки"
174
175 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
176 msgid "Radiation"
177 msgstr "излучение"
178
179 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
180 msgid "Level"
181 msgstr "уровень"
182
183 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
184 msgid "Heal"
185 msgstr "исцеление"
186
187 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
188 msgid "Fire"
189 msgstr "огонь"
190
191 #: ../3d_armor/init.lua
192 msgid "Your @1 got destroyed!"
193 msgstr "твой(и) @1 был(и) разрушен(ы)!"
194
195 #: ../3d_armor/init.lua
196 msgid "3d_armor: Failed to initialize player"
197 msgstr "3d_armor: не смог подготовить игрока"
198
199 #: ../3d_armor/init.lua
200 msgid "[3d_armor] Fire Nodes disabled"
201 msgstr "[3d_armor] блоки огня отключены"
202
203 #: ../3d_armor_ip/init.lua
204 msgid "3d_armor_ip: Mod loaded but unused."
205 msgstr "3d_armor_ip: мод загружен но не используется."
206
207 #: ../3d_armor_ip/init.lua
208 msgid "Back"
209 msgstr "назад"
210
211 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
212 msgid "Armor"
213 msgstr "бронь"
214
215 #: ../3d_armor_sfinv/init.lua
216 msgid "3d_armor_sfinv: Mod loaded but unused."
217 msgstr "3d_armor_sfinv: мод загружен но не используется."
218
219 #: ../3d_armor_stand/init.lua
220 msgid "Armor stand top"
221 msgstr "стойка для брони (верх)"
222
223 #: ../3d_armor_stand/init.lua
224 msgid "Armor stand"
225 msgstr "стойка для брони"
226
227 #: ../3d_armor_stand/init.lua
228 msgid "Armor Stand"
229 msgstr "стойка для брони"
230
231 #: ../3d_armor_stand/init.lua
232 msgid "Locked Armor stand"
233 msgstr "защищенная стойка для брони"
234
235 #: ../3d_armor_stand/init.lua
236 msgid "Armor Stand (owned by @1)"
237 msgstr "стойка для брони (принадлежит @1)"
238
239 #: ../3d_armor_ui/init.lua
240 msgid "3d_armor_ui: Mod loaded but unused."
241 msgstr "3d_armor_ui: мод загружен но не используется."
242
243 #: ../3d_armor_ui/init.lua
244 msgid "3d Armor"
245 msgstr "3D бронь"
246
247 #: ../3d_armor_ui/init.lua
248 msgid "Armor not initialized!"
249 msgstr "бронь не подготовлена!"
250
251 #: ../shields/init.lua
252 msgid "Admin Shield"
253 msgstr "щит админа"
254
255 #: ../shields/init.lua
256 msgid "Wooden Shield"
257 msgstr "деревянный щит"
258
259 #: ../shields/init.lua
260 msgid "Enhanced Wood Shield"
261 msgstr "улучшенный деревянный щит"
262
263 #: ../shields/init.lua
264 msgid "Cactus Shield"
265 msgstr "кактусный щит"
266
267 #: ../shields/init.lua
268 msgid "Enhanced Cactus Shield"
269 msgstr "улучшенный кактусный щит"
270
271 #: ../shields/init.lua
272 msgid "Steel Shield"
273 msgstr "стальной щит"
274
275 #: ../shields/init.lua
276 msgid "Bronze Shield"
277 msgstr "бронзовый щит"
278
279 #: ../shields/init.lua
280 msgid "Diamond Shield"
281 msgstr "алмазный щит"
282
283 #: ../shields/init.lua
284 msgid "Gold Shield"
285 msgstr "золотой щит"
286
287 #: ../shields/init.lua
288 msgid "Mithril Shield"
289 msgstr "мифриловый щит"
290
291 #: ../shields/init.lua
292 msgid "Crystal Shield"
293 msgstr "кристалловый щит"
+0
-294
3d_armor/locale/template.pot less more
0 # LANGUAGE translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: \n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #: ../3d_armor/api.lua
20 msgid "3d_armor: Player reference is nil @1"
21 msgstr ""
22
23 #: ../3d_armor/api.lua
24 msgid "3d_armor: Player name is nil @1"
25 msgstr ""
26
27 #: ../3d_armor/api.lua
28 msgid "3d_armor: Detached armor inventory is nil @1"
29 msgstr ""
30
31 #: ../3d_armor/armor.lua
32 msgid "Admin Helmet"
33 msgstr ""
34
35 #: ../3d_armor/armor.lua
36 msgid "Admin Chestplate"
37 msgstr ""
38
39 #: ../3d_armor/armor.lua
40 msgid "Admin Leggings"
41 msgstr ""
42
43 #: ../3d_armor/armor.lua
44 msgid "Admin Boots"
45 msgstr ""
46
47 #: ../3d_armor/armor.lua
48 msgid "Wood Helmet"
49 msgstr ""
50
51 #: ../3d_armor/armor.lua
52 msgid "Wood Chestplate"
53 msgstr ""
54
55 #: ../3d_armor/armor.lua
56 msgid "Wood Leggings"
57 msgstr ""
58
59 #: ../3d_armor/armor.lua
60 msgid "Wood Boots"
61 msgstr ""
62
63 #: ../3d_armor/armor.lua
64 msgid "Cactus Helmet"
65 msgstr ""
66
67 #: ../3d_armor/armor.lua
68 msgid "Cactus Chestplate"
69 msgstr ""
70
71 #: ../3d_armor/armor.lua
72 msgid "Cactus Leggings"
73 msgstr ""
74
75 #: ../3d_armor/armor.lua
76 msgid "Cactus Boots"
77 msgstr ""
78
79 #: ../3d_armor/armor.lua
80 msgid "Steel Helmet"
81 msgstr ""
82
83 #: ../3d_armor/armor.lua
84 msgid "Steel Chestplate"
85 msgstr ""
86
87 #: ../3d_armor/armor.lua
88 msgid "Steel Leggings"
89 msgstr ""
90
91 #: ../3d_armor/armor.lua
92 msgid "Steel Boots"
93 msgstr ""
94
95 #: ../3d_armor/armor.lua
96 msgid "Bronze Helmet"
97 msgstr ""
98
99 #: ../3d_armor/armor.lua
100 msgid "Bronze Chestplate"
101 msgstr ""
102
103 #: ../3d_armor/armor.lua
104 msgid "Bronze Leggings"
105 msgstr ""
106
107 #: ../3d_armor/armor.lua
108 msgid "Bronze Boots"
109 msgstr ""
110
111 #: ../3d_armor/armor.lua
112 msgid "Diamond Helmet"
113 msgstr ""
114
115 #: ../3d_armor/armor.lua
116 msgid "Diamond Chestplate"
117 msgstr ""
118
119 #: ../3d_armor/armor.lua
120 msgid "Diamond Leggings"
121 msgstr ""
122
123 #: ../3d_armor/armor.lua
124 msgid "Diamond Boots"
125 msgstr ""
126
127 #: ../3d_armor/armor.lua
128 msgid "Gold Helmet"
129 msgstr ""
130
131 #: ../3d_armor/armor.lua
132 msgid "Gold Chestplate"
133 msgstr ""
134
135 #: ../3d_armor/armor.lua
136 msgid "Gold Leggings"
137 msgstr ""
138
139 #: ../3d_armor/armor.lua
140 msgid "Gold Boots"
141 msgstr ""
142
143 #: ../3d_armor/armor.lua
144 msgid "Mithril Helmet"
145 msgstr ""
146
147 #: ../3d_armor/armor.lua
148 msgid "Mithril Chestplate"
149 msgstr ""
150
151 #: ../3d_armor/armor.lua
152 msgid "Mithril Leggings"
153 msgstr ""
154
155 #: ../3d_armor/armor.lua
156 msgid "Mithril Boots"
157 msgstr ""
158
159 #: ../3d_armor/armor.lua
160 msgid "Crystal Helmet"
161 msgstr ""
162
163 #: ../3d_armor/armor.lua
164 msgid "Crystal Chestplate"
165 msgstr ""
166
167 #: ../3d_armor/armor.lua
168 msgid "Crystal Leggings"
169 msgstr ""
170
171 #: ../3d_armor/armor.lua
172 msgid "Crystal Boots"
173 msgstr ""
174
175 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
176 msgid "Radiation"
177 msgstr ""
178
179 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
180 msgid "Level"
181 msgstr ""
182
183 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
184 msgid "Heal"
185 msgstr ""
186
187 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
188 msgid "Fire"
189 msgstr ""
190
191 #: ../3d_armor/init.lua
192 msgid "Your @1 got destroyed!"
193 msgstr ""
194
195 #: ../3d_armor/init.lua
196 msgid "3d_armor: Failed to initialize player"
197 msgstr ""
198
199 #: ../3d_armor/init.lua
200 msgid "[3d_armor] Fire Nodes disabled"
201 msgstr ""
202
203 #: ../3d_armor_ip/init.lua
204 msgid "3d_armor_ip: Mod loaded but unused."
205 msgstr ""
206
207 #: ../3d_armor_ip/init.lua
208 msgid "Back"
209 msgstr ""
210
211 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
212 msgid "Armor"
213 msgstr ""
214
215 #: ../3d_armor_sfinv/init.lua
216 msgid "3d_armor_sfinv: Mod loaded but unused."
217 msgstr ""
218
219 #: ../3d_armor_stand/init.lua
220 msgid "Armor stand top"
221 msgstr ""
222
223 #: ../3d_armor_stand/init.lua
224 msgid "Armor stand"
225 msgstr ""
226
227 #: ../3d_armor_stand/init.lua
228 msgid "Armor Stand"
229 msgstr ""
230
231 #: ../3d_armor_stand/init.lua
232 msgid "Locked Armor stand"
233 msgstr ""
234
235 #: ../3d_armor_stand/init.lua
236 msgid "Armor Stand (owned by @1)"
237 msgstr ""
238
239 #: ../3d_armor_ui/init.lua
240 msgid "3d_armor_ui: Mod loaded but unused."
241 msgstr ""
242
243 #: ../3d_armor_ui/init.lua
244 msgid "3d Armor"
245 msgstr ""
246
247 #: ../3d_armor_ui/init.lua
248 msgid "Armor not initialized!"
249 msgstr ""
250
251 #: ../shields/init.lua
252 msgid "Admin Shield"
253 msgstr ""
254
255 #: ../shields/init.lua
256 msgid "Wooden Shield"
257 msgstr ""
258
259 #: ../shields/init.lua
260 msgid "Enhanced Wood Shield"
261 msgstr ""
262
263 #: ../shields/init.lua
264 msgid "Cactus Shield"
265 msgstr ""
266
267 #: ../shields/init.lua
268 msgid "Enhanced Cactus Shield"
269 msgstr ""
270
271 #: ../shields/init.lua
272 msgid "Steel Shield"
273 msgstr ""
274
275 #: ../shields/init.lua
276 msgid "Bronze Shield"
277 msgstr ""
278
279 #: ../shields/init.lua
280 msgid "Diamond Shield"
281 msgstr ""
282
283 #: ../shields/init.lua
284 msgid "Gold Shield"
285 msgstr ""
286
287 #: ../shields/init.lua
288 msgid "Mithril Shield"
289 msgstr ""
290
291 #: ../shields/init.lua
292 msgid "Crystal Shield"
293 msgstr ""
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=
6 3d_armor: Player name is nil @1=
7 3d_armor: Player reference is nil @1=
8
9 ### init.lua ###
10
11 3d_armor: Failed to initialize player=
12 Fire=
13 Heal=
14 Level=
15 Radiation=
16 Your @1 got destroyed!=
17 Your @1 is almost broken!=
18 [3d_armor] Fire Nodes disabled=
00 name = 3d_armor
1 depends = default
2 optional_depends = player_monoids, armor_monoid, pova, fire, ethereal, bakedclay, intllib
1 depends = default, player_api
2 optional_depends = player_monoids, armor_monoid, pova, fire, ethereal, bakedclay, moreores, nether
33 description = Adds craftable armor that is visible to other players.
3d_armor/textures/3d_armor_boots_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_admin_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_bronze_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_cactus_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_crystal_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_diamond_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_gold_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_mithril_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_steel_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_boots_wood_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_admin_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_bronze_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_cactus_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_crystal_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_diamond_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_gold_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_mithril_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_steel_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_chestplate_wood_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_admin_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_bronze_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_cactus_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_crystal_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_diamond_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_gold_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_mithril_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_steel_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_helmet_wood_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_boots_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_chestplate_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_helmet_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_inv_leggings_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_admin.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_admin_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_bronze.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_bronze_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_cactus.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_cactus_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_crystal.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_crystal_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_diamond.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_diamond_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_gold.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_gold_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_mithril.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_mithril_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_steel.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_steel_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_wood.png less more
Binary diff not shown
3d_armor/textures/3d_armor_leggings_wood_preview.png less more
Binary diff not shown
3d_armor/textures/3d_armor_ui_form.png less more
Binary diff not shown
+0
-44
3d_armor/textures/preview_index.txt less more
0 3d_armor/textures/3d_armor_helmet_wood.png:head
1 3d_armor/textures/3d_armor_chestplate_wood.png:torso
2 3d_armor/textures/3d_armor_leggings_wood.png:legs
3 3d_armor/textures/3d_armor_boots_wood.png:feet
4
5 3d_armor/textures/3d_armor_helmet_cactus.png:head
6 3d_armor/textures/3d_armor_chestplate_cactus.png:torso
7 3d_armor/textures/3d_armor_leggings_cactus.png:legs
8 3d_armor/textures/3d_armor_boots_cactus.png:feet
9
10 3d_armor/textures/3d_armor_helmet_steel.png:head
11 3d_armor/textures/3d_armor_chestplate_steel.png:torso
12 3d_armor/textures/3d_armor_leggings_steel.png:legs
13 3d_armor/textures/3d_armor_boots_steel.png:feet
14
15 3d_armor/textures/3d_armor_helmet_bronze.png:head
16 3d_armor/textures/3d_armor_chestplate_bronze.png:torso
17 3d_armor/textures/3d_armor_leggings_bronze.png:legs
18 3d_armor/textures/3d_armor_boots_bronze.png:feet
19
20 3d_armor/textures/3d_armor_helmet_gold.png:head
21 3d_armor/textures/3d_armor_chestplate_gold.png:torso
22 3d_armor/textures/3d_armor_leggings_gold.png:legs
23 3d_armor/textures/3d_armor_boots_gold.png:feet
24
25 3d_armor/textures/3d_armor_helmet_diamond.png:head
26 3d_armor/textures/3d_armor_chestplate_diamond.png:torso
27 3d_armor/textures/3d_armor_leggings_diamond.png:legs
28 3d_armor/textures/3d_armor_boots_diamond.png:feet
29
30 3d_armor/textures/3d_armor_helmet_mithril.png:head
31 3d_armor/textures/3d_armor_chestplate_mithril.png:torso
32 3d_armor/textures/3d_armor_leggings_mithril.png:legs
33 3d_armor/textures/3d_armor_boots_mithril.png:feet
34
35 3d_armor/textures/3d_armor_helmet_crystal.png:head
36 3d_armor/textures/3d_armor_chestplate_crystal.png:torso
37 3d_armor/textures/3d_armor_leggings_crystal.png:legs
38 3d_armor/textures/3d_armor_boots_crystal.png:feet
39
40 3d_armor/textures/3d_armor_helmet_admin.png:head
41 3d_armor/textures/3d_armor_chestplate_admin.png:torso
42 3d_armor/textures/3d_armor_leggings_admin.png:legs
43 3d_armor/textures/3d_armor_boots_admin.png:feet
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22 local F = minetest.formspec_escape
33
44 if not minetest.global_exists("inventory_plus") then
0 # textdomain: 3d_armor_ip
1
2 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod ŝarĝita sed neuzata.
3 Back=Dorso
4 Armor=Kiraso
0 # textdomain: 3d_armor_ip
1
2
3 ### init.lua ###
4
5 3d_armor_ip: Mod loaded but unused.=3d_armor_ip : Mod chargé mais inutilisé.
6 Armor=Armure
7 Back=Retour
0 # textdomain: 3d_armor_ip
1
2
3 ### init.lua ###
4
5 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod carregado porém sem uso.
6 Armor=Armadura
7 Back=Voltar
0 # textdomain: 3d_armor_ip
1
2
3 ### init.lua ###
4
5 3d_armor_ip: Mod loaded but unused.=
6 Armor=
7 Back=
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22
33 if not minetest.global_exists("sfinv") then
44 minetest.log("warning", S("3d_armor_sfinv: Mod loaded but unused."))
0 # textdomain: 3d_armor_sfinv
1
2 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod ŝarĝita sed neuzata.
3 Armor=Kiraso
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv : Mod cargado pero no activado.
6 Armor=Armadura
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv : Mod chargé mais inutilisé.
6 Armor=Armure
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod carregado porém sem uso.
6 Armor=Armadura
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=
6 Armor=
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22
33 local armor_stand_formspec = "size[8,7]" ..
44 default.gui_bg ..
152152 drawtype = "mesh",
153153 mesh = "3d_armor_stand.obj",
154154 tiles = {"3d_armor_stand.png"},
155 use_texture_alpha = "clip",
155156 paramtype = "light",
156157 paramtype2 = "facedir",
157158 walkable = false,
220221 drawtype = "mesh",
221222 mesh = "3d_armor_stand.obj",
222223 tiles = {"3d_armor_stand_locked.png"},
224 use_texture_alpha = "clip",
223225 paramtype = "light",
224226 paramtype2 = "facedir",
225227 walkable = false,
0 # textdomain: 3d_armor_stand
1
2 Armor stand top=Kirasstando supro
3 Armor stand=Kirasstando
4 Armor Stand=Kirasstando
5 Locked Armor stand=Ŝlosita Kirasstando
6 Armor Stand (owned by @1)=Kirasstando (posedata de @1)
0 # textdomain: 3d_armor_stand
1
2
3 ### init.lua ###
4
5 Armor Stand=Support d'armure
6 Armor Stand (owned by @1)=Support d'armure (propriété de @1)
7 Armor stand=Support d'armure
8 Armor stand top=Haut de support d'armure
9 Locked Armor stand=Support d'armure verrouillé
0 # textdomain: 3d_armor_stand
1
2
3 ### init.lua ###
4
5 Armor Stand=Suporte de Armadura
6 Armor Stand (owned by @1)=Suporte de Armadura (dono: @1)
7 Armor stand=Suporte de armadura
8 Armor stand top=Topo do suporte de armadura
9 Locked Armor stand=Suporte de armadura trancado
0 # textdomain: 3d_armor_stand
1
2
3 ### init.lua ###
4
5 Armor Stand=
6 Armor Stand (owned by @1)=
7 Armor stand=
8 Armor stand top=
9 Locked Armor stand=
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22 local F = minetest.formspec_escape
33 local has_technic = minetest.get_modpath("technic") ~= nil
44
55 if not minetest.global_exists("unified_inventory") then
6 minetest.log("warning", S("3d_armor_ui: Mod loaded but unused."))
6 minetest.log("warning", "3d_armor_ui: Mod loaded but unused.")
77 return
88 end
99
10 if unified_inventory.sfinv_compat_layer then
10 local ui = unified_inventory
11 if ui.sfinv_compat_layer then
1112 return
1213 end
1314
2627
2728 unified_inventory.register_page("armor", {
2829 get_formspec = function(player, perplayer_formspec)
29 local fy = perplayer_formspec.formspec_y
30 local fy = perplayer_formspec.form_header_y + 0.5
31 local gridx = perplayer_formspec.std_inv_x
32 local gridy = 0.6
33
3034 local name = player:get_player_name()
3135 if armor.def[name].init_time == 0 then
3236 return {formspec="label[0,0;"..F(S("Armor not initialized!")).."]"}
3337 end
34 local formspec = "background[0.06,"..fy..";7.92,7.52;3d_armor_ui_form.png]"..
35 "label[0,0;"..F(S("Armor")).."]"..
36 "list[detached:"..name.."_armor;armor;0,"..fy..";2,3;]"..
37 "image[2.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]"..
38 "label[5.0,"..(fy + 0.0)..";"..F(S("Level"))..": "..armor.def[name].level.."]"..
39 "label[5.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]"..
38 local formspec = perplayer_formspec.standard_inv_bg..
39 perplayer_formspec.standard_inv..
40 ui.make_inv_img_grid(gridx, gridy, 2, 3)..
41 string.format("label[%f,%f;%s]",
42 perplayer_formspec.form_header_x, perplayer_formspec.form_header_y, F(S("Armor")))..
43 string.format("list[detached:%s_armor;armor;%f,%f;2,3;]",
44 name, gridx + ui.list_img_offset, gridy + ui.list_img_offset) ..
45 "image[3.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]"..
46 "label[6.0,"..(fy + 0.0)..";"..F(S("Level"))..": "..armor.def[name].level.."]"..
47 "label[6.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]"..
4048 "listring[current_player;main]"..
4149 "listring[detached:"..name.."_armor;armor]"
4250 if armor.config.fire_protect then
43 formspec = formspec.."label[5.0,"..(fy + 1.0)..";"..
51 formspec = formspec.."label[6.0,"..(fy + 1.0)..";"..
4452 F(S("Fire"))..": "..armor.def[name].fire.."]"
4553 end
4654 if has_technic then
47 formspec = formspec.."label[5.0,"..(fy + 1.5)..";"..
55 formspec = formspec.."label[6.0,"..(fy + 1.5)..";"..
4856 F(S("Radiation"))..": "..armor.def[name].groups["radiation"].."]"
4957 end
5058 return {formspec=formspec}
0 # textdomain: 3d_armor_ui
1
2 3d Armor= 3D Kiraso
3 Armor not initialized!=Kiraso ne pravigita!
4 Armor=Kiraso
5 Level=Nivelo
6 Heal=Sanigi
7 Fire=Fajro
8 Radiation=Radiado
0 # textdomain: 3d_armor_ui
1
2
3 ### init.lua ###
4
5 3d Armor=Armure 3d
6 Armor=Armure
7 Armor not initialized!=Armure non initialisée !
8 Fire=Feu
9 Heal=Soins
10 Level=Niveau
11 Radiation=Radiation
0 # textdomain: 3d_armor_ui
1
2
3 ### init.lua ###
4
5 3d Armor=3d Armor
6 Armor=Armadura
7 Armor not initialized!=Armadura não inicializada!
8 Fire=Fogo
9 Heal=Vida
10 Level=Nível
11 Radiation=Radiação
0 # textdomain: 3d_armor_ui
1
2
3 ### init.lua ###
4
5 3d Armor=
6 Armor=
7 Armor not initialized!=
8 Fire=
9 Heal=
10 Level=
11 Radiation=
11 depends = 3d_armor
22 optional_depends = unified_inventory
33 description = Adds 3d_armor page to the unified inventory.
4 min_minetest_version = 5.4.0
00 Modpack - 3d Armor [0.4.13]
11 ===========================
2 ![3d_armor screenshot](https://github.com/minetest-mods/3d_armor/blob/master/screenshot.png)
3
24
35 ![](https://github.com/minetest-mods/3d_armor/workflows/luacheck/badge.svg)
46 ![](https://github.com/minetest-mods/3d_armor/workflows/integration-test/badge.svg)
4850
4951 For mod installation instructions, please visit: http://wiki.minetest.com/wiki/Installing_Mods
5052
53 [API Reference](https://minetest-mods.github.io/3d_armor/reference/)
54
5155 [mod] Visible Wielded Items [wieldview]
5256 ---------------------------------------
5357
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds admin armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Admin Helmet
10 --
11 -- @helmet 3d_armor:helmet_admin
12 -- @img 3d_armor_inv_helmet_admin.png
13 -- @grp armor_head 1
14 -- @grp armor_heal 100
15 -- @grp armor_use 0
16 -- @grp armor_water 1
17 -- @grp not_in_creative_inventory 1
18 -- @armorgrp fleshy 100
19 armor:register_armor(":3d_armor:helmet_admin", {
20 description = S("Admin Helmet"),
21 inventory_image = "3d_armor_inv_helmet_admin.png",
22 armor_groups = {fleshy=100},
23 groups = {armor_head=1, armor_heal=100, armor_use=0, armor_water=1,
24 not_in_creative_inventory=1},
25 on_drop = function(itemstack, dropper, pos)
26 return
27 end,
28 })
29
30 --- Admin Chestplate
31 --
32 -- @chestplate 3d_armor:chestplate_admin
33 -- @img 3d_armor_inv_chestplate_admin.png
34 -- @grp armor_torso 1
35 -- @grp armor_heal 100
36 -- @grp armor_use 0
37 -- @grp not_in_creative_inventory 1
38 -- @armorgrp fleshy 100
39 armor:register_armor(":3d_armor:chestplate_admin", {
40 description = S("Admin Chestplate"),
41 inventory_image = "3d_armor_inv_chestplate_admin.png",
42 armor_groups = {fleshy=100},
43 groups = {armor_torso=1, armor_heal=100, armor_use=0,
44 not_in_creative_inventory=1},
45 on_drop = function(itemstack, dropper, pos)
46 return
47 end,
48 })
49
50 --- Admin Leggings
51 --
52 -- @leggings 3d_armor:leggings_admin
53 -- @img 3d_armor_inv_leggings_admin.png
54 -- @grp armor_legs 1
55 -- @grp armor_heal 100
56 -- @grp armor_use 0
57 -- @grp not_in_creative_inventory 1
58 -- @armorgrp fleshy 100
59 armor:register_armor(":3d_armor:leggings_admin", {
60 description = S("Admin Leggings"),
61 inventory_image = "3d_armor_inv_leggings_admin.png",
62 armor_groups = {fleshy=100},
63 groups = {armor_legs=1, armor_heal=100, armor_use=0,
64 not_in_creative_inventory=1},
65 on_drop = function(itemstack, dropper, pos)
66 return
67 end,
68 })
69
70 --- Admin Boots
71 --
72 -- @boots 3d_armor:boots_admin
73 -- @img 3d_armor_inv_boots_admin.png
74 -- @grp armor_feet 1
75 -- @grp armor_heal 100
76 -- @grp armor_use 0
77 -- @grp not_in_creative_inventory 1
78 -- @armorgrp fleshy 100
79 armor:register_armor(":3d_armor:boots_admin", {
80 description = S("Admin Boots"),
81 inventory_image = "3d_armor_inv_boots_admin.png",
82 armor_groups = {fleshy=100},
83 groups = {armor_feet=1, armor_heal=100, armor_use=0,
84 not_in_creative_inventory=1},
85 on_drop = function(itemstack, dropper, pos)
86 return
87 end,
88 })
89
90 minetest.register_alias("adminboots", "3d_armor:boots_admin")
91 minetest.register_alias("adminhelmet", "3d_armor:helmet_admin")
92 minetest.register_alias("adminchestplate", "3d_armor:chestplate_admin")
93 minetest.register_alias("adminleggings", "3d_armor:leggings_admin")
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=Adminstiefel
6 Admin Chestplate=Adminbrustplatte
7 Admin Helmet=Adminhelm
8 Admin Leggings=Adminhose
0 # textdomain: armor_admin
1
2 Admin Helmet=Administra Kasko
3 Admin Chestplate=Administra Brustkiraso
4 Admin Leggings=Administra Pantalono
5 Admin Boots=Administra Botoj
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=Botas de admin
6 Admin Chestplate=Peto de admin
7 Admin Helmet=Casco de admin
8 Admin Leggings=Grebas de admin
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=Bottes d'admin
6 Admin Chestplate=Cuirasse d'admin
7 Admin Helmet=Casque d'admin
8 Admin Leggings=Jambières d'admin
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=Stivali dell'amministratrice/tore
6 Admin Chestplate=Corazza dell'amministratrice/tore
7 Admin Helmet=Elmo dell'amministratrice/tore
8 Admin Leggings=Gambali dell'amministratrice/tore
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=But Pentadbir
6 Admin Chestplate=Perisai Dada Pentadbir
7 Admin Helmet=Helmet Pentadbir
8 Admin Leggings=Perisai Kaki Pentadbir
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Steel Boots=Botas de Aço
6 Steel Chestplate=Peitoral de Aço
7 Steel Helmet=Capacete de Aço
8 Steel Leggings=Calças de Aço
9 Wood Boots=Botas de Madeira
10 Wood Chestplate=Peitoral de Madeira
11 Wood Helmet=Capacete de Madeira
12 Wood Leggings=Calças de Madeira
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=Botas de Administrador
6 Admin Chestplate=Peitoral de Administrador
7 Admin Helmet=Capacete de Administrador
8 Admin Leggings=Calças de Administrador
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=ботинки админа
6 Admin Chestplate=бронежилет админа
7 Admin Helmet=шлем админа
8 Admin Leggings=гамаши админа
0 # textdomain: armor_admin
1
2
3 ### init.lua ###
4
5 Admin Boots=
6 Admin Chestplate=
7 Admin Helmet=
8 Admin Leggings=
0 name = armor_admin
1 depends = 3d_armor
2 description = Adds admin armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable bronze armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Bronze
10 --
11 -- Requires setting `armor_material_bronze`.
12 --
13 -- @section bronze
14
15 if armor.materials.bronze then
16 --- Bronze Helmet
17 --
18 -- @helmet 3d_armor:helmet_bronze
19 -- @img 3d_armor_inv_helmet_bronze.png
20 -- @grp armor_head 1
21 -- @grp armor_heal 6
22 -- @grp armor_use 400
23 -- @grp physics_speed -0.01
24 -- @grp physics_gravity 0.01
25 -- @armorgrp fleshy 10
26 -- @damagegrp cracky 3
27 -- @damagegrp snappy 2
28 -- @damagegrp choppy 2
29 -- @damagegrp crumbly 1
30 -- @damagegrp level 2
31 armor:register_armor(":3d_armor:helmet_bronze", {
32 description = S("Bronze Helmet"),
33 inventory_image = "3d_armor_inv_helmet_bronze.png",
34 groups = {armor_head=1, armor_heal=6, armor_use=400,
35 physics_speed=-0.01, physics_gravity=0.01},
36 armor_groups = {fleshy=10},
37 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
38 })
39 --- Bronze Chestplate
40 --
41 -- @chestplate 3d_armor:chestplate_bronze
42 -- @img 3d_armor_inv_chestplate_bronze.png
43 -- @grp armor_torso 1
44 -- @grp armor_heal 6
45 -- @grp armor_use 400
46 -- @grp physics_speed -0.04
47 -- @grp physics_gravity 0.04
48 -- @armorgrp fleshy 15
49 -- @damagegrp cracky 3
50 -- @damagegrp snappy 2
51 -- @damagegrp choppy 2
52 -- @damagegrp crumbly 1
53 -- @damagegrp level 2
54 armor:register_armor(":3d_armor:chestplate_bronze", {
55 description = S("Bronze Chestplate"),
56 inventory_image = "3d_armor_inv_chestplate_bronze.png",
57 groups = {armor_torso=1, armor_heal=6, armor_use=400,
58 physics_speed=-0.04, physics_gravity=0.04},
59 armor_groups = {fleshy=15},
60 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
61 })
62 --- Bronze Leggings
63 --
64 -- @leggings 3d_armor:leggings_bronze
65 -- @img 3d_armor_inv_leggings_bronze.png
66 -- @grp armor_legs 1
67 -- @grp armor_heal 6
68 -- @grp armor_use 400
69 -- @grp physics_speed -0.03
70 -- @grp physics_gravity 0.03
71 -- @armorgrp fleshy 15
72 -- @damagegrp cracky 3
73 -- @damagegrp snappy 2
74 -- @damagegrp choppy 2
75 -- @damagegrp crumbly 1
76 -- @damagegrp level 2
77 armor:register_armor(":3d_armor:leggings_bronze", {
78 description = S("Bronze Leggings"),
79 inventory_image = "3d_armor_inv_leggings_bronze.png",
80 groups = {armor_legs=1, armor_heal=6, armor_use=400,
81 physics_speed=-0.03, physics_gravity=0.03},
82 armor_groups = {fleshy=15},
83 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
84 })
85 --- Bronze Boots
86 --
87 -- @boots 3d_armor:boots_bronze
88 -- @img 3d_armor_inv_boots_bronze.png
89 -- @grp armor_feet 1
90 -- @grp armor_heal 6
91 -- @grp armor_use 400
92 -- @grp physics_speed -0.01
93 -- @grp physics_gravity 0.01
94 -- @armorgrp fleshy 10
95 -- @damagegrp cracky 3
96 -- @damagegrp snappy 2
97 -- @damagegrp choppy 2
98 -- @damagegrp crumbly 1
99 -- @damagegrp level 2
100 armor:register_armor(":3d_armor:boots_bronze", {
101 description = S("Bronze Boots"),
102 inventory_image = "3d_armor_inv_boots_bronze.png",
103 groups = {armor_feet=1, armor_heal=6, armor_use=400,
104 physics_speed=-0.01, physics_gravity=0.01},
105 armor_groups = {fleshy=10},
106 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
107 })
108
109 --- Crafting
110 --
111 -- @section craft
112
113 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
114 --
115 -- @craft armor
116 -- @usage
117 -- Key:
118 -- - m: material
119 -- - wood: group:wood
120 -- - cactus: default:cactus
121 -- - steel: default:steel_ingot
122 -- - bronze: default:bronze_ingot
123 -- - diamond: default:diamond
124 -- - gold: default:gold_ingot
125 -- - mithril: moreores:mithril_ingot
126 -- - crystal: ethereal:crystal_ingot
127 -- - nether: nether:nether_ingot
128 --
129 -- helmet: chestplate: leggings:
130 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
131 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
132 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
133 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
134 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
135 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
136 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
137 --
138 -- boots: shield:
139 -- ┌───┬───┬───┐ ┌───┬───┬───┐
140 -- │ │ │ │ │ m │ m │ m │
141 -- ├───┼───┼───┤ ├───┼───┼───┤
142 -- │ m │ │ m │ │ m │ m │ m │
143 -- ├───┼───┼───┤ ├───┼───┼───┤
144 -- │ m │ │ m │ │ │ m │ │
145 -- └───┴───┴───┘ └───┴───┴───┘
146
147 local s = "bronze"
148 local m = armor.materials.bronze
149 minetest.register_craft({
150 output = "3d_armor:helmet_"..s,
151 recipe = {
152 {m, m, m},
153 {m, "", m},
154 {"", "", ""},
155 },
156 })
157 minetest.register_craft({
158 output = "3d_armor:chestplate_"..s,
159 recipe = {
160 {m, "", m},
161 {m, m, m},
162 {m, m, m},
163 },
164 })
165 minetest.register_craft({
166 output = "3d_armor:leggings_"..s,
167 recipe = {
168 {m, m, m},
169 {m, "", m},
170 {m, "", m},
171 },
172 })
173 minetest.register_craft({
174 output = "3d_armor:boots_"..s,
175 recipe = {
176 {m, "", m},
177 {m, "", m},
178 },
179 })
180 end
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=Bronzestiefel
6 Bronze Chestplate=Bronzebrustplatte
7 Bronze Helmet=Bronzehelm
8 Bronze Leggings=Bronzehose
0 # textdomain: armor_bronze
1
2 Bronze Helmet=Bronza Kasko
3 Bronze Chestplate=Bronza Brustkiraso
4 Bronze Leggings=Bronza Pantalono
5 Bronze Boots=Bronza Botoj
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=Botas de bronce
6 Bronze Chestplate=Peto de bronce
7 Bronze Helmet=Casco de bronce
8 Bronze Leggings=Grebas de bronce
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=Bottes en bronze
6 Bronze Chestplate=Cuirasse en bronze
7 Bronze Helmet=Casque en bronze
8 Bronze Leggings=Jambières en bronze
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=Stivali di bronzo
6 Bronze Chestplate=Corazza di bronzo
7 Bronze Helmet=Elmo di bronzo
8 Bronze Leggings=Gambali di bronzo
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=But Gangsa
6 Bronze Chestplate=Perisai Dada Gangsa
7 Bronze Helmet=Helmet Gangsa
8 Bronze Leggings=Perisai Kaki Gangsa
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=Botas de Bronze
6 Bronze Chestplate=Peitoral de Bronze
7 Bronze Helmet=Capacete de Bronze
8 Bronze Leggings=Calças de Bronze
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=Botas de Bronze
6 Bronze Chestplate=Peitoral de Bronze
7 Bronze Helmet=Capacete de Bronze
8 Bronze Leggings=Calças de Bronze
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=бронзовые ботинки
6 Bronze Chestplate=бронзовый бронежилет
7 Bronze Helmet=бронзовый шлем
8 Bronze Leggings=бронзовые гамаши
0 # textdomain: armor_bronze
1
2
3 ### init.lua ###
4
5 Bronze Boots=
6 Bronze Chestplate=
7 Bronze Helmet=
8 Bronze Leggings=
0 name = armor_bronze
1 depends = 3d_armor
2 description = Adds craftable bronze armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable cactus armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Cactus
10 --
11 -- Requires setting `armor_material_cactus`.
12 --
13 -- @section cactus
14
15 if armor.materials.cactus then
16 --- Cactus Helmet
17 --
18 -- @helmet 3d_armor:helmet_cactus
19 -- @img 3d_armor_inv_helmet_cactus.png
20 -- @grp armor_head 1
21 -- @grp armor_heal 0
22 -- @grp armor_use 1000
23 -- @armorgrp fleshy 5
24 -- @damagegrp cracky 3
25 -- @damagegrp snappy 3
26 -- @damagegrp choppy 2
27 -- @damagegrp crumbly 2
28 -- @damagegrp level 1
29 armor:register_armor(":3d_armor:helmet_cactus", {
30 description = S("Cactus Helmet"),
31 inventory_image = "3d_armor_inv_helmet_cactus.png",
32 groups = {armor_head=1, armor_heal=0, armor_use=1000},
33 armor_groups = {fleshy=5},
34 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
35 })
36 --- Cactus Chestplate
37 --
38 -- @chestplate 3d_armor:chestplate_cactus
39 -- @img 3d_armor_inv_chestplate_cactus.png
40 -- @grp armor_torso 1
41 -- @grp armor_heal 0
42 -- @grp armor_use 1000
43 -- @armorgrp fleshy 10
44 -- @damagegrp cracky 3
45 -- @damagegrp snappy 3
46 -- @damagegrp choppy 2
47 -- @damagegrp crumbly 2
48 -- @damagegrp level 1
49 armor:register_armor(":3d_armor:chestplate_cactus", {
50 description = S("Cactus Chestplate"),
51 inventory_image = "3d_armor_inv_chestplate_cactus.png",
52 groups = {armor_torso=1, armor_heal=0, armor_use=1000},
53 armor_groups = {fleshy=10},
54 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
55 })
56 --- Cactus Leggings
57 --
58 -- @leggings 3d_armor:leggings_cactus
59 -- @img 3d_armor_inv_leggings_cactus.png
60 -- @grp armor_legs 1
61 -- @grp armor_heal 0
62 -- @grp armor_use 1000
63 -- @armorgrp fleshy 10
64 -- @damagegrp cracky 3
65 -- @damagegrp snappy 3
66 -- @damagegrp choppy 2
67 -- @damagegrp crumbly 2
68 -- @damagegrp level 1
69 armor:register_armor(":3d_armor:leggings_cactus", {
70 description = S("Cactus Leggings"),
71 inventory_image = "3d_armor_inv_leggings_cactus.png",
72 groups = {armor_legs=1, armor_heal=0, armor_use=1000},
73 armor_groups = {fleshy=10},
74 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
75 })
76 --- Cactus Boots
77 --
78 -- @boots 3d_armor:boots_cactus
79 -- @img 3d_armor_inv_boots_cactus.png
80 -- @grp armor_feet 1
81 -- @grp armor_heal 0
82 -- @grp armor_use 1000
83 -- @armorgrp fleshy 5
84 -- @damagegrp cracky 3
85 -- @damagegrp snappy 3
86 -- @damagegrp choppy 2
87 -- @damagegrp crumbly 2
88 -- @damagegrp level 1
89 armor:register_armor(":3d_armor:boots_cactus", {
90 description = S("Cactus Boots"),
91 inventory_image = "3d_armor_inv_boots_cactus.png",
92 groups = {armor_feet=1, armor_heal=0, armor_use=1000},
93 armor_groups = {fleshy=5},
94 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
95 })
96 local cactus_armor_fuel = {
97 helmet = 14,
98 chestplate = 16,
99 leggings = 15,
100 boots = 13
101 }
102 for armor, burn in pairs(cactus_armor_fuel) do
103 minetest.register_craft({
104 type = "fuel",
105 recipe = "3d_armor:" .. armor .. "_cactus",
106 burntime = burn,
107 })
108 end
109
110
111 --- Crafting
112 --
113 -- @section craft
114
115 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
116 --
117 -- @craft armor
118 -- @usage
119 -- Key:
120 -- - m: material
121 -- - wood: group:wood
122 -- - cactus: default:cactus
123 -- - steel: default:steel_ingot
124 -- - bronze: default:bronze_ingot
125 -- - diamond: default:diamond
126 -- - gold: default:gold_ingot
127 -- - mithril: moreores:mithril_ingot
128 -- - crystal: ethereal:crystal_ingot
129 -- - nether: nether:nether_ingot
130 --
131 -- helmet: chestplate: leggings:
132 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
133 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
134 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
135 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
136 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
137 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
138 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
139 --
140 -- boots: shield:
141 -- ┌───┬───┬───┐ ┌───┬───┬───┐
142 -- │ │ │ │ │ m │ m │ m │
143 -- ├───┼───┼───┤ ├───┼───┼───┤
144 -- │ m │ │ m │ │ m │ m │ m │
145 -- ├───┼───┼───┤ ├───┼───┼───┤
146 -- │ m │ │ m │ │ │ m │ │
147 -- └───┴───┴───┘ └───┴───┴───┘
148
149 local s = "cactus"
150 local m = armor.materials.cactus
151 minetest.register_craft({
152 output = "3d_armor:helmet_"..s,
153 recipe = {
154 {m, m, m},
155 {m, "", m},
156 {"", "", ""},
157 },
158 })
159 minetest.register_craft({
160 output = "3d_armor:chestplate_"..s,
161 recipe = {
162 {m, "", m},
163 {m, m, m},
164 {m, m, m},
165 },
166 })
167 minetest.register_craft({
168 output = "3d_armor:leggings_"..s,
169 recipe = {
170 {m, m, m},
171 {m, "", m},
172 {m, "", m},
173 },
174 })
175 minetest.register_craft({
176 output = "3d_armor:boots_"..s,
177 recipe = {
178 {m, "", m},
179 {m, "", m},
180 },
181 })
182 end
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=Kaktusstiefel
6 Cactus Chestplate=Kaktusbrustplatte
7 Cactus Helmet=Kaktushelm
8 Cactus Leggings=Kaktushose
0 # textdomain: armor_cactus
1
2 Cactus Helmet=Kakta Kasko
3 Cactus Chestplate=Kakta Brustkiraso
4 Cactus Leggings=Kakta Pantalono
5 Cactus Boots=Kakta Botoj
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=Botas de cactus
6 Cactus Chestplate=Peto de cactus
7 Cactus Helmet=Casco de cactus
8 Cactus Leggings=Grebas de cactus
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=Bottes en cactus
6 Cactus Chestplate=Cuirasse en cactus
7 Cactus Helmet=Casque en cactus
8 Cactus Leggings=Jambières en cactus
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=Stivali di cactus
6 Cactus Chestplate=Corazza di cactus
7 Cactus Helmet=Elmo di cactus
8 Cactus Leggings=Gambali di cactus
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=But Kaktus
6 Cactus Chestplate=Perisai Dada Kaktus
7 Cactus Helmet=Helmet Kaktus
8 Cactus Leggings=Perisai Kaki Kaktus
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=Botas de Madeira
6 Cactus Chestplate=Peitoral de Cacto
7 Cactus Helmet=Capacete de Cacto
8 Cactus Leggings=Calças de Cacto
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=Botas de Cacto
6 Cactus Chestplate=Peitoral de Cacto
7 Cactus Helmet=Capacete de Cacto
8 Cactus Leggings=Calças de Cacto
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=кактусовые ботинки
6 Cactus Chestplate=кактусовый бронежилет
7 Cactus Helmet=кактусовый шлем
8 Cactus Leggings=кактусовые гамаши
0 # textdomain: armor_cactus
1
2
3 ### init.lua ###
4
5 Cactus Boots=
6 Cactus Chestplate=
7 Cactus Helmet=
8 Cactus Leggings=
0 name = armor_cactus
1 depends = 3d_armor
2 description = Adds craftable cactus armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable crystal armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9
10 --- Crystal
11 --
12 -- Requires `armor_material_crystal`.
13 --
14 -- @section crystal
15
16 if armor.materials.crystal then
17 --- Crystal Helmet
18 --
19 -- @helmet 3d_armor:helmet_crystal
20 -- @img 3d_armor_inv_helmet_crystal.png
21 -- @grp armor_head 1
22 -- @grp armor_heal 12
23 -- @grp armor_use 100
24 -- @grp armor_fire 1
25 -- @armorgrp fleshy 15
26 -- @damagegrp cracky 2
27 -- @damagegrp snappy 1
28 -- @damagegrp level 3
29 armor:register_armor(":3d_armor:helmet_crystal", {
30 description = S("Crystal Helmet"),
31 inventory_image = "3d_armor_inv_helmet_crystal.png",
32 groups = {armor_head=1, armor_heal=12, armor_use=100, armor_fire=1},
33 armor_groups = {fleshy=15},
34 damage_groups = {cracky=2, snappy=1, level=3},
35 })
36 --- Crystal Chestplate
37 --
38 -- @chestplate 3d_armor:chestplate_crystal
39 -- @img 3d_armor_inv_chestplate_crystal.png
40 -- @grp armor_torso 1
41 -- @grp armor_heal 12
42 -- @grp armor_use 100
43 -- @grp armor_fire 1
44 -- @armorgrp fleshy 20
45 -- @damagegrp cracky 2
46 -- @damagegrp snappy 1
47 -- @damagegrp level 3
48 armor:register_armor(":3d_armor:chestplate_crystal", {
49 description = S("Crystal Chestplate"),
50 inventory_image = "3d_armor_inv_chestplate_crystal.png",
51 groups = {armor_torso=1, armor_heal=12, armor_use=100, armor_fire=1},
52 armor_groups = {fleshy=20},
53 damage_groups = {cracky=2, snappy=1, level=3},
54 })
55 --- Crystal Leggings
56 --
57 -- @leggings 3d_armor:leggings_crystal
58 -- @img 3d_armor_inv_leggings_crystal.png
59 -- @grp armor_legs 1
60 -- @grp armor_heal 12
61 -- @grp armor_use 100
62 -- @grp armor_fire 1
63 -- @armorgrp fleshy 20
64 -- @damagegrp cracky 2
65 -- @damagegrp snappy 1
66 -- @damagegrp level 3
67 armor:register_armor(":3d_armor:leggings_crystal", {
68 description = S("Crystal Leggings"),
69 inventory_image = "3d_armor_inv_leggings_crystal.png",
70 groups = {armor_legs=1, armor_heal=12, armor_use=100, armor_fire=1},
71 armor_groups = {fleshy=20},
72 damage_groups = {cracky=2, snappy=1, level=3},
73 })
74 --- Crystal Boots
75 --
76 -- @boots 3d_armor:boots_crystal
77 -- @img 3d_armor_inv_boots_crystal.png
78 -- @grp armor_feet 1
79 -- @grp armor_heal 12
80 -- @grp armor_use 100
81 -- @grp physics_speed 1
82 -- @grp physics_jump 0.5
83 -- @grp armor_fire 1
84 -- @armorgrp fleshy 15
85 -- @damagegrp cracky 2
86 -- @damagegrp snappy 1
87 -- @damagegrp level 3
88 armor:register_armor(":3d_armor:boots_crystal", {
89 description = S("Crystal Boots"),
90 inventory_image = "3d_armor_inv_boots_crystal.png",
91 groups = {armor_feet=1, armor_heal=12, armor_use=100, physics_speed=1,
92 physics_jump=0.5, armor_fire=1},
93 armor_groups = {fleshy=15},
94 damage_groups = {cracky=2, snappy=1, level=3},
95 })
96
97
98 --- Crafting
99 --
100 -- @section craft
101
102 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
103 --
104 -- @craft armor
105 -- @usage
106 -- Key:
107 -- - m: material
108 -- - wood: group:wood
109 -- - cactus: default:cactus
110 -- - steel: default:steel_ingot
111 -- - bronze: default:bronze_ingot
112 -- - diamond: default:diamond
113 -- - gold: default:gold_ingot
114 -- - mithril: moreores:mithril_ingot
115 -- - crystal: ethereal:crystal_ingot
116 -- - nether: nether:nether_ingot
117 --
118 -- helmet: chestplate: leggings:
119 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
120 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
121 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
122 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
123 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
124 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
125 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
126 --
127 -- boots: shield:
128 -- ┌───┬───┬───┐ ┌───┬───┬───┐
129 -- │ │ │ │ │ m │ m │ m │
130 -- ├───┼───┼───┤ ├───┼───┼───┤
131 -- │ m │ │ m │ │ m │ m │ m │
132 -- ├───┼───┼───┤ ├───┼───┼───┤
133 -- │ m │ │ m │ │ │ m │ │
134 -- └───┴───┴───┘ └───┴───┴───┘
135
136 local s = "crystal"
137 local m = armor.materials.crystal
138 minetest.register_craft({
139 output = "3d_armor:helmet_"..s,
140 recipe = {
141 {m, m, m},
142 {m, "", m},
143 {"", "", ""},
144 },
145 })
146 minetest.register_craft({
147 output = "3d_armor:chestplate_"..s,
148 recipe = {
149 {m, "", m},
150 {m, m, m},
151 {m, m, m},
152 },
153 })
154 minetest.register_craft({
155 output = "3d_armor:leggings_"..s,
156 recipe = {
157 {m, m, m},
158 {m, "", m},
159 {m, "", m},
160 },
161 })
162 minetest.register_craft({
163 output = "3d_armor:boots_"..s,
164 recipe = {
165 {m, "", m},
166 {m, "", m},
167 },
168 })
169 end
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=Kristallstiefel
6 Crystal Chestplate=Kristallbrustplatte
7 Crystal Helmet=Kristallhelm
8 Crystal Leggings=Kristallhose
0 # textdomain: armor_crystal
1
2 Crystal Helmet=Kristala Kasko
3 Crystal Chestplate=Kristala Brustkiraso
4 Crystal Leggings=Kristala Pantalono
5 Crystal Boots=Kristala Botoj
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=Botas de cristal
6 Crystal Chestplate=Peto de cristal
7 Crystal Helmet=Casco de cristal
8 Crystal Leggings=Grebas de cristal
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=Bottes en cristal
6 Crystal Chestplate=Cuirasse en cristal
7 Crystal Helmet=Casque en cristal
8 Crystal Leggings=Jambières en cristal
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=Stivali di cristallo
6 Crystal Chestplate=Corazza di cristallo
7 Crystal Helmet=Elmo di cristallo
8 Crystal Leggings=Gambali di cristallo
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=But Kristal
6 Crystal Chestplate=Perisai Dada Kristal
7 Crystal Helmet=Helmet Kristal
8 Crystal Leggings=Perisai Kaki Kristal
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=Botas de Cristal
6 Crystal Chestplate=Peitoral de Cristal
7 Crystal Helmet=Capacete de Cristal
8 Crystal Leggings=Calças de Cristal
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=Botas de Cristal
6 Crystal Chestplate=Peitoral de Cristal
7 Crystal Helmet=Capacete de Cristal
8 Crystal Leggings=Calças de Cristal
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=кристалловые ботинки
6 Crystal Chestplate=кристалловый бронежилет
7 Crystal Helmet=кристалловый шлем
8 Crystal Leggings=кристалловые гамаши
0 # textdomain: armor_crystal
1
2
3 ### init.lua ###
4
5 Crystal Boots=
6 Crystal Chestplate=
7 Crystal Helmet=
8 Crystal Leggings=
0 name = armor_crystal
1 depends = 3d_armor
2 optional_depends = etherial
3 description = Adds craftable crystal armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable diamond armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Diamond
10 --
11 -- Requires setting `armor_material_diamond`.
12 --
13 -- @section diamond
14
15 if armor.materials.diamond then
16 --- Diamond Helmet
17 --
18 -- @helmet 3d_armor:helmet_diamond
19 -- @img 3d_armor_inv_helmet_diamond.png
20 -- @grp armor_head 1
21 -- @grp armor_heal 12
22 -- @grp armor_use 200
23 -- @armorgrp fleshy 15
24 -- @damagegrp cracky 2
25 -- @damagegrp snappy 1
26 -- @damagegrp choppy 1
27 -- @damagegrp level 3
28 armor:register_armor(":3d_armor:helmet_diamond", {
29 description = S("Diamond Helmet"),
30 inventory_image = "3d_armor_inv_helmet_diamond.png",
31 groups = {armor_head=1, armor_heal=12, armor_use=200},
32 armor_groups = {fleshy=15},
33 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
34 })
35 --- Diamond Chestplate
36 --
37 -- @chestplate 3d_armor:chestplate_diamond
38 -- @img 3d_armor_inv_chestplate_diamond.png
39 -- @grp armor_torso 1
40 -- @grp armor_heal 12
41 -- @grp armor_use 200
42 -- @armorgrp fleshy 20
43 -- @damagegrp cracky 2
44 -- @damagegrp snappy 1
45 -- @damagegrp choppy 1
46 -- @damagegrp level 3
47 armor:register_armor(":3d_armor:chestplate_diamond", {
48 description = S("Diamond Chestplate"),
49 inventory_image = "3d_armor_inv_chestplate_diamond.png",
50 groups = {armor_torso=1, armor_heal=12, armor_use=200},
51 armor_groups = {fleshy=20},
52 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
53 })
54 --- Diamond Leggings
55 --
56 -- @leggings 3d_armor:leggings_diamond
57 -- @img 3d_armor_inv_leggings_diamond.png
58 -- @grp armor_legs 1
59 -- @grp armor_heal 12
60 -- @grp armor_use 200
61 -- @armorgrp fleshy 20
62 -- @damagegrp cracky 2
63 -- @damagegrp snappy 1
64 -- @damagegrp choppy 1
65 -- @damagegrp level 3
66 armor:register_armor(":3d_armor:leggings_diamond", {
67 description = S("Diamond Leggings"),
68 inventory_image = "3d_armor_inv_leggings_diamond.png",
69 groups = {armor_legs=1, armor_heal=12, armor_use=200},
70 armor_groups = {fleshy=20},
71 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
72 })
73 --- Diamond Boots
74 --
75 -- @boots 3d_armor:boots_diamond
76 -- @img 3d_armor_inv_boots_diamond.png
77 -- @grp armor_feet 1
78 -- @grp armor_heal 12
79 -- @grp armor_use 200
80 -- @armorgrp fleshy 15
81 -- @damagegrp cracky 2
82 -- @damagegrp snappy 1
83 -- @damagegrp choppy 1
84 -- @damagegrp level 3
85 armor:register_armor(":3d_armor:boots_diamond", {
86 description = S("Diamond Boots"),
87 inventory_image = "3d_armor_inv_boots_diamond.png",
88 groups = {armor_feet=1, armor_heal=12, armor_use=200},
89 armor_groups = {fleshy=15},
90 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
91 })
92
93
94 --- Crafting
95 --
96 -- @section craft
97
98 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
99 --
100 -- @craft armor
101 -- @usage
102 -- Key:
103 -- - m: material
104 -- - wood: group:wood
105 -- - cactus: default:cactus
106 -- - steel: default:steel_ingot
107 -- - bronze: default:bronze_ingot
108 -- - diamond: default:diamond
109 -- - gold: default:gold_ingot
110 -- - mithril: moreores:mithril_ingot
111 -- - crystal: ethereal:crystal_ingot
112 -- - nether: nether:nether_ingot
113 --
114 -- helmet: chestplate: leggings:
115 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
116 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
117 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
118 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
119 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
120 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
121 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
122 --
123 -- boots: shield:
124 -- ┌───┬───┬───┐ ┌───┬───┬───┐
125 -- │ │ │ │ │ m │ m │ m │
126 -- ├───┼───┼───┤ ├───┼───┼───┤
127 -- │ m │ │ m │ │ m │ m │ m │
128 -- ├───┼───┼───┤ ├───┼───┼───┤
129 -- │ m │ │ m │ │ │ m │ │
130 -- └───┴───┴───┘ └───┴───┴───┘
131
132 local s = "diamond"
133 local m = armor.materials.diamond
134 minetest.register_craft({
135 output = "3d_armor:helmet_"..s,
136 recipe = {
137 {m, m, m},
138 {m, "", m},
139 {"", "", ""},
140 },
141 })
142 minetest.register_craft({
143 output = "3d_armor:chestplate_"..s,
144 recipe = {
145 {m, "", m},
146 {m, m, m},
147 {m, m, m},
148 },
149 })
150 minetest.register_craft({
151 output = "3d_armor:leggings_"..s,
152 recipe = {
153 {m, m, m},
154 {m, "", m},
155 {m, "", m},
156 },
157 })
158 minetest.register_craft({
159 output = "3d_armor:boots_"..s,
160 recipe = {
161 {m, "", m},
162 {m, "", m},
163 },
164 })
165 end
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=Diamantstiefel
6 Diamond Chestplate=Diamantbrustplatte
7 Diamond Helmet=Diamanthelm
8 Diamond Leggings=Diamanthose
0 # textdomain: armor_diamond
1
2 Diamond Helmet=Diamanta Kasko
3 Diamond Chestplate=Diamanta Brustkiraso
4 Diamond Leggings=Diamanta Pantalono
5 Diamond Boots=Diamanta Botoj
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=Botas de diamante
6 Diamond Chestplate=Peto de diamante
7 Diamond Helmet=Casco de diamante
8 Diamond Leggings=Grebas de diamante
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=Bottes en diamant
6 Diamond Chestplate=Cuirasse en diamant
7 Diamond Helmet=Casque en diamant
8 Diamond Leggings=Jambières en diamant
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=Stivali di diamante
6 Diamond Chestplate=Corazza di diamante
7 Diamond Helmet=Elmo di diamante
8 Diamond Leggings=Gambali di diamante
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=But Intan
6 Diamond Chestplate=Perisai Dada Intan
7 Diamond Helmet=Helmet Intan
8 Diamond Leggings=Perisai Kaki Intan
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=Botas de Diamante
6 Diamond Chestplate=Peitoral de Diamante
7 Diamond Helmet=Capacete de Diamante
8 Diamond Leggings=Calças de Diamante
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=Botas de Diamante
6 Diamond Chestplate=Peitoral de Diamante
7 Diamond Helmet=Capacete de Diamante
8 Diamond Leggings=Calças de Diamante
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=алмазные ботинки
6 Diamond Chestplate=алмазный бронежилет
7 Diamond Helmet=алмазный шлем
8 Diamond Leggings=алмазные гамаши
0 # textdomain: armor_diamond
1
2
3 ### init.lua ###
4
5 Diamond Boots=
6 Diamond Chestplate=
7 Diamond Helmet=
8 Diamond Leggings=
0 name = armor_diamond
1 depends = 3d_armor
2 description = Adds craftable diamond armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable gold armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9
10 --- Gold
11 --
12 -- Requires `armor_material_gold`.
13 --
14 -- @section gold
15
16 if armor.materials.gold then
17 --- Gold Helmet
18 --
19 -- @helmet 3d_armor:helmet_gold
20 -- @img 3d_armor_inv_helmet_gold.png
21 -- @grp armor_head 1
22 -- @grp armor_heal 6
23 -- @grp armor_use 300
24 -- @grp physics_speed -0.02
25 -- @grp physics_gravity 0.02
26 -- @armorgrp fleshy 10
27 -- @damagegrp cracky 1
28 -- @damagegrp snappy 2
29 -- @damagegrp choppy 2
30 -- @damagegrp crumbly 3
31 -- @damagegrp level 2
32 armor:register_armor(":3d_armor:helmet_gold", {
33 description = S("Gold Helmet"),
34 inventory_image = "3d_armor_inv_helmet_gold.png",
35 groups = {armor_head=1, armor_heal=6, armor_use=300,
36 physics_speed=-0.02, physics_gravity=0.02},
37 armor_groups = {fleshy=10},
38 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
39 })
40 --- Gold Chestplate
41 --
42 -- @chestplate 3d_armor:chestplate_gold
43 -- @img 3d_armor_inv_chestplate_gold.png
44 -- @grp armor_torso 1
45 -- @grp armor_heal 6
46 -- @grp armor_use 300
47 -- @grp physics_speed -0.05
48 -- @grp physics_gravity 0.05
49 -- @armorgrp fleshy 15
50 -- @damagegrp cracky 1
51 -- @damagegrp snappy 2
52 -- @damagegrp choppy 2
53 -- @damagegrp crumbly 3
54 -- @damagegrp level 2
55 armor:register_armor(":3d_armor:chestplate_gold", {
56 description = S("Gold Chestplate"),
57 inventory_image = "3d_armor_inv_chestplate_gold.png",
58 groups = {armor_torso=1, armor_heal=6, armor_use=300,
59 physics_speed=-0.05, physics_gravity=0.05},
60 armor_groups = {fleshy=15},
61 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
62 })
63 --- Gold Leggings
64 --
65 -- @leggings 3d_armor:leggings_gold
66 -- @img 3d_armor_inv_leggings_gold.png
67 -- @grp armor_legs 1
68 -- @grp armor_heal 6
69 -- @grp armor_use 300
70 -- @grp physics_speed -0.04
71 -- @grp physics_gravity 0.04
72 -- @armorgrp fleshy 15
73 -- @damagegrp cracky 1
74 -- @damagegrp snappy 2
75 -- @damagegrp choppy 2
76 -- @damagegrp crumbly 3
77 -- @damagegrp level 2
78 armor:register_armor(":3d_armor:leggings_gold", {
79 description = S("Gold Leggings"),
80 inventory_image = "3d_armor_inv_leggings_gold.png",
81 groups = {armor_legs=1, armor_heal=6, armor_use=300,
82 physics_speed=-0.04, physics_gravity=0.04},
83 armor_groups = {fleshy=15},
84 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
85 })
86 --- Gold Boots
87 --
88 -- @boots 3d_armor:boots_gold
89 -- @img 3d_armor_inv_boots_gold.png
90 -- @grp armor_feet 1
91 -- @grp armor_heal 6
92 -- @grp armor_use 300
93 -- @grp physics_speed -0.02
94 -- @grp physics_gravity 0.02
95 -- @armorgrp fleshy 10
96 -- @damagegrp cracky 1
97 -- @damagegrp snappy 2
98 -- @damagegrp choppy 2
99 -- @damagegrp crumbly 3
100 -- @damagegrp level 2
101 armor:register_armor(":3d_armor:boots_gold", {
102 description = S("Gold Boots"),
103 inventory_image = "3d_armor_inv_boots_gold.png",
104 groups = {armor_feet=1, armor_heal=6, armor_use=300,
105 physics_speed=-0.02, physics_gravity=0.02},
106 armor_groups = {fleshy=10},
107 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
108 })
109
110
111 --- Crafting
112 --
113 -- @section craft
114
115 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
116 --
117 -- @craft armor
118 -- @usage
119 -- Key:
120 -- - m: material
121 -- - wood: group:wood
122 -- - cactus: default:cactus
123 -- - steel: default:steel_ingot
124 -- - bronze: default:bronze_ingot
125 -- - diamond: default:diamond
126 -- - gold: default:gold_ingot
127 -- - mithril: moreores:mithril_ingot
128 -- - crystal: ethereal:crystal_ingot
129 -- - nether: nether:nether_ingot
130 --
131 -- helmet: chestplate: leggings:
132 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
133 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
134 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
135 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
136 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
137 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
138 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
139 --
140 -- boots: shield:
141 -- ┌───┬───┬───┐ ┌───┬───┬───┐
142 -- │ │ │ │ │ m │ m │ m │
143 -- ├───┼───┼───┤ ├───┼───┼───┤
144 -- │ m │ │ m │ │ m │ m │ m │
145 -- ├───┼───┼───┤ ├───┼───┼───┤
146 -- │ m │ │ m │ │ │ m │ │
147 -- └───┴───┴───┘ └───┴───┴───┘
148
149 local s = "gold"
150 local m = armor.materials.gold
151 minetest.register_craft({
152 output = "3d_armor:helmet_"..s,
153 recipe = {
154 {m, m, m},
155 {m, "", m},
156 {"", "", ""},
157 },
158 })
159 minetest.register_craft({
160 output = "3d_armor:chestplate_"..s,
161 recipe = {
162 {m, "", m},
163 {m, m, m},
164 {m, m, m},
165 },
166 })
167 minetest.register_craft({
168 output = "3d_armor:leggings_"..s,
169 recipe = {
170 {m, m, m},
171 {m, "", m},
172 {m, "", m},
173 },
174 })
175 minetest.register_craft({
176 output = "3d_armor:boots_"..s,
177 recipe = {
178 {m, "", m},
179 {m, "", m},
180 },
181 })
182 end
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=Goldstiefel
6 Gold Chestplate=Goldbrustplatte
7 Gold Helmet=Goldhelm
8 Gold Leggings=Goldhose
0 # textdomain: armor_gold
1
2 Gold Helmet=Ora Kasko
3 Gold Chestplate=Ora Brustkiraso
4 Gold Leggings=Ora Pantalono
5 Gold Boots=Ora Botoj
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=Botas de oro
6 Gold Chestplate=Peto de oro
7 Gold Helmet=Casco de oro
8 Gold Leggings=Grebas de oro
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=Bottes en or
6 Gold Chestplate=Cuirasse en or
7 Gold Helmet=Casque en or
8 Gold Leggings=Jambières en or
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=Stivali d'oro
6 Gold Chestplate=Corazza d'oro
7 Gold Helmet=Elmo d'oro
8 Gold Leggings=Gambali d'oro
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=But Emas
6 Gold Chestplate=Perisai Dada Emas
7 Gold Helmet=Helmet Emas
8 Gold Leggings=Perisai Kaki Emas
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=Botas de Ouro
6 Gold Chestplate=Peitoral de Ouro
7 Gold Helmet=Capacete de Ouro
8 Gold Leggings=Calças de Ouro
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=Botas de Ouro
6 Gold Chestplate=Peitoral de Ouro
7 Gold Helmet=Capacete de Ouro
8 Gold Leggings=Calças de Ouro
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=золотые ботинки
6 Gold Chestplate=золотой бронежилет
7 Gold Helmet=золотой шлем
8 Gold Leggings=золотые гамаши
0 # textdomain: armor_gold
1
2
3 ### init.lua ###
4
5 Gold Boots=
6 Gold Chestplate=
7 Gold Helmet=
8 Gold Leggings=
0 name = armor_gold
1 depends = 3d_armor
2 description = Adds craftable gold armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable mithril armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Mithril
10 --
11 -- Requires `armor_material_mithril`.
12 --
13 -- @section mithril
14
15 if armor.materials.mithril then
16 --- Mithril Helmet
17 --
18 -- @helmet 3d_armor:helmet_mithril
19 -- @img 3d_armor_inv_helmet_mithril.png
20 -- @grp armor_head 1
21 -- @grp armor_heal 12
22 -- @grp armor_use 100
23 -- @armorgrp fleshy 15
24 -- @damagegrp cracky 2
25 -- @damagegrp snappy 1
26 -- @damagegrp level 3
27 armor:register_armor(":3d_armor:helmet_mithril", {
28 description = S("Mithril Helmet"),
29 inventory_image = "3d_armor_inv_helmet_mithril.png",
30 groups = {armor_head=1, armor_heal=13, armor_use=66},
31 armor_groups = {fleshy=16},
32 damage_groups = {cracky=2, snappy=1, level=3},
33 })
34 --- Mithril Chestplate
35 --
36 -- @chestplate 3d_armor:chestplate_mithril
37 -- @img 3d_armor_inv_chestplate_mithril.png
38 -- @grp armor_torso 1
39 -- @grp armor_heal 12
40 -- @grp armor_use 100
41 -- @armorgrp fleshy 20
42 -- @damagegrp cracky 2
43 -- @damagegrp snappy 1
44 -- @damagegrp level 3
45 armor:register_armor(":3d_armor:chestplate_mithril", {
46 description = S("Mithril Chestplate"),
47 inventory_image = "3d_armor_inv_chestplate_mithril.png",
48 groups = {armor_torso=1, armor_heal=13, armor_use=66},
49 armor_groups = {fleshy=21},
50 damage_groups = {cracky=2, snappy=1, level=3},
51 })
52 --- Mithril Leggings
53 --
54 -- @leggings 3d_armor:leggings_mithril
55 -- @img 3d_armor_inv_leggings_mithril.png
56 -- @grp armor_legs 1
57 -- @grp armor_heal 12
58 -- @grp armor_use 100
59 -- @armorgrp fleshy 20
60 -- @damagegrp cracky 2
61 -- @damagegrp snappy 1
62 -- @damagegrp level 3
63 armor:register_armor(":3d_armor:leggings_mithril", {
64 description = S("Mithril Leggings"),
65 inventory_image = "3d_armor_inv_leggings_mithril.png",
66 groups = {armor_legs=1, armor_heal=13, armor_use=66},
67 armor_groups = {fleshy=21},
68 damage_groups = {cracky=2, snappy=1, level=3},
69 })
70 --- Mithril Boots
71 --
72 -- @boots 3d_armor:boots_mithril
73 -- @img 3d_armor_inv_boots_mithril.png
74 -- @grp armor_feet 1
75 -- @grp armor_heal 12
76 -- @grp armor_use 100
77 -- @armorgrp fleshy 15
78 -- @damagegrp cracky 2
79 -- @damagegrp snappy 1
80 -- @damagegrp level 3
81 armor:register_armor(":3d_armor:boots_mithril", {
82 description = S("Mithril Boots"),
83 inventory_image = "3d_armor_inv_boots_mithril.png",
84 groups = {armor_feet=1, armor_heal=13, armor_use=66},
85 armor_groups = {fleshy=16},
86 damage_groups = {cracky=2, snappy=1, level=3},
87 })
88
89
90 --- Crafting
91 --
92 -- @section craft
93
94 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
95 --
96 -- @craft armor
97 -- @usage
98 -- Key:
99 -- - m: material
100 -- - wood: group:wood
101 -- - cactus: default:cactus
102 -- - steel: default:steel_ingot
103 -- - bronze: default:bronze_ingot
104 -- - diamond: default:diamond
105 -- - gold: default:gold_ingot
106 -- - mithril: moreores:mithril_ingot
107 -- - crystal: ethereal:crystal_ingot
108 -- - nether: nether:nether_ingot
109 --
110 -- helmet: chestplate: leggings:
111 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
112 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
113 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
114 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
115 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
116 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
117 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
118 --
119 -- boots: shield:
120 -- ┌───┬───┬───┐ ┌───┬───┬───┐
121 -- │ │ │ │ │ m │ m │ m │
122 -- ├───┼───┼───┤ ├───┼───┼───┤
123 -- │ m │ │ m │ │ m │ m │ m │
124 -- ├───┼───┼───┤ ├───┼───┼───┤
125 -- │ m │ │ m │ │ │ m │ │
126 -- └───┴───┴───┘ └───┴───┴───┘
127
128 local s = "mithril"
129 local m = armor.materials.mithril
130 minetest.register_craft({
131 output = "3d_armor:helmet_"..s,
132 recipe = {
133 {m, m, m},
134 {m, "", m},
135 {"", "", ""},
136 },
137 })
138 minetest.register_craft({
139 output = "3d_armor:chestplate_"..s,
140 recipe = {
141 {m, "", m},
142 {m, m, m},
143 {m, m, m},
144 },
145 })
146 minetest.register_craft({
147 output = "3d_armor:leggings_"..s,
148 recipe = {
149 {m, m, m},
150 {m, "", m},
151 {m, "", m},
152 },
153 })
154 minetest.register_craft({
155 output = "3d_armor:boots_"..s,
156 recipe = {
157 {m, "", m},
158 {m, "", m},
159 },
160 })
161 end
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=Mithrilstiefel
6 Mithril Chestplate=Mithrilbrustplatte
7 Mithril Helmet=Mithrilhelm
8 Mithril Leggings=Mithrilhose
0 # textdomain: armor_mithril
1
2 Mithril Helmet=Mitrila Kasko
3 Mithril Chestplate=Mitrila Brustkiraso
4 Mithril Leggings=Mitrila Pantalono
5 Mithril Boots=Mitrila Botoj
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=Botas de mitrilo
6 Mithril Chestplate=Peto de mitrilo
7 Mithril Helmet=Casco de mitrilo
8 Mithril Leggings=Grebas de mitrilo
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=Bottes en mithril
6 Mithril Chestplate=Cuirasse en mithril
7 Mithril Helmet=Casque en mithril
8 Mithril Leggings=Jambières en mithril
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=Stivali di mithril
6 Mithril Chestplate=Corazza di mithril
7 Mithril Helmet=Elmo di mithril
8 Mithril Leggings=Gambali di mithril
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=But Mithril
6 Mithril Chestplate=Perisai Dada Mithril
7 Mithril Helmet=Helmet Mithril
8 Mithril Leggings=Perisai Kaki Mithril
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=Botas de Mithril
6 Mithril Chestplate=Peitoral de Mithril
7 Mithril Helmet=Capacete de Mithril
8 Mithril Leggings=Calças de Mithril
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=Botas de Mithril
6 Mithril Chestplate=Peitoral de Mithril
7 Mithril Helmet=Capacete de Mithril
8 Mithril Leggings=Calças de Mithril
0 # textdomain: armor_mithril
1
2
3 ### init.lua ###
4
5 Mithril Boots=мифриловые ботинки
6 Mithril Chestplate=мифриловый бронежилет
7 Mithril Helmet=мифриловый шлем
8 Mithril Leggings=мифриловые гамаши
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=
6 3d_armor: Player name is nil @1=
7 3d_armor: Player reference is nil @1=
8
9 ### armor.lua ###
10
11 Nether Boots=
12 Nether Chestplate=
13 Nether Helmet=
14 Nether Leggings=
15 Mithril Boots=
16 Mithril Chestplate=
17 Mithril Helmet=
18 Mithril Leggings=
19
20 ### init.lua ###
21
22 3d_armor: Failed to initialize player=
23 Fire=
24 Heal=
25 Level=
26 Radiation=
27 Your @1 got destroyed!=
28 Your @1 is almost broken!=
29 [3d_armor] Fire Nodes disabled=
0 name = armor_mithril
1 depends = 3d_armor
2 optional_depends = moreores
3 description = Adds craftable mithril armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable wood armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9
10 --- Nether
11 --
12 -- Requires `armor_material_nether`.
13 --
14 -- @section nether
15
16 if armor.materials.nether then
17 --- Nether Helmet
18 --
19 -- @helmet 3d_armor:helmet_nether
20 -- @img 3d_armor_inv_helmet_nether.png
21 -- @grp armor_head 1
22 -- @grp armor_heal 14
23 -- @grp armor_use 200
24 -- @grp armor_fire 1
25 -- @armorgrp fleshy 18
26 -- @damagegrp cracky 3
27 -- @damagegrp snappy 2
28 -- @damagegrp level 3
29 armor:register_armor(":3d_armor:helmet_nether", {
30 description = S("Nether Helmet"),
31 inventory_image = "3d_armor_inv_helmet_nether.png",
32 groups = {armor_head=1, armor_heal=14, armor_use=100, armor_fire=1},
33 armor_groups = {fleshy=18},
34 damage_groups = {cracky=3, snappy=2, level=3},
35 })
36 --- Nether Chestplate
37 --
38 -- @chestplate 3d_armor:chestplate_nether
39 -- @img 3d_armor_inv_chestplate_nether.png
40 -- @grp armor_torso 1
41 -- @grp armor_heal 14
42 -- @grp armor_use 200
43 -- @grp armor_fire 1
44 -- @armorgrp fleshy 25
45 -- @damagegrp cracky 3
46 -- @damagegrp snappy 2
47 -- @damagegrp level 3
48 armor:register_armor(":3d_armor:chestplate_nether", {
49 description = S("Nether Chestplate"),
50 inventory_image = "3d_armor_inv_chestplate_nether.png",
51 groups = {armor_torso=1, armor_heal=14, armor_use=200, armor_fire=1},
52 armor_groups = {fleshy=25},
53 damage_groups = {cracky=3, snappy=2, level=3},
54 })
55 --- Nether Leggings
56 --
57 -- @leggings 3d_armor:leggings_nether
58 -- @img 3d_armor_inv_leggings_nether.png
59 -- @grp armor_legs 1
60 -- @grp armor_heal 14
61 -- @grp armor_use 200
62 -- @grp armor_fire 1
63 -- @armorgrp fleshy 25
64 -- @damagegrp cracky 3
65 -- @damagegrp snappy 2
66 -- @damagegrp level 3
67 armor:register_armor(":3d_armor:leggings_nether", {
68 description = S("Nether Leggings"),
69 inventory_image = "3d_armor_inv_leggings_nether.png",
70 groups = {armor_legs=1, armor_heal=14, armor_use=200, armor_fire=1},
71 armor_groups = {fleshy=25},
72 damage_groups = {cracky=3, snappy=2, level=3},
73 })
74 --- Nether Boots
75 --
76 -- @boots 3d_armor:boots_nether
77 -- @img 3d_armor_inv_boots_nether.png
78 -- @grp armor_feet 1
79 -- @grp armor_heal 14
80 -- @grp armor_use 200
81 -- @grp armor_fire 1
82 -- @armorgrp fleshy 18
83 -- @damagegrp cracky 3
84 -- @damagegrp snappy 2
85 -- @damagegrp level 3
86 armor:register_armor(":3d_armor:boots_nether", {
87 description = S("Nether Boots"),
88 inventory_image = "3d_armor_inv_boots_nether.png",
89 groups = {armor_feet=1, armor_heal=14, armor_use=200, armor_fire=1},
90 armor_groups = {fleshy=18},
91 damage_groups = {cracky=3, snappy=2, level=3},
92 })
93
94
95 --- Crafting
96 --
97 -- @section craft
98
99 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
100 --
101 -- @craft armor
102 -- @usage
103 -- Key:
104 -- - m: material
105 -- - wood: group:wood
106 -- - cactus: default:cactus
107 -- - steel: default:steel_ingot
108 -- - bronze: default:bronze_ingot
109 -- - diamond: default:diamond
110 -- - gold: default:gold_ingot
111 -- - mithril: moreores:mithril_ingot
112 -- - crystal: ethereal:crystal_ingot
113 -- - nether: nether:nether_ingot
114 --
115 -- helmet: chestplate: leggings:
116 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
117 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
118 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
119 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
120 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
121 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
122 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
123 --
124 -- boots: shield:
125 -- ┌───┬───┬───┐ ┌───┬───┬───┐
126 -- │ │ │ │ │ m │ m │ m │
127 -- ├───┼───┼───┤ ├───┼───┼───┤
128 -- │ m │ │ m │ │ m │ m │ m │
129 -- ├───┼───┼───┤ ├───┼───┼───┤
130 -- │ m │ │ m │ │ │ m │ │
131 -- └───┴───┴───┘ └───┴───┴───┘
132
133 local s = "nether"
134 local m = armor.materials.nether
135 minetest.register_craft({
136 output = "3d_armor:helmet_"..s,
137 recipe = {
138 {m, m, m},
139 {m, "", m},
140 {"", "", ""},
141 },
142 })
143 minetest.register_craft({
144 output = "3d_armor:chestplate_"..s,
145 recipe = {
146 {m, "", m},
147 {m, m, m},
148 {m, m, m},
149 },
150 })
151 minetest.register_craft({
152 output = "3d_armor:leggings_"..s,
153 recipe = {
154 {m, m, m},
155 {m, "", m},
156 {m, "", m},
157 },
158 })
159 minetest.register_craft({
160 output = "3d_armor:boots_"..s,
161 recipe = {
162 {m, "", m},
163 {m, "", m},
164 },
165 })
166
167 end
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=Netherstiefel
6 Nether Chestplate=Netherbrustplatte
7 Nether Helmet=Netherhelm
8 Nether Leggings=Netherhose
0 # textdomain: armor_nether
1
2 Nether Helmet=Inferna Kasko
3 Nether Chestplate=Inferna Brustkiraso
4 Nether Leggings=Inferna Pantalono
5 Nether Boots=Inferna Botoj
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=Botas de nether
6 Nether Chestplate=Peto de nether
7 Nether Helmet=Casco de nether
8 Nether Leggings=Grebas de nether
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=Bottes en nether
6 Nether Chestplate=Cuirasse en nether
7 Nether Helmet=Casque en nether
8 Nether Leggings=Jambières en nether
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=Stivali di nether
6 Nether Chestplate=Corazza di nether
7 Nether Helmet=Elmo di nether
8 Nether Leggings=Gambali di nether
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=But Nether
6 Nether Chestplate=Perisai Dada Nether
7 Nether Helmet=Helmet Nether
8 Nether Leggings=Perisai Kaki Nether
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=Botas de Nether
6 Nether Chestplate=Peitoral de Nether
7 Nether Helmet=Capacete de Nether
8 Nether Leggings=Calças de Nether
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=Botas de Nether
6 Nether Chestplate=Peitoral de Nether
7 Nether Helmet=Capacete de Nether
8 Nether Leggings=Calças de Nether
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=адские ботинки
6 Nether Chestplate=адский бронежилет
7 Nether Helmet=адский шлем
8 Nether Leggings=адские гамаши
0 # textdomain: armor_nether
1
2
3 ### init.lua ###
4
5 Nether Boots=
6 Nether Chestplate=
7 Nether Helmet=
8 Nether Leggings=
0 name = armor_nether
1 depends = 3d_armor
2 optional_depends = nether
3 description = Adds craftable wood armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable steel armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Steel
10 --
11 -- Requires setting `armor_material_steel`.
12 --
13 -- @section steel
14
15 if armor.materials.steel then
16 --- Steel Helmet
17 --
18 -- @helmet 3d_armor:helmet_steel
19 -- @img 3d_armor_inv_helmet_steel.png
20 -- @grp armor_head 1
21 -- @grp armor_heal 0
22 -- @grp armor_use 800
23 -- @grp physics_speed -0.01
24 -- @grp physica_gravity 0.01
25 -- @armorgrp fleshy 10
26 -- @damagegrp cracky 2
27 -- @damagegrp snappy 3
28 -- @damagegrp choppy 2
29 -- @damagegrp crumbly 1
30 -- @damagegrp level 2
31 armor:register_armor(":3d_armor:helmet_steel", {
32 description = S("Steel Helmet"),
33 inventory_image = "3d_armor_inv_helmet_steel.png",
34 groups = {armor_head=1, armor_heal=0, armor_use=800,
35 physics_speed=-0.01, physics_gravity=0.01},
36 armor_groups = {fleshy=10},
37 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
38 })
39 --- Steel Chestplate
40 --
41 -- @chestplate 3d_armor:chestplate_steel
42 -- @img 3d_armor_inv_chestplate_steel.png
43 -- @grp armor_torso 1
44 -- @grp armor_heal 0
45 -- @grp armor_use 800
46 -- @grp physics_speed
47 -- @grp physics_gravity
48 -- @armorgrp fleshy
49 -- @damagegrp cracky 2
50 -- @damagegrp snappy 3
51 -- @damagegrp choppy 2
52 -- @damagegrp crumbly 1
53 -- @damagegrp level 2
54 armor:register_armor(":3d_armor:chestplate_steel", {
55 description = S("Steel Chestplate"),
56 inventory_image = "3d_armor_inv_chestplate_steel.png",
57 groups = {armor_torso=1, armor_heal=0, armor_use=800,
58 physics_speed=-0.04, physics_gravity=0.04},
59 armor_groups = {fleshy=15},
60 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
61 })
62 --- Steel Leggings
63 --
64 -- @leggings 3d_armor:leggings_steel
65 -- @img 3d_armor_inv_leggings_steel.png
66 -- @grp armor_legs 1
67 -- @grp armor_heal 0
68 -- @grp armor_use 800
69 -- @grp physics_speed -0.03
70 -- @grp physics_gravity 0.03
71 -- @armorgrp fleshy 15
72 -- @damagegrp cracky 2
73 -- @damagegrp snappy 3
74 -- @damagegrp choppy 2
75 -- @damagegrp crumbly 1
76 -- @damagegrp level 2
77 armor:register_armor(":3d_armor:leggings_steel", {
78 description = S("Steel Leggings"),
79 inventory_image = "3d_armor_inv_leggings_steel.png",
80 groups = {armor_legs=1, armor_heal=0, armor_use=800,
81 physics_speed=-0.03, physics_gravity=0.03},
82 armor_groups = {fleshy=15},
83 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
84 })
85 --- Steel Boots
86 --
87 -- @boots 3d_armor:boots_steel
88 -- @img 3d_armor_inv_boots_steel.png
89 -- @grp armor_feet 1
90 -- @grp armor_heal 0
91 -- @grp armor_use 800
92 -- @grp physics_speed -0.01
93 -- @grp physics_gravity 0.01
94 -- @armorgrp fleshy 10
95 -- @damagegrp cracky 2
96 -- @damagegrp snappy 3
97 -- @damagegrp choppy 2
98 -- @damagegrp crumbly 1
99 -- @damagegrp level 2
100 armor:register_armor(":3d_armor:boots_steel", {
101 description = S("Steel Boots"),
102 inventory_image = "3d_armor_inv_boots_steel.png",
103 groups = {armor_feet=1, armor_heal=0, armor_use=800,
104 physics_speed=-0.01, physics_gravity=0.01},
105 armor_groups = {fleshy=10},
106 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
107 })
108
109 --- Crafting
110 --
111 -- @section craft
112
113 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
114 --
115 -- @craft armor
116 -- @usage
117 -- Key:
118 -- - m: material
119 -- - wood: group:wood
120 -- - cactus: default:cactus
121 -- - steel: default:steel_ingot
122 -- - bronze: default:bronze_ingot
123 -- - diamond: default:diamond
124 -- - gold: default:gold_ingot
125 -- - mithril: moreores:mithril_ingot
126 -- - crystal: ethereal:crystal_ingot
127 -- - nether: nether:nether_ingot
128 --
129 -- helmet: chestplate: leggings:
130 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
131 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
132 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
133 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
134 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
135 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
136 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
137 --
138 -- boots: shield:
139 -- ┌───┬───┬───┐ ┌───┬───┬───┐
140 -- │ │ │ │ │ m │ m │ m │
141 -- ├───┼───┼───┤ ├───┼───┼───┤
142 -- │ m │ │ m │ │ m │ m │ m │
143 -- ├───┼───┼───┤ ├───┼───┼───┤
144 -- │ m │ │ m │ │ │ m │ │
145 -- └───┴───┴───┘ └───┴───┴───┘
146
147 local s = "steel"
148 local m = armor.materials.steel
149 minetest.register_craft({
150 output = "3d_armor:helmet_"..s,
151 recipe = {
152 {m, m, m},
153 {m, "", m},
154 {"", "", ""},
155 },
156 })
157 minetest.register_craft({
158 output = "3d_armor:chestplate_"..s,
159 recipe = {
160 {m, "", m},
161 {m, m, m},
162 {m, m, m},
163 },
164 })
165 minetest.register_craft({
166 output = "3d_armor:leggings_"..s,
167 recipe = {
168 {m, m, m},
169 {m, "", m},
170 {m, "", m},
171 },
172 })
173 minetest.register_craft({
174 output = "3d_armor:boots_"..s,
175 recipe = {
176 {m, "", m},
177 {m, "", m},
178 },
179 })
180 end
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=Stahlstiefel
6 Steel Chestplate=Stahlbrustplatte
7 Steel Helmet=Stahlhelm
8 Steel Leggings=Stahlhose
0 # textdomain: armor_steel
1
2 Steel Helmet=Ŝtala Kasko
3 Steel Chestplate=Ŝtala Brustkiraso
4 Steel Leggings=Ŝtala Pantalono
5 Steel Boots=Ŝtala Botoj
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=Botas de acero
6 Steel Chestplate=Peto de acero
7 Steel Helmet=Casco de acero
8 Steel Leggings=Grebas de acero
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=Bottes en acier
6 Steel Chestplate=Cuirasse en acier
7 Steel Helmet=Casque en acier
8 Steel Leggings=Jambières en acier
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=Stivali d'acciaio
6 Steel Chestplate=Corazza d'acciaio
7 Steel Helmet=Elmo d'acciaio
8 Steel Leggings=Gambali d'acciaio
9 Wood Boots=Stivali di legno
10 Wood Chestplate=Corazza di legno
11 Wood Helmet=Elmo di legno
12 Wood Leggings=Gambali di legno
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=But Keluli
6 Steel Chestplate=Perisai Dada Keluli
7 Steel Helmet=Helmet Keluli
8 Steel Leggings=Perisai Kaki Keluli
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=Botas de Aço
6 Steel Chestplate=Peitoral de Aço
7 Steel Helmet=Capacete de Aço
8 Steel Leggings=Calças de Aço
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=Botas de Aço
6 Steel Chestplate=Peitoral de Aço
7 Steel Helmet=Capacete de Aço
8 Steel Leggings=Calças de Aço
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=стальные ботинки
6 Steel Chestplate=стальной бронежилет
7 Steel Helmet=стальной шлем
8 Steel Leggings=стальные гамаши
0 # textdomain: armor_steel
1
2
3 ### init.lua ###
4
5 Steel Boots=
6 Steel Chestplate=
7 Steel Helmet=
8 Steel Leggings=
0 name = armor_steel
1 depends = 3d_armor
2 description = Adds craftable steel armor.
0 [mod] 3d Armor [3d_armor]
1 =========================
2
3 License Source Code
4 -------------------
5
6 Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22 License Textures
23 ----------------
24
25 Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0
0 Adds craftable wood armor.
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
6 -- support for i18n
7 local S = armor.get_translator
8
9 --- Wood
10 --
11 -- Requires setting `armor_material_wood`.
12 --
13 -- @section wood
14
15 if armor.materials.wood then
16 --- Wood Helmet
17 --
18 -- @helmet 3d_armor:helmet_wood
19 -- @img 3d_armor_inv_helmet_wood.png
20 -- @grp armor_head 1
21 -- @grp armor_heal 0
22 -- @grp armor_use 2000
23 -- @grp flammable 1
24 -- @armorgrp fleshy 5
25 -- @damagegrp cracky 3
26 -- @damagegrp snappy 2
27 -- @damagegrp choppy 3
28 -- @damagegrp crumbly 2
29 -- @damagegrp level 1
30 armor:register_armor(":3d_armor:helmet_wood", {
31 description = S("Wood Helmet"),
32 inventory_image = "3d_armor_inv_helmet_wood.png",
33 groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
34 armor_groups = {fleshy=5},
35 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
36 })
37 --- Wood Chestplate
38 --
39 -- @chestplate 3d_armor:chestplate_wood
40 -- @img 3d_armor_inv_chestplate_wood.png
41 -- @grp armor_torso 1
42 -- @grp armor_heal 0
43 -- @grp armor_use 2000
44 -- @grp flammable 1
45 -- @armorgrp fleshy 10
46 -- @damagegrp cracky 3
47 -- @damagegrp snappy 2
48 -- @damagegrp choppy 3
49 -- @damagegrp crumbly 2
50 -- @damagegrp level 1
51 armor:register_armor(":3d_armor:chestplate_wood", {
52 description = S("Wood Chestplate"),
53 inventory_image = "3d_armor_inv_chestplate_wood.png",
54 groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1},
55 armor_groups = {fleshy=10},
56 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
57 })
58 --- Wood Leggings
59 --
60 -- @leggings 3d_armor:leggings_wood
61 -- @img 3d_armor_inv_leggings_wood.png
62 -- @grp armor_legs 1
63 -- @grp armor_heal 0
64 -- @grp armor_use 1000
65 -- @grp flammable 1
66 -- @armorgrp fleshy 10
67 -- @damagegrp cracky 3
68 -- @damagegrp snappy 2
69 -- @damagegrp choppy 3
70 -- @damagegrp crumbly 2
71 -- @damagegrp level 1
72 armor:register_armor(":3d_armor:leggings_wood", {
73 description = S("Wood Leggings"),
74 inventory_image = "3d_armor_inv_leggings_wood.png",
75 groups = {armor_legs=1, armor_heal=0, armor_use=2000, flammable=1},
76 armor_groups = {fleshy=10},
77 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
78 })
79 --- Wood Boots
80 --
81 -- @boots 3d_armor:boots_wood
82 -- @img 3d_armor_inv_boots_wood.png
83 -- @grp armor_feet 1
84 -- @grp armor_heal 0
85 -- @grp armor_use 2000
86 -- @grp flammable 1
87 -- @armorgrp fleshy 5
88 -- @damagegrp cracky 3
89 -- @damagegrp snappy 2
90 -- @damagegrp choppy 3
91 -- @damagegrp crumbly 2
92 -- @damagegrp level 1
93 armor:register_armor(":3d_armor:boots_wood", {
94 description = S("Wood Boots"),
95 inventory_image = "3d_armor_inv_boots_wood.png",
96 armor_groups = {fleshy=5},
97 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
98 groups = {armor_feet=1, armor_heal=0, armor_use=2000, flammable=1},
99 })
100 local wood_armor_fuel = {
101 helmet = 6,
102 chestplate = 8,
103 leggings = 7,
104 boots = 5
105 }
106 for armor, burn in pairs(wood_armor_fuel) do
107 minetest.register_craft({
108 type = "fuel",
109 recipe = "3d_armor:" .. armor .. "_wood",
110 burntime = burn,
111 })
112 end
113
114 --- Crafting
115 --
116 -- @section craft
117
118 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
119 --
120 -- @craft armor
121 -- @usage
122 -- Key:
123 -- - m: material
124 -- - wood: group:wood
125 -- - cactus: default:cactus
126 -- - steel: default:steel_ingot
127 -- - bronze: default:bronze_ingot
128 -- - diamond: default:diamond
129 -- - gold: default:gold_ingot
130 -- - mithril: moreores:mithril_ingot
131 -- - crystal: ethereal:crystal_ingot
132 -- - nether: nether:nether_ingot
133 --
134 -- helmet: chestplate: leggings:
135 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
136 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
137 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
138 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
139 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
140 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
141 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
142 --
143 -- boots: shield:
144 -- ┌───┬───┬───┐ ┌───┬───┬───┐
145 -- │ │ │ │ │ m │ m │ m │
146 -- ├───┼───┼───┤ ├───┼───┼───┤
147 -- │ m │ │ m │ │ m │ m │ m │
148 -- ├───┼───┼───┤ ├───┼───┼───┤
149 -- │ m │ │ m │ │ │ m │ │
150 -- └───┴───┴───┘ └───┴───┴───┘
151
152 local s = "wood"
153 local m = armor.materials.wood
154 minetest.register_craft({
155 output = "3d_armor:helmet_"..s,
156 recipe = {
157 {m, m, m},
158 {m, "", m},
159 {"", "", ""},
160 },
161 })
162 minetest.register_craft({
163 output = "3d_armor:chestplate_"..s,
164 recipe = {
165 {m, "", m},
166 {m, m, m},
167 {m, m, m},
168 },
169 })
170 minetest.register_craft({
171 output = "3d_armor:leggings_"..s,
172 recipe = {
173 {m, m, m},
174 {m, "", m},
175 {m, "", m},
176 },
177 })
178 minetest.register_craft({
179 output = "3d_armor:boots_"..s,
180 recipe = {
181 {m, "", m},
182 {m, "", m},
183 },
184 })
185 end
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=Holzstiefel
6 Wood Chestplate=Holzbrustplatte
7 Wood Helmet=Holzhelm
8 Wood Leggings=Holzhose
0 # textdomain: armor_wood
1
2 Wood Helmet=Ligna Kasko
3 Wood Chestplate=Ligna Brustkiraso
4 Wood Leggings=Ligna Pantalono
5 Wood Boots=Ligna Botoj
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=Botas de madera
6 Wood Chestplate=Peto de madera
7 Wood Helmet=Casco de madera
8 Wood Leggings=Grebas de madera
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=Bottes en bois
6 Wood Chestplate=Cuirasse en bois
7 Wood Helmet=Casque en bois
8 Wood Leggings=Jambières en bois
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=Stivali di legno
6 Wood Chestplate=Corazza di legno
7 Wood Helmet=Elmo di legno
8 Wood Leggings=Gambali di legno
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=But Kayu
6 Wood Chestplate=Perisai Dada Kayu
7 Wood Helmet=Helmet Kayu
8 Wood Leggings=Perisai Kaki Kayu
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=Botas de Madeira
6 Wood Chestplate=Peitoral de Madeira
7 Wood Helmet=Capacete de Madeira
8 Wood Leggings=Calças de Madeira
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=Botas de Madeira
6 Wood Chestplate=Peitoral de Madeira
7 Wood Helmet=Capacete de Madeira
8 Wood Leggings=Calças de Madeira
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=деревянные ботинки
6 Wood Chestplate=деревянный бронежилет
7 Wood Helmet=деревянный шлем
8 Wood Leggings=деревянные гамаши
0 # textdomain: armor_wood
1
2
3 ### init.lua ###
4
5 Wood Boots=
6 Wood Chestplate=
7 Wood Helmet=
8 Wood Leggings=
0 name = armor_wood
1 depends = 3d_armor
2 description = Adds craftable wood armor.
0 minetest-mod-3d-armor (0.4.14+git20221116.1.04b45de-1) UNRELEASED; urgency=low
1
2 * New upstream snapshot.
3
4 -- Debian Janitor <janitor@jelmer.uk> Thu, 17 Nov 2022 22:22:18 -0000
5
06 minetest-mod-3d-armor (0.4.14-2) unstable; urgency=medium
17
28 * Re-upload source-only for testing migration.
0 name = minetest-3d_armor
10 description = Visible player armor & wielded items.
Binary diff not shown
Binary diff not shown
0
10 [3d_armor]
21
32 armor_material_wood (Enable wood armor) bool true
87 armor_material_gold (Enable gold armor) bool true
98 armor_material_mithril (Enable mithril armor) bool true
109 armor_material_crystal (Enable crystal armor) bool true
10 armor_material_nether (Enable nether armor) bool true
1111
1212 # Increase this if you get initialization glitches when a player first joins.
1313 armor_init_delay (Initialization delay) int 2
3737 # eg: armor_heal_multiplier = 0 will disable healing altogether.
3838 armor_heal_multiplier (Armor healing multiplier) float 1
3939
40 # Armor set item names, remove or add items to include them or remove them from whats considered an Armor set.
41 armor_set_elements (Armor set items) string head torso legs feet shield
42
43 # Bonus multiplier when wearing armor set, set to the same as armor_level_multiplier to disable
44 armor_set_multiplier (Armor Set Bonus multiplier) float 1.1
45
4046 # Enable water protection (periodically restores breath when activated).
4147 armor_water_protect (Enable water protection) bool true
4248
4349 # Enable fire protection (defaults true if using ethereal mod).
4450 armor_fire_protect (Enable fire protection) bool false
4551
52 # Enable fire damage from torches (defaults true if using ethereal mod).
53 armor_fire_protect_torch (Enable fire protection torch damage) bool false
54
4655 # Enable punch damage effects.
4756 armor_punch_damage (Enable damage effects) bool true
4857
4958 # Enable migration of old armor inventories.
5059 armor_migrate_old_inventory (Migrate old armor inventories) bool true
60
61 # Armor is not visible on player model when enabled.
62 armor_transparent (Transparent armor) bool false
5163
5264
5365 [shields]
1616 [shields:shield_gold] X = [default:gold_ingot]
1717 [shields:shield_mithril] X = [moreores:mithril_ingot]
1818 [shields:shield_crystal] X = [ethereal:crystal_ingot]
19 [shields:shield_nether] X = [ethereal:nether_ingot]
1920
2021 Enhanced Shields
2122 ----------------
0
1 --- 3D Armor Shields
2 --
3 -- @topic shields
4
5
06 -- support for i18n
1 local S = armor_i18n.gettext
7 local S = minetest.get_translator(minetest.get_current_modname())
28
39 local disable_sounds = minetest.settings:get_bool("shields_disable_sounds")
410 local function play_sound_effect(player, name)
1622
1723 if minetest.global_exists("armor") and armor.elements then
1824 table.insert(armor.elements, "shield")
19 local mult = armor.config.level_multiplier or 1
20 armor.config.level_multiplier = mult * 0.9
2125 end
2226
2327 -- Regisiter Shields
2428
29 --- Admin Shield
30 --
31 -- @shield shields:shield_admin
32 -- @img shields_inv_shield_admin.png
33 -- @grp armor_shield 1000
34 -- @grp armor_heal 100
35 -- @grp armor_use 0
36 -- @grp not_int_creative_inventory 1
2537 armor:register_armor("shields:shield_admin", {
2638 description = S("Admin Shield"),
2739 inventory_image = "shields_inv_shield_admin.png",
3042
3143 minetest.register_alias("adminshield", "shields:shield_admin")
3244
45
3346 if armor.materials.wood then
47 --- Wood Shield
48 --
49 -- @shield shields:shield_wood
50 -- @img shields_inv_shield_wood.png
51 -- @grp armor_shield 1
52 -- @grp armor_heal 0
53 -- @grp armor_use 2000
54 -- @grp flammable 1
55 -- @armorgrp fleshy 5
56 -- @damagegrp cracky 3
57 -- @damagegrp snappy 2
58 -- @damagegrp choppy 3
59 -- @damagegrp crumbly 2
60 -- @damagegrp level 1
3461 armor:register_armor("shields:shield_wood", {
3562 description = S("Wooden Shield"),
3663 inventory_image = "shields_inv_shield_wood.png",
4572 play_sound_effect(player, "default_wood_footstep")
4673 end,
4774 })
75 --- Enhanced Wood Shield
76 --
77 -- @shield shields:shield_enhanced_wood
78 -- @img shields_inv_shield_enhanced_wood.png
79 -- @grp armor_shield 1
80 -- @grp armor_heal 0
81 -- @grp armor_use 2000
82 -- @armorgrp fleshy 8
83 -- @damagegrp cracky 3
84 -- @damagegrp snappy 2
85 -- @damagegrp choppy 3
86 -- @damagegrp crumbly 2
87 -- @damagegrp level 2
4888 armor:register_armor("shields:shield_enhanced_wood", {
4989 description = S("Enhanced Wood Shield"),
5090 inventory_image = "shields_inv_shield_enhanced_wood.png",
75115 end
76116
77117 if armor.materials.cactus then
118 --- Cactus Shield
119 --
120 -- @shield shields:shield_cactus
121 -- @img shields_inv_shield_cactus.png
122 -- @grp armor_shield 1
123 -- @grp armor_heal 0
124 -- @grp armor_use 1000
125 -- @armorgrp fleshy 5
126 -- @damagegrp cracky 3
127 -- @damagegrp snappy 3
128 -- @damagegrp choppy 2
129 -- @damagegrp crumbly 2
130 -- @damagegrp level 1
78131 armor:register_armor("shields:shield_cactus", {
79132 description = S("Cactus Shield"),
80133 inventory_image = "shields_inv_shield_cactus.png",
89142 play_sound_effect(player, "default_wood_footstep")
90143 end,
91144 })
145 --- Enhanced Cactus Shield
146 --
147 -- @shield shields:shield_enhanced_cactus
148 -- @img shields_inv_shield_enhanced_cactus.png
149 -- @grp armor_shield 1
150 -- @grp armor_heal 0
151 -- @grp armor_use 1000
152 -- @armorgrp fleshy 8
153 -- @damagegrp cracky 3
154 -- @damagegrp snappy 3
155 -- @damagegrp choppy 2
156 -- @damagegrp crumbly 2
157 -- @damagegrp level 2
92158 armor:register_armor("shields:shield_enhanced_cactus", {
93159 description = S("Enhanced Cactus Shield"),
94160 inventory_image = "shields_inv_shield_enhanced_cactus.png",
119185 end
120186
121187 if armor.materials.steel then
188 --- Steel Shield
189 --
190 -- @shield shields:shield_steel
191 -- @img shields_inv_shield_steel.png
192 -- @grp armor_shield 1
193 -- @grp armor_heal 0
194 -- @grp armor_use 800
195 -- @grp physics_speed -0.03
196 -- @grp physics_gravity 0.03
197 -- @armorgrp fleshy 10
198 -- @damagegrp cracky 2
199 -- @damagegrp snappy 3
200 -- @damagegrp choppy 2
201 -- @damagegrp crumbly 1
202 -- @damagegrp level 2
122203 armor:register_armor("shields:shield_steel", {
123204 description = S("Steel Shield"),
124205 inventory_image = "shields_inv_shield_steel.png",
137218 end
138219
139220 if armor.materials.bronze then
221 --- Bronze Shield
222 --
223 -- @shield shields:shield_bronze
224 -- @img shields_inv_shield_bronze.png
225 -- @grp armor_shield 1
226 -- @grp armor_heal 6
227 -- @grp armor_use 400
228 -- @grp physics_speed -0.03
229 -- @grp physics_gravity 0.03
230 -- @armorgrp fleshy 10
231 -- @damagegrp cracky 2
232 -- @damagegrp snappy 3
233 -- @damagegrp choppy 2
234 -- @damagegrp crumbly 1
235 -- @damagegrp level 2
140236 armor:register_armor("shields:shield_bronze", {
141237 description = S("Bronze Shield"),
142238 inventory_image = "shields_inv_shield_bronze.png",
155251 end
156252
157253 if armor.materials.diamond then
254 --- Diamond Shield
255 --
256 -- @shield shields:shield_diamond
257 -- @img shields_inv_shield_diamond.png
258 -- @grp armor_shield 1
259 -- @grp armor_heal 12
260 -- @grp armor_use 200
261 -- @armorgrp fleshy 15
262 -- @damagegrp cracky 2
263 -- @damagegrp snappy 1
264 -- @damagegrp choppy 1
265 -- @damagegrp level 3
158266 armor:register_armor("shields:shield_diamond", {
159267 description = S("Diamond Shield"),
160268 inventory_image = "shields_inv_shield_diamond.png",
172280 end
173281
174282 if armor.materials.gold then
283 --- Gold Shield
284 --
285 -- @shield shields:shield_gold
286 -- @img shields_inv_shield_gold.png
287 -- @grp armor_shield 1
288 -- @grp armor_heal 6
289 -- @grp armor_use 300
290 -- @grp physics_speed -0.04
291 -- @grp physics_gravity 0.04
292 -- @armorgrp fleshy 10
293 -- @damagegrp cracky 1
294 -- @damagegrp snappy 2
295 -- @damagegrp choppy 2
296 -- @damagegrp crumbly 3
297 -- @damagegrp level 2
175298 armor:register_armor("shields:shield_gold", {
176299 description = S("Gold Shield"),
177300 inventory_image = "shields_inv_shield_gold.png",
190313 end
191314
192315 if armor.materials.mithril then
316 --- Mithril Shield
317 --
318 -- @shield shields:shield_mithril
319 -- @img shields_inv_shield_mithril.png
320 -- @grp armor_shield 1
321 -- @grp armor_heal 12
322 -- @grp armor_use 100
323 -- @armorgrp fleshy 15
324 -- @damagegrp cracky 2
325 -- @damagegrp snappy 1
326 -- @damagegrp level 3
193327 armor:register_armor("shields:shield_mithril", {
194328 description = S("Mithril Shield"),
195329 inventory_image = "shields_inv_shield_mithril.png",
196 groups = {armor_shield=1, armor_heal=12, armor_use=100},
197 armor_groups = {fleshy=15},
330 groups = {armor_shield=1, armor_heal=13, armor_use=66},
331 armor_groups = {fleshy=16},
198332 damage_groups = {cracky=2, snappy=1, level=3},
199333 reciprocate_damage = true,
200334 on_damage = function(player, index, stack)
207341 end
208342
209343 if armor.materials.crystal then
344 --- Crystal Shield
345 --
346 -- @shield shields:shield_crystal
347 -- @img shields_inv_shield_crystal.png
348 -- @grp armor_shield 1
349 -- @grp armor_heal 12
350 -- @grp armor_use 100
351 -- @grp armor_fire 1
352 -- @armorgrp fleshy 15
353 -- @damagegrp cracky 2
354 -- @damagegrp snappy 1
355 -- @damagegrp level 3
210356 armor:register_armor("shields:shield_crystal", {
211357 description = S("Crystal Shield"),
212358 inventory_image = "shields_inv_shield_crystal.png",
213359 groups = {armor_shield=1, armor_heal=12, armor_use=100, armor_fire=1},
214360 armor_groups = {fleshy=15},
215361 damage_groups = {cracky=2, snappy=1, level=3},
362 reciprocate_damage = true,
363 on_damage = function(player, index, stack)
364 play_sound_effect(player, "default_glass_footstep")
365 end,
366 on_destroy = function(player, index, stack)
367 play_sound_effect(player, "default_break_glass")
368 end,
369 })
370 end
371
372 if armor.materials.nether then
373 --- Nether Shield
374 --
375 -- @shield shields:shield_nether
376 -- @img shields_inv_shield_nether.png
377 -- @grp armor_shield 1
378 -- @grp armor_heal 17
379 -- @grp armor_use 200
380 -- @grp armor_fire 1
381 -- @armorgrp fleshy 20
382 -- @damagegrp cracky 3
383 -- @damagegrp snappy 2
384 -- @damagegrp level 3
385 armor:register_armor("shields:shield_nether", {
386 description = S("Nether Shield"),
387 inventory_image = "shields_inv_shield_nether.png",
388 groups = {armor_shield=1, armor_heal=17, armor_use=200, armor_fire=1},
389 armor_groups = {fleshy=20},
390 damage_groups = {cracky=3, snappy=2, level=3},
216391 reciprocate_damage = true,
217392 on_damage = function(player, index, stack)
218393 play_sound_effect(player, "default_glass_footstep")
0 # textdomain: shields
1
2
3 ### init.lua ###
4
5 Admin Shield=Adminschild
6 Bronze Shield=Bronzeschild
7 Cactus Shield=Kaktusschild
8 Crystal Shield=Kristallschild
9 Nether Shield=Netherschild
10 Diamond Shield=Diamantschild
11 Enhanced Cactus Shield=verbessert Kaktusschild
12 Enhanced Wood Shield=verbessert Holzschild
13 Gold Shield=Goldschild
14 Mithril Shield=Mithrilschild
15 Steel Shield=Stahlschild
16 Wooden Shield=Holzschild
0 # textdomain: shields
1
2 Admin Shield=Administra Ŝildo
3 Wooden Shield=Ligna Ŝildo
4 Enhanced Wood Shield=Plibonigita Ligna Ŝildo
5 Cactus Shield=Kakta Ŝildo
6 Enhanced Cactus Shield=Plibonigita Kakta Ŝildo
7 Steel Shield=Ŝtala Ŝildo
8 Bronze Shield=Bronza Ŝildo
9 Diamond Shield=Diamanta Ŝildo
10 Gold Shield=Ora Ŝildo
11 Mithril Shield=Mitrila Ŝildo
12 Crystal Shield=Kristala Ŝildo
13 Nether Shield=Inferna Ŝildo
0 # textdomain: shields
1
2
3 ### init.lua ###
4
5 Admin Shield=Bouclier d'admin
6 Bronze Shield=Bouclier en bronze
7 Cactus Shield=Bouclier en cactus
8 Crystal Shield=Bouclier en cristal
9 Nether Shield=Bouclier en nether
10 Diamond Shield=Bouclier en diamant
11 Enhanced Cactus Shield=Bouclier en cactus amélioré
12 Enhanced Wood Shield=Bouclier en bois amélioré
13 Gold Shield=Bouclier en or
14 Mithril Shield=Bouclier en mithril
15 Steel Shield=Bouclier en acier
16 Wooden Shield=Bouclier en bois
0 # textdomain: shields
1
2
3 ### init.lua ###
4
5 Admin Shield=Escudo de Administrador
6 Bronze Shield=Escudo de Bronze
7 Cactus Shield=Escudo de Cacto
8 Crystal Shield=Escudo de Cristal
9 Nether Shield=Escudo de Nether
10 Diamond Shield=Escudo de Diamante
11 Enhanced Cactus Shield=Escude de Cacto Encantado
12 Enhanced Wood Shield=Escudo de Madeira Encantado
13 Gold Shield=Escudo de Ouro
14 Mithril Shield=Escudo de Mithril
15 Steel Shield=Escudo de Aço
16 Wooden Shield=Escudo de Madeira
0 # textdomain: shields
1
2
3 ### init.lua ###
4
5 Admin Shield=
6 Bronze Shield=
7 Cactus Shield=
8 Crystal Shield=
9 Nether Shield=
10 Diamond Shield=
11 Enhanced Cactus Shield=
12 Enhanced Wood Shield=
13 Gold Shield=
14 Mithril Shield=
15 Steel Shield=
16 Wooden Shield=
77 shields/textures/shields_shield_diamond.png:shield
88 shields/textures/shields_shield_mithril.png:shield
99 shields/textures/shields_shield_crystal.png:shield
10 shields/textures/shields_shield_nether.png:shield
1011 shields/textures/shields_shield_admin.png:shield
2020 hand, add the group “wieldview_transform” to the item definition. The group
2121 rating equals one of the numbers used for the [transform texture modifier
2222 of the Lua API.
23
24 Disabling the feature in-game: If you want to hide the wielded item
25 you can add an INT metadata to the player called "show_wielded_item" and set
26 it to 2 (any other value will show the wielded item again).
0 local f = string.format
1
2 local node_tiles = minetest.settings:get_bool("wieldview_node_tiles")
3 if not node_tiles then
4 node_tiles = false
5 minetest.settings:set("wieldview_node_tiles", "false")
6 end
7
8 -- https://github.com/minetest/minetest/blob/9fc018ded10225589d2559d24a5db739e891fb31/doc/lua_api.txt#L453-L462
9 local function escape_texture(texturestring)
10 -- store in a variable so we don't return both rvs of gsub
11 local v = texturestring:gsub("%^", "\\^"):gsub(":", "\\:")
12 return v
13 end
14
15 local function memoize(func)
16 local memo = {}
17 return function(arg)
18 if arg == nil then
19 return func(arg)
20 end
21 local rv = memo[arg]
22
23 if not rv then
24 rv = func(arg)
25 memo[arg] = rv
26 end
27
28 return rv
29 end
30 end
31
32 local function is_vertical_frames(animation)
33 return (
34 animation.type == "vertical_frames" and
35 animation.aspect_w and
36 animation.aspect_h
37 )
38 end
39
40 local function get_single_frame(animation, image_name)
41 return ("smartshop_animation_mask.png^[resize:%ix%i^[mask:%s"):format(
42 animation.aspect_w,
43 animation.aspect_h,
44 image_name
45 )
46 end
47
48 local function is_sheet_2d(animation)
49 return (
50 animation.type == "sheet_2d" and
51 animation.frames_w and
52 animation.frames_h
53 )
54 end
55
56 local function get_sheet_2d(animation, image_name)
57 return ("%s^[sheet:%ix%i:0,0"):format(
58 image_name,
59 animation.frames_w,
60 animation.frames_h
61 )
62 end
63
64 local get_image_from_tile = memoize(function(tile)
65 if type(tile) == "string" then
66 return tile
67
68 elseif type(tile) == "table" then
69 local image_name
70
71 if type(tile.image) == "string" then
72 image_name = tile.image
73
74 elseif type(tile.name) == "string" then
75 image_name = tile.name
76
77 end
78
79 if image_name then
80 local animation = tile.animation
81 if animation then
82 if is_vertical_frames(animation) then
83 return get_single_frame(animation, image_name)
84
85 elseif is_sheet_2d(animation) then
86 return get_sheet_2d(animation, image_name)
87 end
88 end
89
90 return image_name
91 end
92 end
93
94 return "3d_armor_trans.png"
95 end)
96
97 local function get_image_cube(tiles)
98 if #tiles >= 6 then
99 return minetest.inventorycube(
100 get_image_from_tile(tiles[1] or "no_texture.png"),
101 get_image_from_tile(tiles[6] or "no_texture.png"),
102 get_image_from_tile(tiles[3] or "no_texture.png")
103 )
104
105 elseif #tiles == 5 then
106 return minetest.inventorycube(
107 get_image_from_tile(tiles[1] or "no_texture.png"),
108 get_image_from_tile(tiles[5] or "no_texture.png"),
109 get_image_from_tile(tiles[3] or "no_texture.png")
110 )
111
112 elseif #tiles == 4 then
113 return minetest.inventorycube(
114 get_image_from_tile(tiles[1] or "no_texture.png"),
115 get_image_from_tile(tiles[4] or "no_texture.png"),
116 get_image_from_tile(tiles[3] or "no_texture.png")
117 )
118
119 elseif #tiles == 3 then
120 return minetest.inventorycube(
121 get_image_from_tile(tiles[1] or "no_texture.png"),
122 get_image_from_tile(tiles[3] or "no_texture.png"),
123 get_image_from_tile(tiles[3] or "no_texture.png")
124 )
125
126 elseif #tiles == 2 then
127 return minetest.inventorycube(
128 get_image_from_tile(tiles[1] or "no_texture.png"),
129 get_image_from_tile(tiles[2] or "no_texture.png"),
130 get_image_from_tile(tiles[2] or "no_texture.png")
131 )
132
133 elseif #tiles == 1 then
134 return minetest.inventorycube(
135 get_image_from_tile(tiles[1] or "no_texture.png"),
136 get_image_from_tile(tiles[1] or "no_texture.png"),
137 get_image_from_tile(tiles[1] or "no_texture.png")
138 )
139 end
140
141 return "3d_armor_trans.png"
142 end
143
144 local function is_normal_node(drawtype)
145 return (
146 drawtype == "normal" or
147 drawtype == "allfaces" or
148 drawtype == "allfaces_optional" or
149 drawtype == "glasslike" or
150 drawtype == "glasslike_framed" or
151 drawtype == "glasslike_framed_optional" or
152 drawtype == "liquid"
153 )
154 end
155
156 armor.get_wield_image = memoize(function(item)
157 item = ItemStack(item)
158
159 if item:is_empty() then
160 return "3d_armor_trans.png"
161 end
162
163 local def = item:get_definition()
164 if not def then
165 return "unknown_item.png"
166 end
167
168 local meta = item:get_meta()
169 local color = meta:get("color") or def.color
170
171 local image = "3d_armor_trans.png"
172
173 if def.wield_image and def.wield_image ~= "" then
174 local parts = {def.wield_image}
175 if color then
176 parts[#parts + 1] = f("[colorize:%s:alpha", escape_texture(color))
177 end
178 if def.wield_overlay then
179 parts[#parts + 1] = def.wield_overlay
180 end
181 image = table.concat(parts, "^")
182
183 elseif def.inventory_image and def.inventory_image ~= "" then
184 local parts = {def.inventory_image}
185 if color then
186 parts[#parts + 1] = f("[colorize:%s:alpha", escape_texture(color))
187 end
188 if def.inventory_overlay then
189 parts[#parts + 1] = def.inventory_overlay
190 end
191 image = table.concat(parts, "^")
192
193 elseif def.type == "node" then
194 if def.drawtype == "nodebox" or def.drawtype == "mesh" then
195 image = "3d_armor_trans.png"
196
197 else
198 local tiles = def.tiles
199 if type(tiles) == "string" then
200 image = get_image_from_tile(tiles)
201
202 elseif type(tiles) == "table" then
203 if is_normal_node(def.drawtype) and node_tiles then
204 image = get_image_cube(tiles)
205
206 else
207 image = get_image_from_tile(tiles[1])
208 end
209 end
210 end
211 end
212
213 return image
214 end)
22 if not update_time then
33 update_time = 2
44 minetest.settings:set("wieldview_update_time", tostring(update_time))
5 end
6 local node_tiles = minetest.settings:get_bool("wieldview_node_tiles")
7 if not node_tiles then
8 node_tiles = false
9 minetest.settings:set("wieldview_node_tiles", "false")
105 end
116
127 wieldview = {
149 transform = {},
1510 }
1611
12 dofile(minetest.get_modpath(minetest.get_current_modname()).."/get_texture.lua")
1713 dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua")
1814
1915 wieldview.get_item_texture = function(self, item)
2016 local texture = "3d_armor_trans.png"
2117 if item ~= "" then
22 if minetest.registered_items[item] then
23 if minetest.registered_items[item].inventory_image ~= "" then
24 texture = minetest.registered_items[item].inventory_image
25 elseif node_tiles == true and minetest.registered_items[item].tiles
26 and type(minetest.registered_items[item].tiles[1]) == "string"
27 and minetest.registered_items[item].tiles[1] ~= "" then
28 texture = minetest.inventorycube(minetest.registered_items[item].tiles[1])
29 end
30 end
18 texture = armor.get_wield_image(item)
19
3120 -- Get item image transformation, first from group, then from transform.lua
3221 local transform = minetest.get_item_group(item, "wieldview_transform")
3322 if transform == 0 then
5342 return
5443 end
5544 if self.wielded_item[name] then
45 if player:get_meta():get_int("show_wielded_item") == 2 then
46 item = ""
47 end
5648 if self.wielded_item[name] == item then
5749 return
5850 end
6557 minetest.register_on_joinplayer(function(player)
6658 local name = player:get_player_name()
6759 wieldview.wielded_item[name] = ""
68 minetest.after(0, function()
69 local pplayer = minetest.get_player_by_name(name)
70 if player then
60 minetest.after(0, function(pname)
61 local pplayer = minetest.get_player_by_name(pname)
62 if pplayer then
7163 wieldview:update_wielded_item(pplayer)
7264 end
73 end)
65 end, name)
7466 end)
7567
7668 minetest.register_globalstep(function(dtime)