- GhostData: worldName field, format v4; GhostManager stores last N runs per player (ghosts/<uuid>/<ts>.ghost)
- GhostService: per-player recording (start on run start, every tick, finalize on fall), gated by ghost-mode.enabled + per-player toggle
- PlayerGhost: packet-based fake-player NPC with viewer skin (NMS via remapNms gradle task, reflection send, graceful degradation)
- GhostReplay: teleport viewer to run start, replay frames via PlayerGhost, restore on finish
- /lp replay [index] command + tab completion; settings menu ghost_recording toggle (persisted disk/SQL)
- config: ghost-mode.{enabled,max-runs}, remove dead show-top/transparency + GHOST_* statics
- tests: GhostData v4 round-trip, GhostManager eviction/ordering, yawToFixed (79 total)
439 lines
19 KiB
YAML
439 lines
19 KiB
YAML
# Русский (Russian, ru)
|
||
# By loki
|
||
# Материалы должны быть из: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
|
||
# Цвета: hex &#RRGGBB и legacy & (см. .cursor/rules/locale-and-colors.mdc)
|
||
|
||
name: "Русский"
|
||
|
||
main:
|
||
name: "&#FFFFFFПаркур"
|
||
|
||
play:
|
||
name: "&#FFFFFFИграть"
|
||
|
||
item:
|
||
material: "sugar_cane"
|
||
name: "�D4FF&lИграть"
|
||
lore: ""
|
||
|
||
single:
|
||
name: "&#FFFFFFОдиночная игра"
|
||
|
||
item:
|
||
material: "ender_pearl"
|
||
name: "�D4FF&lОдиночная игра"
|
||
lore: ""
|
||
|
||
default:
|
||
material: "barrel"
|
||
name: "�D4FF&lОбычный"
|
||
lore: "񢩈Стандартный режим игры."
|
||
|
||
speedrun:
|
||
material: "clock"
|
||
name: "�D4FF&lСпидран"
|
||
lore: "񢩈Гонка со временем! Блоки||񢩈исчезают после того, как вы на них встанете."
|
||
|
||
gravity-shift:
|
||
material: "potion"
|
||
name: "�D4FF&lГравитационный сдвиг"
|
||
lore: "񢩈Случайные эффекты зелий||񢩈каждые несколько прыжков"
|
||
|
||
invisible-barrier:
|
||
material: "barrier"
|
||
name: "&#FF44FF&lНевидимый барьер"
|
||
lore: "񢩈Невидимые блоки с||񢩈цветными контурами из частиц"
|
||
|
||
elytra:
|
||
name: "&#FFFFFFЭлитры"
|
||
|
||
elytra:
|
||
material: "elytra"
|
||
name: "�D4FF&lЭлитры"
|
||
lore: "񢩈Летай сквозь кольца||񢩈на элитрах."
|
||
|
||
speeddemon:
|
||
material: "elytra"
|
||
name: "�D4FF&lСкорость-демон"
|
||
lore: "񢩈Разгонись до максимальной||񢩈скорости на элитрах."
|
||
|
||
minspeed:
|
||
material: "elytra"
|
||
name: "�D4FF&lМин. скорость"
|
||
lore: "񢩈Держи минимальную скорость||񢩈и лети как можно дальше."
|
||
|
||
timetrial:
|
||
material: "elytra"
|
||
name: "�D4FF&lГонка на время"
|
||
lore: "񢩈Достигни целевого счёта||񢩈как можно быстрее."
|
||
|
||
close:
|
||
material: "elytra"
|
||
name: "�D4FF&lБлизко"
|
||
lore: "񢩈Летай сквозь плоские кольца||񢩈расположенные вплотную."
|
||
|
||
obstacle:
|
||
material: "barrier"
|
||
name: "�D4FF&lПрепятствия"
|
||
lore: "񢩈Облетай препятствия,||񢩈появляющиеся на трассе."
|
||
|
||
spectator:
|
||
name: "&#FFFFFFНаблюдатель"
|
||
|
||
join: "�D4FFТеперь вы наблюдатель. Используйте \"/parkour\" чтобы выйти/сменить режим."
|
||
action_bar: "�D4FFВы наблюдатель &#A0A0A0• �D4FFИспользуйте \"/parkour\" чтобы выйти."
|
||
|
||
other_join: "ᤀ&l+ &r&#A0A0A0%s начал наблюдать за вами"
|
||
other_leave: "&#FF4444&l- &r&#A0A0A0%s перестал наблюдать за вами"
|
||
|
||
item:
|
||
material: "glass"
|
||
name: "�D4FF&lНаблюдатель"
|
||
lore: ""
|
||
|
||
head:
|
||
material: ""
|
||
name: "�D4FF&l%s"
|
||
lore: ""
|
||
|
||
multi:
|
||
name: "&#FFFFFFМульти"
|
||
|
||
duels:
|
||
item:
|
||
material: "nether_star"
|
||
name: "&#FF6464&lДуэли"
|
||
lore: "&#A0A0A0Гонка до цели!||&#A0A0A0У каждого игрока своя трасса"
|
||
start:
|
||
material: "white_banner"
|
||
name: "�D4FF&lДуэли"
|
||
lore: ""
|
||
go: "7FF55&lВПЕРЁД!"
|
||
name: "&#FFFFFFДуэли"
|
||
menu_empty: "&#A0A0A0Сейчас нет открытых дуэлей."
|
||
overview: "&#FFD700&l%s &#A0A0A0победил в дуэли! Время: &#FFFFFF%s"
|
||
place: "HB3#%s &#A0A0A0%s 񢩈- &#A0A0A0%s"
|
||
victory: "7FF55&lПОБЕДА!"
|
||
loss: "&#FF4444&lПОРАЖЕНИЕ"
|
||
|
||
community:
|
||
name: "&#FFFFFFСообщество"
|
||
|
||
item:
|
||
material: "oak_boat"
|
||
name: "�D4FF&lСообщество"
|
||
lore: ""
|
||
|
||
leaderboards:
|
||
name: "&#FFFFFFТаблица лидеров"
|
||
|
||
item:
|
||
material: "gold_nugget"
|
||
name: "�D4FF&lТаблица лидеров"
|
||
lore: ""
|
||
|
||
sort:
|
||
material: "bookshelf"
|
||
name: "�D4FF&lСортировка по %s"
|
||
lore: ""
|
||
values: ["очкам", "времени", "сложности"]
|
||
|
||
head:
|
||
material: ""
|
||
name: "�D4FF&l#%r - %p"
|
||
lore: "�D4FFОчки: &#A0A0A0%s||�D4FFВремя: &#A0A0A0%t||�D4FFСложность: &#A0A0A0%d񢩈/1.0"
|
||
|
||
settings:
|
||
name: "&#FFFFFFНастройки"
|
||
|
||
item:
|
||
material: "comparator"
|
||
name: "�D4FF&lНастройки"
|
||
lore: ""
|
||
|
||
lang:
|
||
name: "&#FFFFFFЯзык"
|
||
|
||
item:
|
||
material: "writable_book"
|
||
name: "�D4FF&lЯзык"
|
||
lore: "񢩈Текущий: �D4FF&l%s"
|
||
|
||
chat:
|
||
material: "crossbow"
|
||
name: "�D4FF&lЧат"
|
||
lore: "񢩈Текущий: �D4FF&l%s||񢩈Выберите, с кем вы можете общаться"
|
||
values: ["только лобби", "только игроки", "публичный"]
|
||
|
||
formats:
|
||
lobby: "�D4FF(Лобби) �D4FF%s 񢩈> &#A0A0A0%s"
|
||
players: "�D4FF(Игроки) �D4FF%s 񢩈> &#A0A0A0%s"
|
||
|
||
parkour_settings:
|
||
|
||
enabled: "�D4FF&l✔"
|
||
disabled: "&#FF4444&l✘"
|
||
|
||
item:
|
||
material: "redstone"
|
||
name: "�D4FF&lНастройки паркура"
|
||
lore: "񢩈Измените внешний вид вашего паркура."
|
||
|
||
items:
|
||
|
||
no_change:
|
||
material: "barrier"
|
||
name: "B0000&lВы не можете изменить это сейчас!"
|
||
lore: "&#A0A0A0У вас есть очки выше 0,||&#A0A0A0что означает, что вы не можете изменить эту настройку."
|
||
|
||
styles:
|
||
name: "&#FFFFFFСтили"
|
||
|
||
style_item:
|
||
material: ""
|
||
name: "&#FFFFFF&l%s"
|
||
lore: "�D4FFКатегория: &#A0A0A0%s"
|
||
|
||
item:
|
||
material: "crafting_table"
|
||
name: "�D4FF&lСтиль"
|
||
lore: "�D4FFТекущий: &#A0A0A0%s||&#A0A0A0Выберите, какие блоки будут использоваться."
|
||
|
||
leads:
|
||
material: "feather"
|
||
name: "�D4FF&lОпережение"
|
||
lore: "�D4FFТекущее: &#A0A0A0%s блоков||&#A0A0A0Сколько блоков будет||&#A0A0A0сгенерировано перед вами."
|
||
|
||
time:
|
||
material: "clock"
|
||
name: "�D4FF&lВремя"
|
||
lore: "�D4FFТекущее: &#A0A0A0%s||&#A0A0A0Ваше текущее визуальное время."
|
||
|
||
schematics:
|
||
material: ""
|
||
name: "�D4FF&lСложность схематик"
|
||
lore: "�D4FFТекущая: &#A0A0A0%s||&#A0A0A0Сложность схематик"
|
||
values: ["&#FF4444выкл", "�D4FFлегко", "&#FFFF00средне", "�D4FFсложно", "B0000очень сложно"]
|
||
|
||
scoreboard:
|
||
material: ""
|
||
name: "Показывать табло"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Если включено, показывает табло."
|
||
|
||
fall_message:
|
||
item:
|
||
material: ""
|
||
name: "Показывать сообщение о падении"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Если включено, показывает сообщение при падении||&#A0A0A0с дополнительной информацией."
|
||
|
||
divider: "񢩈&m-----------------------------------"
|
||
score: "�D4FF&lОчки &r&#FFFFFF%s"
|
||
time: "�D4FF&lВремя &r&#FFFFFF%s"
|
||
high_score: "�D4FF&lРекорд &r&#FFFFFF%s"
|
||
|
||
formats:
|
||
miss: "&#A0A0A0Вы не достигли своего рекорда на %s очков!"
|
||
beat: "&#A0A0A0Вы побили свой рекорд на %s очков!"
|
||
tied: "&#A0A0A0Вы повторили свой рекорд!"
|
||
|
||
particles:
|
||
material: ""
|
||
name: "Показывать частицы"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Если включено, каждый сгенерированный блок||&#A0A0A0будет показывать частицы."
|
||
|
||
sound:
|
||
material: ""
|
||
name: "Воспроизводить звуки"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Если включено, каждый сгенерированный блок||&#A0A0A0будет воспроизводить звук."
|
||
|
||
ghost_recording:
|
||
material: ""
|
||
name: "Записывать призрачные забеги"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Если включено, ваши забеги записываются,||&#A0A0A0чтобы вы могли их повторить позже."
|
||
|
||
special_blocks:
|
||
material: ""
|
||
name: "Использовать специальные блоки"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Если включено, использует специальные блоки, такие как лёд и плиты."
|
||
|
||
score_difficulty:
|
||
material: ""
|
||
name: "Сложность по очкам"
|
||
lore: "&#A0A0A0Текущее: %s||&#A0A0A0Когда включено, чем выше ваш счёт,||&#A0A0A0тем сложнее становится."
|
||
|
||
lobby:
|
||
name: "&#FFFFFFЛобби"
|
||
|
||
other_join: 'ᤀ&l+ &r&#A0A0A0%s присоединился к вашему лобби'
|
||
other_leave: '&#FF4444&l- &r&#A0A0A0%s покинул ваше лобби'
|
||
|
||
item:
|
||
material: "iron_ingot"
|
||
name: "�D4FF&lВаше лобби"
|
||
lore: ""
|
||
|
||
visibility:
|
||
material: "firework_rocket"
|
||
name: "�D4FF&lВидимость"
|
||
lore: "񢩈Текущая: �D4FF&l%s||񢩈Выберите, кто может присоединиться к вашему лобби."
|
||
values: ["приватное", "только по приглашению", "публичное"]
|
||
|
||
player_management:
|
||
name: "&#FFFFFFУправление игроками"
|
||
|
||
kicked: "&#A0A0A0Вы были исключены из лобби владельцем."
|
||
advice: "&#A0A0A0Установите видимость лобби на 'только по приглашению' или 'приватное', чтобы избежать случайных присоединений."
|
||
muted: "&#A0A0A0Вы были заглушены владельцем лобби."
|
||
unmuted: "&#A0A0A0Ваш голос был разблокирован владельцем лобби."
|
||
|
||
item:
|
||
material: "cake"
|
||
name: "�D4FF&lУправление игроками"
|
||
lore: "񢩈Исключайте или заглушайте игроков здесь."
|
||
|
||
head:
|
||
material: ""
|
||
name: "&#FFFF55%s%s"
|
||
muted_suffix: " &#FF4444[заглушён]"
|
||
lore: ""
|
||
top: "񢩈Заглушён в лобби||"
|
||
bottom: "�D4FFЛевый клик񢩈 чтобы исключить из лобби||�D4FFПравый клик񢩈 чтобы заглушить/разблокировать в лобби"
|
||
lore_kick: "&#A0A0A0ЛКМ &#FFFFFF— исключить"
|
||
lore_mute: "&#A0A0A0ПКМ &#FFFFFF— заглушить"
|
||
lore_unmute: "&#A0A0A0ПКМ &#FFFFFF— разглушить"
|
||
|
||
scoreboard:
|
||
|
||
title: "�D4FF&lLoParkour"
|
||
|
||
lines:
|
||
- "�FF"
|
||
- "�D4FFОчки &#FFFFFF%score%"
|
||
- "�D4FFВремя &#FFFFFF%time%"
|
||
- "�D4FFРекорд &#FFFFFF%high_score%"
|
||
- "&#FF4444"
|
||
- "�D4FF&lserver.ip"
|
||
|
||
other:
|
||
|
||
no_do: "&#A0A0A0Вы не можете сделать это сейчас."
|
||
no_menu_items: "&#FF4444&lСейчас нет доступных пунктов меню."
|
||
joining_disabled: "&#FF4444&lПрисоединение временно отключено."
|
||
no_teleporting: "&#FFFFFFВы не можете войти в мир паркура телепортацией!"
|
||
customize: "&#A0A0A0Настройте свой паркур, используя \"/parkour\""
|
||
leave_error: "&#FF4444&lОшибка при выходе из паркура."
|
||
bungee_kick: "Не удалось перенести вас на %s. Перезайдите."
|
||
menu_unavailable: "&#FF4444%s &#A0A0A0(%d рядов) — меню недоступно."
|
||
paged_menu_unavailable: "&#FF4444%s &#A0A0A0(%d рядов, %d пунктов) — меню недоступно."
|
||
|
||
back:
|
||
material: "red_dye"
|
||
name: "&#DE1F1F&lНазад"
|
||
lore: ""
|
||
|
||
next:
|
||
material: "lime_dye"
|
||
name: "�DCB07&lДалее"
|
||
lore: ""
|
||
|
||
quit:
|
||
material: "barrier"
|
||
name: "�D4FF&lВыйти"
|
||
lore: ""
|
||
|
||
close:
|
||
material: "arrow"
|
||
name: "�D4FF&lЗакрыть"
|
||
lore: ""
|
||
|
||
modes:
|
||
race:
|
||
material: "golden_boots"
|
||
name: "&#FFD700&lГонка"
|
||
lore: "&#A0A0A0Первым достигните целевого счёта!||&#A0A0A0Соревнуйтесь за лучшее время"
|
||
completed: "&#FFD700Финиш! Счёт: &#FFFFFF%s &#A0A0A0за &#FFFFFF%s"
|
||
title: "&#FFD700&lГОНКА ЗАВЕРШЕНА!"
|
||
subtitle: "7FF55Время: &#FFFFFF%s"
|
||
action_bar: "%s &#FFFF55%d &#A0A0A0/ 7FF55%d%s"
|
||
action_bar_left: " &#A0A0A0(&#FF4444%d &#A0A0A0осталось)"
|
||
action_bar_done: " &#FFD700&lГОТОВО!"
|
||
|
||
coop:
|
||
material: "player_head"
|
||
name: "�FF00&lКооператив"
|
||
lore: "&#A0A0A0Объединитесь с друзьями!||&#A0A0A0Общий счёт и прогресс"
|
||
player_joined: "�FF00%s &#A0A0A0присоединился к кооперативной сессии!"
|
||
stats: "&#A0A0A0Командный счёт: &#FFFFFF%s &#A0A0A0| Ваши блоки: &#FFFFFF%s &#A0A0A0(&#FFFFFF%s%%&#A0A0A0)"
|
||
milestone_title: "&#FFD700&lКоманда: &#FFFFFF%d"
|
||
milestone_subtitle: "7FF55Так держать!"
|
||
|
||
admin:
|
||
cooldown: "&#A0A0A0Подождите перед повторным использованием."
|
||
force_join_everyone: "7FF55Все игроки принудительно вошли!"
|
||
force_join_player: "7FF55Игрок %s принудительно вошёл!"
|
||
force_leave_everyone: "7FF55Все игроки принудительно выгнаны!"
|
||
player_not_online: "&#FF4444Игрок не в сети!"
|
||
player_not_playing: "&#FF4444Игрок не в паркуре!"
|
||
reset_all: "7FF55Все рекорды сброшены."
|
||
reset_player: "7FF55Рекорд игрока %s сброшен."
|
||
recover_inventory: "7FF55Инвентарь %s восстановлен."
|
||
recover_inventory_missing: "&#FF4444Сохранённый инвентарь для %s не найден."
|
||
|
||
commands:
|
||
too_many_args: "&#A0A0A0Слишком много аргументов. Попробуйте /parkour help"
|
||
error: "&#FF4444&lLoParkour: ошибка команды — см. консоль сервера."
|
||
unknown_player: "&#FF4444Неизвестный игрок."
|
||
not_playing: "&#FF4444Этот игрок не в паркуре."
|
||
reload: "&#A0A0A0Перезагрузка конфигов... (локали грузятся асинхронно)"
|
||
replay:
|
||
disabled: "&#FF4444Призрачные повторы отключены на этом сервере."
|
||
no_runs: "&#A0A0A0У вас пока нет записанных забегов."
|
||
invalid: "&#FF4444Неверный номер забега."
|
||
starting: "7FF55Воспроизведение вашего забега..."
|
||
help:
|
||
header: "񢩈&m--------------- &#FF6464&lLoParkour 񢩈&m---------------"
|
||
line_parkour: "&#A0A0A0/parkour 񢩈- Главная команда"
|
||
line_replay: "&#A0A0A0/parkour replay [забег] 񢩈- Смотреть записанные забеги"
|
||
line_join: "&#A0A0A0/parkour join [режим/игрок] 񢩈- Войти в режим"
|
||
line_leave: "&#A0A0A0/parkour leave 񢩈- Выйти"
|
||
line_menu: "&#A0A0A0/parkour menu 񢩈- Открыть меню"
|
||
line_play: "&#A0A0A0/parkour play 񢩈- Выбор режима"
|
||
line_leaderboard: "&#A0A0A0/parkour leaderboard [тип] 񢩈- Таблица лидеров"
|
||
line_schematic: "&#A0A0A0/LoParkour schematic 񢩈- Схематики"
|
||
line_reload: "&#A0A0A0/LoParkour reload 񢩈- Перезагрузка конфигов"
|
||
line_reset: "&#A0A0A0/LoParkour reset <все/игрок> 񢩈- Сброс рекордов"
|
||
line_force: "&#A0A0A0/LoParkour forcejoin/forceleave <цель> 񢩈- Принудительный вход/выход"
|
||
line_recover: "&#A0A0A0/LoParkour recoverinventory <игрок> 񢩈- Восстановить инвентарь"
|
||
|
||
schematic:
|
||
wand:
|
||
material: "golden_axe"
|
||
name: "&#FF4444&lПалочка схем"
|
||
lore: "&#A0A0A0ЛКМ: позиция 1||&#A0A0A0ПКМ: позиция 2"
|
||
help:
|
||
header: "B0000&lСхематики 񢩈-----------"
|
||
line_wand: "&#FF4444/LoParkour schematic wand 񢩈- &#A0A0A0Палочка выделения"
|
||
line_pos1: "&#FF4444/LoParkour schematic pos1 񢩈- &#A0A0A0Позиция 1"
|
||
line_pos2: "&#FF4444/LoParkour schematic pos2 񢩈- &#A0A0A0Позиция 2"
|
||
line_create: "&#FF4444/LoParkour create <сложность> 񢩈- &#A0A0A0Сохранить в .schem + yml"
|
||
line_create_named: "&#FF4444/LoParkour schematic create <имя> <сложность> 񢩈- &#A0A0A0С именем"
|
||
line_paste: "&#FF4444/LoParkour schematic paste <имя> 񢩈- &#A0A0A0Тестовая вставка"
|
||
line_list: "&#FF4444/LoParkour schematic list 񢩈- &#A0A0A0Список"
|
||
line_reload: "&#FF4444/LoParkour schematic reload 񢩈- &#A0A0A0Перезагрузка"
|
||
line_folder: "&#A0A0A0Папка: plugins/LoParkour/schematics/ (.nbt, .schem)"
|
||
line_docs: "&#A0A0A0Документация: plugins/LoParkour/docs/SCHEMATICS.md"
|
||
wand_given: "&#A0A0A0Палочка выдана. ЛКМ = pos1, ПКМ = pos2."
|
||
list_header: "&#A0A0A0Загруженные схемы:"
|
||
list_entry: "&#A0A0A0- &#FF4444%s 񢩈(%s, %s)"
|
||
reloaded: "&#A0A0A0Перезагружено."
|
||
pos_set: "&#A0A0A0Позиция %s: %s"
|
||
invalid_name: "&#FF4444Недопустимое имя. Только буквы, цифры, дефис и подчёркивание."
|
||
invalid_difficulty: "&#FF4444Сложность: число от 0.0 до 1.0 (напр. 0.25, 0.5, 1.0)."
|
||
selection_incomplete: "&#FF4444Сначала выделите область (палочка или pos1/pos2)."
|
||
created: "&#A0A0A0Добавлено &#FF4444%s 񢩈(сложн. %s) → &#FF4444%s"
|
||
create_failed: "&#FF4444Ошибка: %s"
|
||
not_found: "&#FF4444Схема '%s' не найдена."
|
||
pasted: "&#A0A0A0Вставлено: &#FF4444%s&#A0A0A0."
|
||
|
||
ghost:
|
||
saved: "�D4FFВаш призрак сохранён с результатом %s очков!"
|