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:
@@ -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
|
||||
|
||||
@@ -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": "Отображение времени"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user