Update Russian translations across multiple resource packs for improved localization, including GUI elements, item names, and configuration settings; add install-service.sh to .gitignore for better resource management.

This commit is contained in:
Leonid Pershin
2026-05-08 11:37:00 +03:00
parent fc65b08826
commit a30ccbc9b7
14 changed files with 362 additions and 164 deletions
+1
View File
@@ -37,6 +37,7 @@
!/Server/start.ps1
!/Server/sync-mods-from-client.ps1
!/Server/extract-missing-ru-translations.ps1
!/Server/install-service.sh
!/Server/start.sh
!/Server/variables.txt
!/Server/manifest.json
+197
View File
@@ -0,0 +1,197 @@
#!/usr/bin/env bash
# install-service.sh
# Создаёт systemd-сервис для запуска Minecraft сервера (через ./start.sh)
# и сразу его поднимает. Должен быть запущен от root.
#
# Использование:
# sudo ./install-service.sh
# sudo ./install-service.sh --name minecraft --user minecraft --dir /opt/minecraft
# sudo ./install-service.sh --uninstall
#
# Флаги:
# --name <имя> Имя systemd-сервиса (по умолчанию: minecraft)
# --user <user> От какого пользователя запускать сервер
# (по умолчанию: minecraft, будет создан если нет)
# --dir <путь> Каталог сервера (по умолчанию: каталог этого скрипта)
# --java-args <строка> Дополнительные JVM-аргументы (напр. "-Xms4G -Xmx8G")
# --admin-user <user> Доп. пользователь, который тоже должен иметь
# запись в каталог (для git pull и т.п.). Будет
# добавлен в группу сервиса, на каталог встанут
# g+rwX и setgid, чтобы новые файлы наследовали
# группу. Можно указать несколько раз.
# --uninstall Остановить, выключить и удалить сервис
# -h | --help Показать справку
set -euo pipefail
SERVICE_NAME="minecraft"
SERVICE_USER="minecraft"
SERVER_DIR="$(cd "$(dirname "$0")" && pwd)"
JAVA_ARGS=""
UNINSTALL=0
ADMIN_USERS=()
print_help() {
sed -n '2,27p' "$0" | sed 's/^# \{0,1\}//'
}
err() {
echo "Ошибка: $*" >&2
exit 1
}
while [[ $# -gt 0 ]]; do
case "$1" in
--name) SERVICE_NAME="$2"; shift 2 ;;
--user) SERVICE_USER="$2"; shift 2 ;;
--dir) SERVER_DIR="$2"; shift 2 ;;
--java-args) JAVA_ARGS="$2"; shift 2 ;;
--admin-user) ADMIN_USERS+=("$2"); shift 2 ;;
--uninstall) UNINSTALL=1; shift ;;
-h|--help) print_help; exit 0 ;;
*) err "Неизвестный аргумент: $1 (используйте --help)" ;;
esac
done
# 1. Проверка прав root
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
err "скрипт должен быть запущен от root. Используйте: sudo $0 $*"
fi
# 2. Проверка systemd
if ! command -v systemctl >/dev/null 2>&1; then
err "systemctl не найден. Этот скрипт работает только на системах с systemd."
fi
UNIT_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
# Удаление сервиса
if [[ "${UNINSTALL}" -eq 1 ]]; then
echo ">> Останавливаю и удаляю сервис ${SERVICE_NAME}..."
systemctl stop "${SERVICE_NAME}.service" 2>/dev/null || true
systemctl disable "${SERVICE_NAME}.service" 2>/dev/null || true
if [[ -f "${UNIT_FILE}" ]]; then
rm -f "${UNIT_FILE}"
echo " Удалён ${UNIT_FILE}"
fi
systemctl daemon-reload
systemctl reset-failed "${SERVICE_NAME}.service" 2>/dev/null || true
echo ">> Готово. Сервис ${SERVICE_NAME} удалён."
exit 0
fi
# 3. Проверка содержимого каталога сервера
[[ -d "${SERVER_DIR}" ]] || err "каталог сервера не найден: ${SERVER_DIR}"
[[ -f "${SERVER_DIR}/start.sh" ]] || err "не найден ${SERVER_DIR}/start.sh"
chmod +x "${SERVER_DIR}/start.sh" "${SERVER_DIR}/run.sh" 2>/dev/null || true
# 4. Создание пользователя при необходимости
if ! id -u "${SERVICE_USER}" >/dev/null 2>&1; then
echo ">> Создаю системного пользователя ${SERVICE_USER}..."
useradd --system \
--home-dir "${SERVER_DIR}" \
--shell /usr/sbin/nologin \
"${SERVICE_USER}"
else
echo ">> Пользователь ${SERVICE_USER} уже существует — пропускаю создание."
fi
# 5. Передача прав на каталог сервера
echo ">> Назначаю владельца каталога ${SERVER_DIR} -> ${SERVICE_USER}..."
chown -R "${SERVICE_USER}:${SERVICE_USER}" "${SERVER_DIR}"
# 5b. Доп. пользователи (для git pull / редактирования конфигов без sudo).
# Включаем их в группу сервиса, на каталог ставим g+rwX и setgid,
# чтобы новые файлы автоматически создавались с этой группой.
if [[ ${#ADMIN_USERS[@]} -gt 0 ]]; then
echo ">> Настраиваю групповой доступ для: ${ADMIN_USERS[*]}"
for au in "${ADMIN_USERS[@]}"; do
if ! id -u "${au}" >/dev/null 2>&1; then
echo " ! пользователь ${au} не существует — пропускаю"
continue
fi
usermod -aG "${SERVICE_USER}" "${au}"
echo " + ${au} добавлен в группу ${SERVICE_USER}"
# Чтобы git не ругался на 'dubious ownership' под этим юзером
if command -v sudo >/dev/null 2>&1; then
sudo -u "${au}" git config --global --add safe.directory "${SERVER_DIR}" \
2>/dev/null || true
fi
done
# g+rwX на всё содержимое + setgid на каталоги
chmod -R g+rwX "${SERVER_DIR}"
find "${SERVER_DIR}" -type d -exec chmod g+s {} +
echo " Установлены g+rwX и setgid на ${SERVER_DIR}"
echo " ВАЖНО: после добавления в группу нужно перелогиниться,"
echo " либо выполнить 'newgrp ${SERVICE_USER}' в текущей сессии."
fi
# 6. Проверка EULA — без неё сервер встанет ожидая ввод (а в systemd ввода нет)
EULA_FILE="${SERVER_DIR}/eula.txt"
if [[ ! -f "${EULA_FILE}" ]] || ! grep -qE '^\s*eula\s*=\s*true' "${EULA_FILE}"; then
cat >&2 <<EOF
Внимание: ${EULA_FILE} отсутствует или eula=false.
В systemd нет интерактивного stdin, поэтому сервер не сможет спросить согласие.
Подтвердите EULA вручную перед стартом сервиса:
echo 'eula=true' | sudo tee ${EULA_FILE}
Скрипт продолжит и создаст unit, но сервис стартанёт только после принятия EULA.
EOF
fi
# 7. Генерация systemd unit-файла
echo ">> Создаю ${UNIT_FILE}..."
cat > "${UNIT_FILE}" <<EOF
[Unit]
Description=Minecraft Server (${SERVICE_NAME})
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=${SERVICE_USER}
Group=${SERVICE_USER}
WorkingDirectory=${SERVER_DIR}
Environment=WAIT_FOR_USER_INPUT=false
$( [[ -n "${JAVA_ARGS}" ]] && echo "Environment=JAVA_ARGS=${JAVA_ARGS}" )
ExecStart=/usr/bin/env bash ${SERVER_DIR}/start.sh
Restart=on-failure
RestartSec=10s
TimeoutStopSec=120
KillSignal=SIGINT
StandardOutput=journal
StandardError=journal
# Безопасность
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only
ReadWritePaths=${SERVER_DIR}
[Install]
WantedBy=multi-user.target
EOF
chmod 644 "${UNIT_FILE}"
# 8. Активация сервиса
echo ">> Перечитываю systemd, включаю и запускаю сервис..."
systemctl daemon-reload
systemctl enable "${SERVICE_NAME}.service"
systemctl restart "${SERVICE_NAME}.service"
sleep 2
echo ""
echo "===================================================================="
systemctl --no-pager --full status "${SERVICE_NAME}.service" || true
echo "===================================================================="
echo ""
echo "Готово. Полезные команды:"
echo " sudo systemctl status ${SERVICE_NAME}"
echo " sudo systemctl stop ${SERVICE_NAME}"
echo " sudo systemctl restart ${SERVICE_NAME}"
echo " sudo journalctl -u ${SERVICE_NAME} -f # живые логи"
echo " sudo $0 --uninstall # удалить сервис"
@@ -1,4 +1,4 @@
{
"options.verticalstretch": "Vertical render dist scale",
"options.horizontalstretch": "Horizontal render dist scale"
"options.verticalstretch": "Масштаб вертикальной дальности прорисовки",
"options.horizontalstretch": "Масштаб горизонтальной дальности прорисовки"
}
@@ -1,32 +1,32 @@
{
"catalogue.gui.no_selection": "No mod selected...",
"catalogue.gui.mod_list": "Mods",
"catalogue.gui.search": "Search",
"catalogue.gui.config": "Config",
"catalogue.gui.open_mods_folder": "Open Mods Folder",
"catalogue.gui.licenses": "License(s): %s",
"catalogue.gui.authors": "Author(s): %s",
"catalogue.gui.contributors": "Contributor(s): %s",
"catalogue.gui.credits": "Credits: %s",
"catalogue.gui.version": "Version: %s",
"catalogue.gui.update_available": "Update: %s",
"catalogue.gui.info": "This menu is provided by Catalogue. Click here to open the CurseForge page for this mod!",
"catalogue.gui.favourite": "Mark as Favorite",
"catalogue.gui.remove_favourite": "Remove as Favorite",
"catalogue.gui.options": "Options",
"catalogue.gui.filters": "Filters",
"catalogue.gui.filters.configs_only": "Mods with Configs",
"catalogue.gui.filters.updates_only": "Mods with Updates",
"catalogue.gui.filters.favourites": "Favorites Only",
"catalogue.gui.sort": "Sort",
"catalogue.gui.sort.alphabetically": "A to Z",
"catalogue.gui.sort.alphabetically_reverse": "Z to A",
"catalogue.gui.sort.favourites_first": "Favorites First",
"catalogue.gui.hide_libraries": "Hide Libraries",
"catalogue.gui.no_mods": "No mods...",
"catalogue.gui.mod_count": "%s Mods",
"catalogue.gui.library_count": "%s Libraries",
"catalogue.gui.advanced_search.info": "Advanced search queries will ignore any active filters",
"catalogue.gui.show_dependencies": "Show Dependencies",
"catalogue.gui.show_dependents": "Show Dependents"
"catalogue.gui.no_selection": "Мод не выбран...",
"catalogue.gui.mod_list": "Моды",
"catalogue.gui.search": "Поиск",
"catalogue.gui.config": "Настройки",
"catalogue.gui.open_mods_folder": "Открыть папку модов",
"catalogue.gui.licenses": "Лицензия(и): %s",
"catalogue.gui.authors": "Автор(ы): %s",
"catalogue.gui.contributors": "Участник(и): %s",
"catalogue.gui.credits": "Благодарности: %s",
"catalogue.gui.version": "Версия: %s",
"catalogue.gui.update_available": "Обновление: %s",
"catalogue.gui.info": "Это меню предоставляет Catalogue. Нажми здесь, чтобы открыть страницу этого мода на CurseForge!",
"catalogue.gui.favourite": "Добавить в избранное",
"catalogue.gui.remove_favourite": "Убрать из избранного",
"catalogue.gui.options": "Параметры",
"catalogue.gui.filters": "Фильтры",
"catalogue.gui.filters.configs_only": "Моды с настройками",
"catalogue.gui.filters.updates_only": "Моды с обновлениями",
"catalogue.gui.filters.favourites": "Только избранные",
"catalogue.gui.sort": "Сортировка",
"catalogue.gui.sort.alphabetically": "От А до Я",
"catalogue.gui.sort.alphabetically_reverse": "От Я до А",
"catalogue.gui.sort.favourites_first": "Сначала избранные",
"catalogue.gui.hide_libraries": "Скрыть библиотеки",
"catalogue.gui.no_mods": "Модов нет...",
"catalogue.gui.mod_count": "%s модов",
"catalogue.gui.library_count": "%s библиотек",
"catalogue.gui.advanced_search.info": "Расширенные поисковые запросы игнорируют активные фильтры",
"catalogue.gui.show_dependencies": "Показать зависимости",
"catalogue.gui.show_dependents": "Показать зависимые моды"
}
@@ -1,6 +1,6 @@
{
"defaultoptions.configuration.defaultDifficulty": "Default Difficulty",
"defaultoptions.configuration.defaultDifficulty.tooltip": "The default difficulty selected for newly created worlds.",
"defaultoptions.configuration.lockDifficulty": "Lock Difficulty",
"defaultoptions.configuration.lockDifficulty.tooltip": "Set to true if the difficulty for new world's should be locked to the specific default. This cannot be unlocked by players without external tools! Probably a bad idea. I don't recommend. Why am I adding this option?"
"defaultoptions.configuration.defaultDifficulty": "Сложность по умолчанию",
"defaultoptions.configuration.defaultDifficulty.tooltip": "Сложность по умолчанию для новых миров.",
"defaultoptions.configuration.lockDifficulty": "Заблокировать сложность",
"defaultoptions.configuration.lockDifficulty.tooltip": "Если включено, сложность новых миров будет навсегда зафиксирована на выбранном значении. Игроки не смогут снять блокировку без сторонних инструментов."
}
@@ -1,94 +1,94 @@
{
"block.dtbop.dead_branch": "Dead Tree",
"block.dtbop.fir_branch": "Fir Tree",
"block.dtbop.hellbark_branch": "Hellbark Tree",
"block.dtbop.jacaranda_branch": "Jacaranda Tree",
"block.dtbop.magic_branch": "Magic Tree",
"block.dtbop.mahogany_branch": "Mahogany Tree",
"block.dtbop.maple_branch": "Maple Tree",
"block.dtbop.palm_branch": "Palm Tree",
"block.dtbop.pine_branch": "Pine Tree",
"block.dtbop.redwood_branch": "Redwood Tree",
"block.dtbop.umbran_branch": "Umbran Tree",
"block.dtbop.willow_branch": "Willow Tree",
"item.dtbop.aspen_seed": "Aspen Catkin",
"item.dtbop.dark_poplar_seed": "Dark Poplar Catkin",
"item.dtbop.dying_seed": "Dying Acorn",
"item.dtbop.fir_seed": "Fir Cone",
"item.dtbop.flowering_oak_seed": "Flowering Acorn",
"item.dtbop.glowshroom_seed": "Glowshroom Cap",
"item.dtbop.hellbark_seed": "Hellbark Seed",
"item.dtbop.jacaranda_seed": "Jacaranda Pod",
"item.dtbop.magic_poplar_seed": "Magic Poplar Catkin",
"item.dtbop.mahogany_seed": "Mahogany Pod",
"item.dtbop.mega_fir_seed": "Mega Fir Cone",
"item.dtbop.mega_umbran_seed": "Mega Umbran Cone",
"item.dtbop.orange_maple_seed": "Orange Maple Samara",
"item.dtbop.palm_seed": "Palm Seed",
"item.dtbop.pine_seed": "Pine Cone",
"item.dtbop.poplar_seed": "Poplar Catkin",
"item.dtbop.rainbow_birch_seed": "Rainbow Birch Catkin",
"item.dtbop.red_maple_seed": "Red Maple Samara",
"item.dtbop.redwood_seed": "Redwood Cone",
"item.dtbop.snowblossom_seed": "Snowblossom Pit",
"item.dtbop.spruce_poplar_seed": "Spruce Poplar Catkin",
"item.dtbop.toadstool_seed": "Toadstool Cap",
"item.dtbop.umbran_seed": "Umbran Cone",
"item.dtbop.willow_seed": "Willow Catkin",
"item.dtbop.yellow_maple_seed": "Yellow Maple Samara",
"species.dtbop.acacia_twiglet": "Acacia Twiglet",
"species.dtbop.acacia_undergrowth": "Acacia Undergrowth",
"species.dtbop.alps_spruce": "Alps Spruce",
"species.dtbop.aspen": "Aspen",
"species.dtbop.cherry_twiglet": "Cherry Twiglet",
"species.dtbop.cypress_willow": "Cypress Willow",
"species.dtbop.dark_oak_twiglet": "Dark Oak Twiglet",
"species.dtbop.dark_poplar": "Dark Poplar",
"species.dtbop.dead": "Dead",
"species.dtbop.dying": "Dying",
"species.dtbop.fir": "Fir",
"species.dtbop.flowering_apple_oak": "Flowering Apple Oak",
"species.dtbop.flowering_oak": "Flowering Oak",
"species.dtbop.flowering_oak_undergrowth": "Flowering Oak Undergrowth",
"species.dtbop.glowshroom": "Glowshroom",
"species.dtbop.hellbark": "Hellbark",
"species.dtbop.hellbark_bush": "Hellbark Bush",
"species.dtbop.infested": "Infested",
"species.dtbop.infested_oak_undergrowth": "Infested Oak Undergrowth",
"species.dtbop.jacaranda": "Jacaranda",
"species.dtbop.jungle_twiglet": "Jungle Twiglet",
"species.dtbop.large_magic_poplar": "Large Magic Poplar",
"species.dtbop.magic_poplar": "Magic Poplar",
"species.dtbop.mahogany": "Mahogany",
"species.dtbop.mangrove_twiglet": "Mangrove Twiglet",
"species.dtbop.maple_twiglet": "Maple Twiglet",
"species.dtbop.mega_dark_oak": "Mega Dark Oak",
"species.dtbop.mega_fir": "Mega Fir",
"species.dtbop.mega_umbran": "Mega Umbran",
"species.dtbop.mini_brown_mushroom": "Mini Brown Mushroom",
"species.dtbop.oak_twiglet": "Oak Twiglet",
"species.dtbop.orange_maple": "Orange Maple",
"species.dtbop.palm": "Palm",
"species.dtbop.pine": "Pine",
"species.dtbop.poplar": "Poplar",
"species.dtbop.rainbow_birch": "Rainbow Birch",
"species.dtbop.red_maple": "Red Maple",
"species.dtbop.redwood": "Redwood",
"species.dtbop.short_jungle": "Short Jungle",
"species.dtbop.silk": "Silk",
"species.dtbop.silk_undergrowth": "Silk Undergrowth",
"species.dtbop.small_redwood": "Small Redwood",
"species.dtbop.snowblossom": "Snowblossom",
"species.dtbop.snowblossom_twiglet": "Snowblossom Twiglet",
"species.dtbop.sparse_acacia": "Sparse Acacia",
"species.dtbop.sparse_oak": "Sparse Oak",
"species.dtbop.spruce_poplar": "Spruce Poplar",
"species.dtbop.spruce_twiglet": "Spruce Twiglet",
"species.dtbop.spruce_undergrowth": "Spruce Undergrowth",
"species.dtbop.tall_dead": "Tall Dead",
"species.dtbop.tall_dying": "Tall Dying",
"species.dtbop.toadstool": "Toadstool",
"species.dtbop.umbran": "Umbran",
"species.dtbop.willow": "Willow",
"species.dtbop.yellow_maple": "Yellow Maple"
"block.dtbop.dead_branch": "Мертвое дерево",
"block.dtbop.fir_branch": "Пихта",
"block.dtbop.hellbark_branch": "Хеллбарк",
"block.dtbop.jacaranda_branch": "Жакаранда",
"block.dtbop.magic_branch": "Магическое дерево",
"block.dtbop.mahogany_branch": "Махагони",
"block.dtbop.maple_branch": "Клен",
"block.dtbop.palm_branch": "Пальма",
"block.dtbop.pine_branch": "Сосна",
"block.dtbop.redwood_branch": "Секвойя",
"block.dtbop.umbran_branch": "Умбран",
"block.dtbop.willow_branch": "Ива",
"item.dtbop.aspen_seed": "Сережка осины",
"item.dtbop.dark_poplar_seed": "Сережка темного тополя",
"item.dtbop.dying_seed": "Увядающий желудь",
"item.dtbop.fir_seed": "Шишка пихты",
"item.dtbop.flowering_oak_seed": "Цветущий желудь",
"item.dtbop.glowshroom_seed": "Шляпка светогриба",
"item.dtbop.hellbark_seed": "Семена хеллбарка",
"item.dtbop.jacaranda_seed": "Стручок жакаранды",
"item.dtbop.magic_poplar_seed": "Сережка магического тополя",
"item.dtbop.mahogany_seed": "Стручок махагони",
"item.dtbop.mega_fir_seed": "Шишка мега-пихты",
"item.dtbop.mega_umbran_seed": "Шишка мега-умбрана",
"item.dtbop.orange_maple_seed": "Семянка оранжевого клена",
"item.dtbop.palm_seed": "Семена пальмы",
"item.dtbop.pine_seed": "Шишка сосны",
"item.dtbop.poplar_seed": "Сережка тополя",
"item.dtbop.rainbow_birch_seed": "Сережка радужной березы",
"item.dtbop.red_maple_seed": "Семянка красного клена",
"item.dtbop.redwood_seed": "Шишка секвойи",
"item.dtbop.snowblossom_seed": "Косточка снежноцвета",
"item.dtbop.spruce_poplar_seed": "Сережка елового тополя",
"item.dtbop.toadstool_seed": "Шляпка мухомора",
"item.dtbop.umbran_seed": "Шишка умбрана",
"item.dtbop.willow_seed": "Сережка ивы",
"item.dtbop.yellow_maple_seed": "Семянка желтого клена",
"species.dtbop.acacia_twiglet": "Саженец акации",
"species.dtbop.acacia_undergrowth": "Подлесок акации",
"species.dtbop.alps_spruce": "Альпийская ель",
"species.dtbop.aspen": "Осина",
"species.dtbop.cherry_twiglet": "Саженец вишни",
"species.dtbop.cypress_willow": "Кипарисовая ива",
"species.dtbop.dark_oak_twiglet": "Саженец темного дуба",
"species.dtbop.dark_poplar": "Темный тополь",
"species.dtbop.dead": "Мертвое",
"species.dtbop.dying": "Увядающее",
"species.dtbop.fir": "Пихта",
"species.dtbop.flowering_apple_oak": "Цветущий яблоневый дуб",
"species.dtbop.flowering_oak": "Цветущий дуб",
"species.dtbop.flowering_oak_undergrowth": "Подлесок цветущего дуба",
"species.dtbop.glowshroom": "Светогриб",
"species.dtbop.hellbark": "Хеллбарк",
"species.dtbop.hellbark_bush": "Куст хеллбарка",
"species.dtbop.infested": "Зараженное",
"species.dtbop.infested_oak_undergrowth": "Подлесок зараженного дуба",
"species.dtbop.jacaranda": "Жакаранда",
"species.dtbop.jungle_twiglet": "Саженец джунглевого дерева",
"species.dtbop.large_magic_poplar": "Большой магический тополь",
"species.dtbop.magic_poplar": "Магический тополь",
"species.dtbop.mahogany": "Махагони",
"species.dtbop.mangrove_twiglet": "Саженец мангрового дерева",
"species.dtbop.maple_twiglet": "Саженец клена",
"species.dtbop.mega_dark_oak": "Мега темный дуб",
"species.dtbop.mega_fir": "Мега-пихта",
"species.dtbop.mega_umbran": "Мега-умбран",
"species.dtbop.mini_brown_mushroom": "Мини-коричневый гриб",
"species.dtbop.oak_twiglet": "Саженец дуба",
"species.dtbop.orange_maple": "Оранжевый клен",
"species.dtbop.palm": "Пальма",
"species.dtbop.pine": "Сосна",
"species.dtbop.poplar": "Тополь",
"species.dtbop.rainbow_birch": "Радужная береза",
"species.dtbop.red_maple": "Красный клен",
"species.dtbop.redwood": "Секвойя",
"species.dtbop.short_jungle": "Низкое джунглевое дерево",
"species.dtbop.silk": "Шелковое",
"species.dtbop.silk_undergrowth": "Шелковый подлесок",
"species.dtbop.small_redwood": "Малая секвойя",
"species.dtbop.snowblossom": "Снежноцвет",
"species.dtbop.snowblossom_twiglet": "Саженец снежноцвета",
"species.dtbop.sparse_acacia": "Редкая акация",
"species.dtbop.sparse_oak": "Редкий дуб",
"species.dtbop.spruce_poplar": "Еловый тополь",
"species.dtbop.spruce_twiglet": "Саженец ели",
"species.dtbop.spruce_undergrowth": "Еловый подлесок",
"species.dtbop.tall_dead": "Высокое мертвое дерево",
"species.dtbop.tall_dying": "Высокое увядающее дерево",
"species.dtbop.toadstool": "Мухомор",
"species.dtbop.umbran": "Умбран",
"species.dtbop.willow": "Ива",
"species.dtbop.yellow_maple": "Желтый клен"
}
@@ -1,28 +1,28 @@
{
"enhanced_boss_bar.minecraft.wither" : "Wither",
"enhanced_boss_bar.minecraft.ender_dragon" : "Ender Dragon",
"enhanced_boss_bar.minecraft.wither" : "Иссушитель",
"enhanced_boss_bar.minecraft.ender_dragon" : "Эндер-дракон",
"enhanced_boss_bar.cataclysm.ignis" : "Ignis",
"enhanced_boss_bar.cataclysm.ender_guardian" : "Ender Guardian",
"enhanced_boss_bar.cataclysm.netherite_monstrosity" : "Netherite Monstrosity",
"enhanced_boss_bar.cataclysm.the_harbinger" : "The Harbinger",
"enhanced_boss_bar.cataclysm.the_leviathan" : "The Leviathan",
"enhanced_boss_bar.mass_destruction.night_lich" : "Night Lich",
"enhanced_boss_bar.mass_destruction.nether_gauntlet" : "Nether Gauntlet",
"enhanced_boss_bar.mass_destruction.void_blossom" : "Void Blossom",
"enhanced_boss_bar.cataclysm.the_harbinger" : "Предвестник",
"enhanced_boss_bar.cataclysm.the_leviathan" : "Левиафан",
"enhanced_boss_bar.mass_destruction.night_lich" : "Ночной лич",
"enhanced_boss_bar.mass_destruction.nether_gauntlet" : "Незерская рукавица",
"enhanced_boss_bar.mass_destruction.void_blossom" : "Цветок Пустоты",
"enhanced_boss_bar.mass_destruction.obsidilith" : "Obsidilith",
"enhanced_boss_bar.mowziesmobs.ferrous_wroughtnaut" : "Ferrous Wroughtnaut",
"enhanced_boss_bar.mowziesmobs.frostmaw" : "Frostmaw",
"enhanced_boss_bar.mowziesmobs.ferrous_wroughtnaut" : "Железный Вротнаут",
"enhanced_boss_bar.mowziesmobs.frostmaw" : "Фростмоу",
"enhanced_boss_bar.mowziesmobs.umvuthi" : "Umvuthi",
"enhanced_boss_bar.witherstormmod.witherstorm" : "Wither Storm",
"enhanced_boss_bar.witherstormmod.witherstorm" : "Шторм Иссушителя",
"enhanced_boss_bar.meetyourfight.bellringer" : "Bellringer",
"enhanced_boss_bar.meetyourfight.swampjaw" : "Swampjaw",
"enhanced_boss_bar.alexsmobs.void_worm" : "Void Worm",
"enhanced_boss_bar.aether.slider" : "Slider",
"enhanced_boss_bar.aether.valkyrie_queen" : "Valkyrie Queen",
"enhanced_boss_bar.aether.sun_spirit" : "Sun Spirit",
"enhanced_boss_bar.aether.slider" : "Слайдер",
"enhanced_boss_bar.aether.valkyrie_queen" : "Королева валькирий",
"enhanced_boss_bar.aether.sun_spirit" : "Дух солнца",
"enhanced_boss_bar.config.title" : "Enhanced Boss Bar Config",
"enhanced_boss_bar.config.subtitle" : "Bosses",
"enhanced_boss_bar.config.title" : "Настройки Enhanced Boss Bar",
"enhanced_boss_bar.config.subtitle" : "Боссы",
"enhanced_boss_bar.config.minecraft" : "Minecraft",
"enhanced_boss_bar.config.cataclysm" : "L'Ender Cataclysm",
"enhanced_boss_bar.config.mass_destruction" : "Bosses of Mass Destruction",
@@ -1,3 +1,3 @@
{
"block.fastpaintings.painting": "Painting"
"block.fastpaintings.painting": "Картина"
}
@@ -1,4 +1,4 @@
{
"globalpacks.source.global": "[Global] %s",
"globalpacks.source.global_opt": "[Global (Optional)] %s"
"globalpacks.source.global": "[Глобальный] %s",
"globalpacks.source.global_opt": "[Глобальный (Необязательный)] %s"
}
@@ -1,13 +1,13 @@
{
"entity.goblintraders.goblin_trader": "Goblin Trader",
"entity.goblintraders.vein_goblin_trader": "Vein Goblin Trader",
"subtitle.goblintraders.goblin_trader.annoyed_grunt": "Annoyed Grunt",
"subtitle.goblintraders.goblin_trader.idle_grunt": "Idle Grunt",
"item.goblintraders.goblin_trader_spawn_egg": "Goblin Trader Spawn Egg",
"item.goblintraders.vein_goblin_trader_spawn_egg": "Vein Goblin Trader Spawn Egg",
"stat.goblintraders.trade_with_goblin": "Traded with Goblins",
"custom.goblintraders.tuned": "Goblin Tuned",
"custom.goblintraders.lore": "A special item reengineered by the goblin with enhanced attributes",
"custom.goblintraders.moon_boots": "Moon Boots",
"custom.goblintraders.mystery_map": "Mystery Map"
"entity.goblintraders.goblin_trader": "Гоблин-торговец",
"entity.goblintraders.vein_goblin_trader": "Рудный гоблин-торговец",
"subtitle.goblintraders.goblin_trader.annoyed_grunt": "Недовольное ворчание",
"subtitle.goblintraders.goblin_trader.idle_grunt": "Ворчание",
"item.goblintraders.goblin_trader_spawn_egg": "Яйцо призыва гоблина-торговца",
"item.goblintraders.vein_goblin_trader_spawn_egg": "Яйцо призыва рудного гоблина-торговца",
"stat.goblintraders.trade_with_goblin": "Сделок с гоблинами",
"custom.goblintraders.tuned": "Гоблинская доработка",
"custom.goblintraders.lore": "Особый предмет, доработанный гоблином и получивший улучшенные характеристики",
"custom.goblintraders.moon_boots": "Лунные сапоги",
"custom.goblintraders.mystery_map": "Таинственная карта"
}
@@ -1,3 +1,3 @@
{
"justenoughprofessions.professions.title": "Professions"
"justenoughprofessions.professions.title": "Профессии"
}
@@ -1,4 +1,4 @@
{
"leaky.removedItems": ". Cleaned items automatically to prevent lag",
"leaky.detect": "Detected: %d stacked items in %s at: "
"leaky.removedItems": ". Предметы автоматически очищены для предотвращения лагов",
"leaky.detect": "Обнаружено: %d сложенных предметов в %s в: "
}
@@ -1,5 +1,5 @@
{
"simplytooltips.key.category": "Simply Tooltips",
"key.simplytooltips.cycle_tab": "Cycle Tooltip Tab",
"key.simplytooltips.capture_gif": "Capture Tooltip GIF"
"key.simplytooltips.cycle_tab": "Переключить вкладку подсказки",
"key.simplytooltips.capture_gif": "Записать GIF подсказки"
}
@@ -1,4 +1,4 @@
{
"key.time_on_display.toggle": "Toggle Time Display",
"key.category.time_on_display.overlay": "TimeOnDisplay"
"key.time_on_display.toggle": "Переключить отображение времени",
"key.category.time_on_display.overlay": "Отображение времени"
}