10 Commits

Author SHA1 Message Date
Bradley Pierce
8f775a64f0 Rework armor stand inventories (#165)
This change makes armor stands only have one inventory list instead of four, thereby allowing the user to shift-click items back and forth. There is no visual difference in the formspec, and each piece of armor still has its own dedicated slot. An LBM is used to update the inventories of previous armor stands.
2025-09-06 08:06:39 +02:00
SmallJoker
dbe0a9276a Prevent switching pages when using sfinv
Previously, 3d_armor would issue an inventory update
even if the 3d_armor page wasn't shown..
2025-06-24 21:14:27 +02:00
EmptyStar
dbc891a711 Fix crash when right-clicking to equip a seventh armor element with a full armor inventory (#163) 2025-06-07 00:46:28 +02:00
BlackImpostor
a79d1383aa Russian Capitalization (#162)
* Update 3d_armor.ru.tr

* Create 3d_armor_ip.ru.tr

* Create 3d_armor_sfinv.ru.tr

* Create 3d_armor_ui.ru.tr

* Update 'Fire'

* Capitalization in armor_admin.ru.tr

* Capitalization in armor_bronze.ru.tr

* Capitalization in armor_cactus.ru.tr

* Capitalization in armor_crystal.ru.tr

* Capitalization in armor_diamond.ru.tr

* Capitalization in armor_gold.ru.tr

* Capitalization in armor_mithril.ru.tr

* Capitalization in armor_nether.ru.tr

* Capitalization in armor_steel.ru.tr

* Capitalization in armor_wood.ru.tr

* Capitalization in shields.ru.tr
2025-05-28 17:59:13 +02:00
BlackImpostor
220cbc8d92 Update 3d_armor_stand.ru.tr (#161) 2025-05-27 07:03:33 +02:00
TarasArt
8fe014e6d3 Add Ukrainian localization (#160) 2025-05-07 20:00:30 +02:00
mal
a586aeee0c Update mod.conf (#157)
* Update mod.conf

description changed from wood to nether

* Update mod.conf

Fixed typo from my previous PR.
2025-03-04 15:59:08 +01:00
SmallJoker
082e866274 Update player_api model registration
Ensures correct eye position and collision box.
Values taken from the player_api 'character.b3d' model.
2024-12-27 21:43:08 +01:00
Wiktor Perskawiec
c224a73df7 Add Polish translation (#151) 2024-12-14 18:22:09 +01:00
tenplus1
280165fada tweak feather falling (#150)
changed y_velocity check for player so thart feather falling only works when actually falling and not standing around.
2024-12-12 14:00:26 +01:00
38 changed files with 339 additions and 293 deletions

View File

@@ -694,6 +694,9 @@ armor.equip = function(self, player, itemstack)
index = i
end
end
if not index then -- armor inventory is full with other armor elements
return itemstack
end
local stack = itemstack:take_item()
armor_inv:set_stack("armor", index, stack)
self:run_callbacks("on_equip", player, index, stack)

View File

@@ -296,16 +296,21 @@ player_api.register_model("3d_armor_character.b3d", {
},
animations = {
stand = {x=0, y=79},
lay = {x=162, y=166},
lay = {x=162, y=166, eye_height = 0.3, override_local = true,
collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}},
walk = {x=168, y=187},
mine = {x=189, y=198},
walk_mine = {x=200, y=219},
sit = {x=81, y=160},
sit = {x=81, y=160, eye_height = 0.8, override_local = true,
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}},
-- compatibility w/ the emote mod
wave = {x = 192, y = 196, override_local = true},
point = {x = 196, y = 196, override_local = true},
freeze = {x = 205, y = 205, override_local = true},
},
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3},
-- stepheight: use default
eye_height = 1.47,
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
@@ -444,7 +449,7 @@ minetest.register_globalstep(function(dtime)
local name = player:get_player_name()
if armor.def[name].feather > 0 then
local vel_y = player:get_velocity().y
if vel_y < 0 and vel_y < 3 then
if vel_y < -0.5 then
vel_y = -(vel_y * 0.05)
player:add_velocity({x = 0, y = vel_y, z = 0})
end

View File

@@ -0,0 +1,7 @@
# textdomain: 3d_armor
Radiation=Promieniowanie
Level=Poziom
Heal=Uzdrawianie
Fire=Ogień
Your @1 is almost broken!=Twój @1 jest prawie zepsuty!
Your @1 got destroyed!=Twój @1 został zniszczony!

View File

@@ -1,7 +1,7 @@
# textdomain: 3d_armor
Radiation=излучение
Level=уровень
Heal=исцеление
Fire=огонь
Your @1 is almost broken!=
Your @1 got destroyed!=твой(и) @1 был(и) разрушен(ы)!
Radiation=Излучение
Level=Уровень
Heal=Исцеление
Fire=Пламя
Your @1 is almost broken!=Ваш предмет «@1» почти сломан!
Your @1 got destroyed!=Ваш предмет «@1» был уничтожен!

View File

@@ -0,0 +1,7 @@
# textdomain: 3d_armor
Radiation=Радіація
Level=Рівень
Heal=Зцілення
Fire=Вогонь
Your @1 is almost broken!=Ваш @1 майже зламаний!
Your @1 got destroyed!=Ваш(і) @1 був(ли) зламаний(і)!

View File

@@ -0,0 +1,3 @@
# textdomain: 3d_armor_ip
Back=Назад
Armor=Броня

View File

@@ -0,0 +1,3 @@
# textdomain: 3d_armor_ip
Back=Назад
Armor=Броня

View File

@@ -15,7 +15,7 @@ sfinv.register_page("3d_armor:armor", {
end
})
armor:register_on_update(function(player)
if sfinv.enabled then
if sfinv.enabled and sfinv.get_page(player) == "3d_armor:armor" then
sfinv.set_player_inventory_formspec(player)
end
end)

View File

@@ -0,0 +1,2 @@
# textdomain: 3d_armor_sfinv
Armor=Броня

View File

@@ -0,0 +1,2 @@
# textdomain: 3d_armor_sfinv
Armor=Броня

View File

@@ -6,27 +6,27 @@ local armor_stand_formspec = "size[8,7]" ..
default.gui_bg_img ..
default.gui_slots ..
default.get_hotbar_bg(0,3) ..
"list[current_name;armor_head;3,0.5;1,1;]" ..
"list[current_name;armor_torso;4,0.5;1,1;]" ..
"list[current_name;armor_legs;3,1.5;1,1;]" ..
"list[current_name;armor_feet;4,1.5;1,1;]" ..
"list[current_name;main;3,0.5;2,1;]" ..
"list[current_name;main;3,1.5;2,1;2]" ..
"image[3,0.5;1,1;3d_armor_stand_head.png]" ..
"image[4,0.5;1,1;3d_armor_stand_torso.png]" ..
"image[3,1.5;1,1;3d_armor_stand_legs.png]" ..
"image[4,1.5;1,1;3d_armor_stand_feet.png]" ..
"list[current_player;main;0,3;8,1;]" ..
"list[current_player;main;0,4.25;8,3;8]"
"list[current_player;main;0,4.25;8,3;8]" ..
"listring[current_name;main]" ..
"listring[current_player;main]"
local elements = {"head", "torso", "legs", "feet"}
local function drop_armor(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
local stack = inv:get_stack("armor_"..element, 1)
for i = 1, 4 do
local stack = inv:get_stack("main", i)
if stack and stack:get_count() > 0 then
armor.drop_armor(pos, stack)
inv:set_stack("armor_"..element, 1, nil)
inv:set_stack("main", i, nil)
end
end
end
@@ -68,8 +68,8 @@ local function update_entity(pos)
local inv = meta:get_inventory()
local yaw = 0
if inv then
for _, element in pairs(elements) do
local stack = inv:get_stack("armor_"..element, 1)
for i, element in ipairs(elements) do
local stack = inv:get_stack("main", i)
if stack:get_count() == 1 then
local item = stack:get_name() or ""
local def = stack:get_definition() or {}
@@ -149,236 +149,139 @@ minetest.register_node("3d_armor_stand:top", {
tiles = {"blank.png"},
})
minetest.register_node("3d_armor_stand:armor_stand", {
description = S("Armor Stand"),
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {"3d_armor_stand.png"},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", S("Armor Stand"))
local inv = meta:get_inventory()
for _, element in pairs(elements) do
inv:set_size("armor_"..element, 1)
local function register_armor_stand(def)
local function owns_armor_stand(pos, meta, player)
if def.name == "locked_armor_stand" and not has_locked_armor_stand_privilege(meta, player) then
return false
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
if not inv:is_empty("armor_"..element) then
return false
end
local has_access = minetest.is_player(player) and not minetest.is_protected(pos, player:get_player_name())
if def.name == "shared_armor_stand" and not has_access then
return false
end
return true
end,
after_place_node = function(pos, placer)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack)
local def = stack:get_definition() or {}
local groups = def.groups or {}
if groups[listname] then
end
minetest.register_node("3d_armor_stand:" .. def.name, {
description = def.description,
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {def.texture},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", def.description)
if def.name == "locked_armor_stand" then
meta:set_string("owner", "")
end
local inv = meta:get_inventory()
inv:set_size("main", 4)
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if not inv:is_empty("main") then
return false
end
return true
end,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
if def.name == "locked_armor_stand" then
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner")))
elseif def.name == "shared_armor_stand" then
meta:set_string("infotext", def.description)
end
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not owns_armor_stand(pos, meta, player) then
return 0
end
local inv = meta:get_inventory()
local stack_def = stack:get_definition() or {}
local groups = stack_def.groups or {}
for i, element in ipairs(elements) do
if groups["armor_"..element] and inv:get_stack(listname, i):is_empty() then
return 1
end
end
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not owns_armor_stand(pos, meta, player) then
return 0
end
return 1
end
return 0
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos)
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos, listname, index, stack)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack_def = stack:get_definition() or {}
local groups = stack_def.groups or {}
for i, element in ipairs(elements) do
if groups["armor_"..element] then
inv:set_stack(listname, i, stack)
if index ~= i then
inv:set_stack(listname, index, nil)
end
break
end
end
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
on_blast = def.on_blast
})
end
register_armor_stand({
name = "armor_stand",
description = S("Armor Stand"),
texture = "3d_armor_stand.png",
on_blast = function(pos)
drop_armor(pos)
armor.drop_armor(pos, "3d_armor_stand:armor_stand")
minetest.remove_node(pos)
end,
end
})
minetest.register_node("3d_armor_stand:locked_armor_stand", {
register_armor_stand({
name = "locked_armor_stand",
description = S("Locked Armor Stand"),
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {"3d_armor_stand_locked.png"},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", S("Armor Stand"))
meta:set_string("owner", "")
local inv = meta:get_inventory()
for _, element in pairs(elements) do
inv:set_size("armor_"..element, 1)
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
if not inv:is_empty("armor_"..element) then
return false
end
end
return true
end,
after_place_node = function(pos, placer)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner")))
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_armor_stand_privilege(meta, player) then
return 0
end
local def = stack:get_definition() or {}
local groups = def.groups or {}
if groups[listname] then
return 1
end
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_armor_stand_privilege(meta, player) then
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos)
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
on_blast = function(pos)
-- Not affected by TNT
end,
texture = "3d_armor_stand_locked.png"
})
minetest.register_node("3d_armor_stand:shared_armor_stand", {
register_armor_stand({
name = "shared_armor_stand",
description = S("Shared Armor Stand"),
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {"3d_armor_stand_shared.png"},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", S("Shared Armor Stand"))
local inv = meta:get_inventory()
for _, element in pairs(elements) do
inv:set_size("armor_"..element, 1)
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
if not inv:is_empty("armor_"..element) then
return false
end
end
return true
end,
after_place_node = function(pos, placer)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Shared Armor Stand"))
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if not minetest.is_player(player) or minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local def = stack:get_definition() or {}
local groups = def.groups or {}
if groups[listname] then
return 1
end
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
if not minetest.is_player(player) or minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos)
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
on_blast = function(pos)
-- Not affected by TNT
end,
texture = "3d_armor_stand_shared.png"
})
minetest.register_entity("3d_armor_stand:armor_entity", {
@@ -421,6 +324,32 @@ minetest.register_abm({
end
})
minetest.register_lbm({
label = "Update armor stand inventories",
name = "3d_armor_stand:update_inventories",
nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:shared_armor_stand", "3d_armor_stand:armor_stand"},
run_at_every_load = false,
action = function(pos, node)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local lists = inv:get_lists()
for _, element in pairs(elements) do
if not lists["armor_"..element] then
-- Abort to avoid item loss in case env_meta.txt is corrupted/deleted
return
end
end
inv:set_lists({main = {
lists.armor_head[1],
lists.armor_torso[1],
lists.armor_legs[1],
lists.armor_feet[1]
}})
meta:set_string("formspec", armor_stand_formspec)
update_entity(pos)
end
})
minetest.register_craft({
output = "3d_armor_stand:armor_stand",
recipe = {

View File

@@ -1,5 +1,6 @@
# textdomain: 3d_armor_stand
Armor Stand Top=верх стойки для брони
Armor Stand=стойка для брони
Locked Armor Stand=стойка для брони с замком
Armor Stand (owned by @1)=стойка для бони (владелец @1)
Armor Stand Top=Верх Стойки для Брони
Armor Stand=Стойка для Брони
Locked Armor Stand=Заблокированная Стойка для Брони
Shared Armor Stand=Публичная Стойка для Брони
Armor Stand (owned by @1)=Стойка для Брони (владалец: @1)

View File

@@ -0,0 +1,5 @@
# textdomain: 3d_armor_stand
Armor Stand Top=Верх Стійки для Броні
Armor Stand=Стійка для Броні
Locked Armor Stand=Закрита Стійка для Броні
Armor Stand (owned by @1)=Стійка для Броні (власник @1)

View File

@@ -0,0 +1,8 @@
# textdomain: 3d_armor_ui
3D Armor=3D Броня
Armor not initialized!=Броня не инициализирована!
Armor=Броня
Level=Уровень
Heal=Исцеление
Fire=Пламя
Radiation=Излучение

View File

@@ -0,0 +1,8 @@
# textdomain: 3d_armor_ui
3D Armor=3D Броня
Armor not initialized!=Броня не ініціалізована!
Armor=Броня
Level=Рівень
Heal=Зцілення
Fire=Вогонь
Radiation=Радіація

View File

@@ -1,5 +1,5 @@
# textdomain: armor_admin
Admin Helmet=шлем админа
Admin Chestplate=нагрудник админа
Admin Leggings=штаны админа
Admin Boots=ботинки админа
Admin Helmet=Шлем Админа
Admin Chestplate=Нагрудник Админа
Admin Leggings=Поножи Админа
Admin Boots=Ботинки Админа

View File

@@ -0,0 +1,5 @@
# textdomain: armor_admin
Admin Helmet=Шолом адміна
Admin Chestplate=Броня адміна
Admin Leggings=Штани адміна
Admin Boots=Взуття адміна

View File

@@ -1,5 +1,5 @@
# textdomain: armor_bronze
Bronze Helmet=бронзовый шлем
Bronze Chestplate=бронзовый нагрудник
Bronze Leggings=бронзовые штаны
Bronze Boots=бронзовые ботинки
Bronze Helmet=Бронзовый Шлем
Bronze Chestplate=Бронзовый Нагрудник
Bronze Leggings=Бронзовые Поножи
Bronze Boots=Бронзовые Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_bronze
Bronze Helmet=Бронзовий шолом
Bronze Chestplate=Бронзова броня
Bronze Leggings=Бронзові штани
Bronze Boots=Бронзове взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_cactus
Cactus Helmet=кактусовый шлем
Cactus Chestplate=кактусовый нагрудник
Cactus Leggings=кактусовые штаны
Cactus Boots=кактусовые ботинки
Cactus Helmet=Кактусовый Шлем
Cactus Chestplate=Кактусовый Нагрудник
Cactus Leggings=Кактусовые Поножи
Cactus Boots=Кактусовые Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_cactus
Cactus Helmet=Кактусовий шолом
Cactus Chestplate=Кактусова броня
Cactus Leggings=Кактусові штани
Cactus Boots=Кактусове взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_crystal
Crystal Helmet=кристалловый шлем
Crystal Chestplate=кристалловый нагрудник
Crystal Leggings=кристалловые штаны
Crystal Boots=кристалловые ботинки
Crystal Helmet=Кристальный Шлем
Crystal Chestplate=Кристальный Нагрудник
Crystal Leggings=Кристальные Поножи
Crystal Boots=Кристальные Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_crystal
Crystal Helmet=Кришталевий шолом
Crystal Chestplate=Кришталева броня
Crystal Leggings=Кришталеві штани
Crystal Boots=Кришталеве взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_diamond
Diamond Helmet=алмазный шлем
Diamond Chestplate=алмазный нагрудник
Diamond Leggings=алмазные штаны
Diamond Boots=алмазные ботинки
Diamond Helmet=Алмазный Шлем
Diamond Chestplate=Алмазный Нагрудник
Diamond Leggings=Алмазные Поножи
Diamond Boots=Алмазные Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_diamond
Diamond Helmet=Діамантовий шолом
Diamond Chestplate=Діамантова броня
Diamond Leggings=Діамантові штани
Diamond Boots=Діамантове взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_gold
Gold Helmet=золотой шлем
Gold Chestplate=золотой нагрудник
Gold Leggings=золотые штаны
Gold Boots=золотые ботинки
Gold Helmet=Золотой Шлем
Gold Chestplate=Золотой Нагрудник
Gold Leggings=Золотые Поножи
Gold Boots=Золотые Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_gold
Gold Helmet=Золотий шолом
Gold Chestplate=Золота броня
Gold Leggings=Золоті штани
Gold Boots=Золоте взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_mithril
Mithril Helmet=мифриловый шлем
Mithril Chestplate=мифриловый нагрудник
Mithril Leggings=мифриловые штаны
Mithril Boots=мифриловые ботинки
Mithril Helmet=Мифриловый Шлем
Mithril Chestplate=Мифриловый Нагрудник
Mithril Leggings=Мифриловые Поножи
Mithril Boots=Мифриловые Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_mithril
Mithril Helmet=Міфріловий шолом
Mithril Chestplate=Міфрілова броня
Mithril Leggings=Міфрілові штани
Mithril Boots=Міфрілове взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_nether
Nether Helmet=адский шлем
Nether Chestplate=адский нагрудник
Nether Leggings=адские штаны
Nether Boots=адские ботинки
Nether Helmet=Незерский Шлем
Nether Chestplate=Незерский Нагрудник
Nether Leggings=Незерские Поножи
Nether Boots=Незерские Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_nether
Nether Helmet=Пекельний шолом
Nether Chestplate=Пекельна броня
Nether Leggings=Пекельні штани
Nether Boots=Пекельне взуття

View File

@@ -1,4 +1,4 @@
name = armor_nether
depends = 3d_armor
optional_depends = nether
description = Adds craftable wood armor.
description = Adds craftable nether armor.

View File

@@ -1,5 +1,5 @@
# textdomain: armor_steel
Steel Helmet=стальной шлем
Steel Chestplate=стальной нагрудник
Steel Leggings=стальные штаны
Steel Boots=стальные ботинки
Steel Helmet=Стальной Шлем
Steel Chestplate=Стальной Нагрудник
Steel Leggings=Стальные Поножи
Steel Boots=Стальные Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_steel
Steel Helmet=Сталевий шолом
Steel Chestplate=Сталева броня
Steel Leggings=Сталеві штани
Steel Boots=Сталеве взуття

View File

@@ -1,5 +1,5 @@
# textdomain: armor_wood
Wood Helmet=деревянный шлем
Wood Chestplate=деревянный нагрудник
Wood Leggings=деревянные штаны
Wood Boots=деревянные ботинки
Wood Helmet=Деревянный Шлем
Wood Chestplate=Деревянный Нагрудник
Wood Leggings=Деревянные Поножи
Wood Boots=Деревянные Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_wood
Wood Helmet=Дерев'яний шолом
Wood Chestplate=Дерев'яна броня
Wood Leggings=Дерев'яні штани
Wood Boots=Дерев'яне взуття

View File

@@ -1,13 +1,13 @@
# textdomain: shields
Admin Shield=щит админа
Wooden Shield=деревянный щит
Enhanced Wood Shield=усиленный деревянный щит
Cactus Shield=кактусовый щит
Enhanced Cactus Shield=усиленный кактусовый щит
Steel Shield=стальной щит
Bronze Shield=бронзовый щит
Diamond Shield=алмазный щит
Gold Shield=золотой щит
Mithril Shield=мифриловый щит
Crystal Shield=кристальный щит
Nether Shield=адский щит
Admin Shield=Щит Админа
Wooden Shield=Деревянный Щит
Enhanced Wood Shield=Улучшенный Деревянный Щит
Cactus Shield=Кактусовый Щит
Enhanced Cactus Shield=Улучшенный Кактусовый Щит
Steel Shield=Стальной Щит
Bronze Shield=Бронзовый Щит
Diamond Shield=Алмазный Щит
Gold Shield=Золотой Щит
Mithril Shield=Мифриловый Щит
Crystal Shield=Кристальный Щит
Nether Shield=Незерский Щит

View File

@@ -0,0 +1,13 @@
# textdomain: shields
Admin Shield=Щит адміна
Wooden Shield=Дерев'яний щит
Enhanced Wood Shield=Зміцнений дерев'яний щит
Cactus Shield=Кактусовий щит
Enhanced Cactus Shield=Зміцнений кактусовий щит
Steel Shield=Сталевий щит
Bronze Shield=Бронзовий щит
Diamond Shield=Діамантовий щит
Gold Shield=Золотий щит
Mithril Shield=Міфріловий щит
Crystal Shield=Кристальний щит
Nether Shield=Пекельний щит