1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Совет Поддержка кириллицы сервером [2]

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем fromgate, 16 мар 2013.

  1. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Данный гм... рассказ дополняет совет xAnder'а "Поддержка кириллицы сервером"


    Краткая инструкция по решению проблемы с кодировками для сервера Minecraft (craftbukkit)

    История проблемы или зачем это всё нужно
    Наверно каждый обращал внимание на то, что при попытке набрать что-то в чат на сервер отправлялись какие-то кракозяблики; их же можно было увидеть в книгах, а на табличках вместо русских букв появлялись непонятные знаки вопросов. Причина всего это проста. В стандартный клиент майнкрафта включена устаревшая версия библиотеки LWJGL, при вводе символов с клавиатуры, передающая их не в кодировке UTF-8, а в какой-то безумной смеси: один байт от кодировки UTF-8, а второй - обычный символ в кодировке CP1251. Полученные символы и явлются теми кракозябликами, которые так сильно нас раздражают. Казалось бы, решение простое: нужно обновить библиотеку LWJGL (последняя версия доступна по адресу: http://lwjgl.org/download.php, кстати сейчас рекомендуют использовать не последнюю версию 2.8.5, а предыдущую - 2.8.4) , однако разработчики Minecraft'а не спешат с таким обновлением (как я понимаю из-за каких-то проблем в новой версии библиотеки с Mac'ами), а всех пользователей вручную сменить библиотеку не заставишь.
    В результате то тут, то там на серверах появляются таблички с "кривыми" символами, а все благодаря тому, что традиционная руссификация методом "подстановки" файла font.txt на самом деле не решает проблемы, а маскирует её: в клиентах, руссифицированных посредством font.txt (и соответствующего графического файла) на самом деле кодировка не исправлена, исправлено только её отображение, а на сервер символы попадают во все том же кривом состоянии. Таким образом, у потенциальных игроков на сервере может быть:
    1. Стандартный клиент со стандартной руссификацией и старой версией LWJGL (Windows) — если не прилагать каких-то усилий, то он в принципе не сможет писать на русском.
    2. Стандартный клиент со стандартной руссификацией и старой версией LWJGL (Linux) — насколько знаю тут всё хорошо, UTF-8 в чате, на табличках и вообще. То что он пишет видят все.
    3. Стандартный клиент c "руссификацией методом font.txt" и старой версией LWJGL (Windows) — клиент пишет в чат на русском. Его не понимают клиенты из п.1 и п.2, но понимают все клиенты из п.3
    4. Стандартный клиент c обновленной версией LWJGL (Windows) — собственно всё нормально текст принимается в UTF-8, игрок видит, что он пишет и его текст понятен всем.
    Как с этим бороться
    Естественно самым координальным и верным решением было бы устранение изначальной проблемы - внедрением исправленной версией LWJGL в клиент Minecraft'а. Но пока это не сделают разработчики, это решение будет неэффективным. Придется контроллировать игроков, заставлять их либо самостоятельно обновлять злосчастную LWJGL или же усиленно "впаривать" собственный клиент (с обновленной библиотекой). В ряде случаев второй вариант может решить проблему, но по тем или иным причинам ограничивать игроков каким-то специальным клиентом не всегда представляется возможным (да и удобным). Поэтому, при текущей ситуации, сервер направленный на полноценную поддержку кириллицы в игре должен уметь приводить к нормальному виду текст в "кривой" кодировке поступаемый от клиента. Процедура "руссфикации" сервера в этом случае будет выглядеть следующим образом.

    Что нужно для организации поддержки русского языка
    Собственно, для организации поддержки русского языка нужно не так уж и много:
    1. Убедиться, что при вызове Java для старта сервера, включена поддержка UTF-8 для файлов. Для этого при запуске должен использоваться ключ: -Dfile.encoding=UTF-8
    2. Необходимо внедрить "русский" файл font.txt в craftbukkit.jar. Это необходимо для того, чтобы русский язык начал поддерживаться в табличках (в чате он и так воспринимается нормально).
    3. Установить плагин CPFix, который необходим для того чтобы приводить весь поступающий в чат, таблички, книги текст в едино-верную кодировку UTF-8. С этим плагином даже клиенты под Windows с устаревшей LWJGL смогут с горем пополам писать на русском языке. К примеру, слово "ïðèâåò", поступившее от такого клиента, после перекодировки превратится в "привет".
    А как же консоль?
    С консолью есть несколько нюансов. Все они связаны с консолью в Windows (в Linux насколько я понимаю с поддержкой кодировки UTF-8 в консоли проблем никаких нет). Поэтому все о чем я буду говорить ниже относится к стандартной консоли Windows. Для того чтобы консоль нормально отображала текст UTF-8 (т.е. сообщения игроков в чате, текст выводимый плагинами на русском) необходимо включить в ней вывод в кодировке UTF-8. Проще всего это сделать вызвав команду chcp 65001. И уже после этой команды запускать Java. В качестве примера привожу содержимое cmd-файла, которым я запускаю свой "домашний тестовый" сервер:

    Код:
    chcp 65001
    "%ProgramFiles%\Java\jre7\bin\java.exe" -Xms1024M -Xmx1024M -Dfile.encoding=UTF-8 -jar craftbukkit.jar
    pause
    
    После этого, сервер будет поддерживать вывод текста на русском языке (и кстати в цвете - тоже). Однако остается одно огромное "но": Windows-консоль не поддерживает ввод текста в кодировке UTF-8! То есть не поддерживает ВООБЩЕ! Это значит, что текст на русском читать сможете, а писать нет. Лично меня это устраивает: на домашне-тестовом сервере писать что-то с консоли на русском не приходится, а на активном игровом сервере вряд ли будет использоваться Windows.

    И все-таки про консоль Windows
    Однако если уж очень хочется, то можно и заставить консоль "принимать" русский текст. Для этого придется устроить небольшую чехарду с кодировками. Во-первых, надо будет отказаться от кодировки UTF8 в консоли. Т.е. убрать chcp 65001 из командного файла, которым запускается сервер. Также необходимо будет отключить поддержку UTF-8 для файлов (т.е. убрать из строки запуска Java ключ -Dfile.encoding=UTF-8). В результате мы получим вот такой файл:

    Код:
    "%ProgramFiles%\Java\jre7\bin\java.exe" -Xms1024M -Xmx1024M -jar craftbukkit.jar
    pause
    Теперь необходимо в настройках плагина CPFix (версии 0.2.0) настроить перекодирование текста из консоли:
    Код:
    output-recode:
      console:
        enable: true
        code-page: CP866
      server-log:
        enable: true
        code-page: CP866
    input-recode:
      enable: true
      code-page: CP866
    Все эти опции отключены по умолчанию, но в файле настроек присутствуют - нужно включить и перезагрузить сервер. Кстати, если вы используете в консоли какую-то другую кодировку, то можете подставить и её. Кроме того, кодировка журнального файла (server-log) может отличаться от кодировки консоли: в консоль текст может выводиться в CP866, а в server.log при желании можно вести в UTF8 или в CP1251.
    Собственно после этого можно будет вводить в консоли текст на русском и сервером, а также плагинами он будет восприниматься адекватно. И команда /say Привет! будет понята всеми :)


    Что и где качать?
    1. Craftbukkit лучше всего брать с оффсайта: http://dl.bukkit.org/
    2. Файл font.txt можно взять тут: http://www.rubukkit.org/attachments/font-txt.8520/
    3. Плагин CPFix всегда доступен тут: http://www.rubukkit.org/threads/admin-fix-chat-cpfix-v0-1-0-Фикс-кодировок-теперь-без-дополнительной-нагрузки-1-4-7-r1-0.31859/
     

    Вложения:

    • font.txt
      Размер файла:
      379 байт
      Просмотров:
      843
    twixi007, Hephest, mamayadesu и 15 другим нравится это.
  2. klarnet

    klarnet Старожил Пользователь

    Баллы:
    173
    Skype:
    dalios7249
    Имя в Minecraft:
    klarnet
    Spigot тоже можно брать :)
     
  3. ufes

    ufes Старожил Девелопер Пользователь

    Баллы:
    173
    Мне вот интересно, почему бы им не модифицировать лаунчер для скачки разных версий библиотек для разных ОС?
     
    REZAYS и ranek нравится это.
  4. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Немного обновил статью, с учетом последних нововведений в CPFix (касательно Windows консоли).

    @ufes, насчет разных версий библиотек для разных ОС: ещё неизвестно где-то это может потом аукнуться. Это хорошо, что более позние версии совместимы с более ранними. А если где-то вылезет какая-то нестыковка, то разработчики же с ума сойдут учитывать такие нюансы.
     
  5. German121314

    German121314 Активный участник

    Баллы:
    63
    Имя в Minecraft:
    none
    СПАСИБО ОГРОМНОЕ :)!!!!​

    Искал очень долго, теперь и логи чата на русском в консоли, и консоль поддерживает текст на русском! ! Очень большое спасибо!​

    UP!​
     
  6. dimahru

    dimahru Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    А можно поподробнее как русифицировать окнсоль на Debian? Локаль стоит ru_RU.UTF-8
     
  7. klarnet

    klarnet Старожил Пользователь

    Баллы:
    173
    Skype:
    dalios7249
    Имя в Minecraft:
    klarnet
    Вышел новый LWJGL, кто нибудь пробовал?
     
    REZAYS нравится это.
  8. klarnet

    klarnet Старожил Пользователь

    Баллы:
    173
    Skype:
    dalios7249
    Имя в Minecraft:
    klarnet
    На линуксе все и так замечательно должно работать.
     
  9. dimahru

    dimahru Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    Если бы :(
     
    ВремяПриключений нравится это.
  10. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Странно, на 1.2.5 русский текст отправлялся в игру из консоли на ура. И только на MCPC+ 1.4.7 отправляются вопросы вместо русского текста...
     
  11. dimahru

    dimahru Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    При попытке ввода в консоль русского текста начинает флудить >>>>>>>>>>>>>>>
     
  12. dimahru

    dimahru Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    Всёравно не отображает русский текст в консоли FUUUCK Ядро MCPC+ 1.4.7
     
    DavidShabaev и Сникерсни нравится это.
  13. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    У Вас по идее должно быть всё готово к руссификации и CPFix нужен только для исправления битой кодировки LWJGL. Т.е. это вопрос настройки ОС.
    Т.е. Вы настраиваете консоль на UTF-8 при старте Java используете ключ -Dfile.encoding=UTF-8 и всё должны быть ок.

    Перекодировка консоли под Windows нужна из-за того, что стандартными средствами нельзя сделать ввод текста в консоли UTF-8 под Windows.
    Если ввод текста не нужен, то у меня и под Windows при настройки консоли на UTF-8 в CPFix'е отключена перекодировка консоли.
     
    slavik123123123 нравится это.
  14. Meowt

    Meowt Старожил Пользователь

    Баллы:
    123
  15. MCServerOwner

    MCServerOwner Активный участник Пользователь

    Баллы:
    78
    Друзья. Русифицировал таким образом клиент и сервер. До этого использовал русификатор, подменяющий английский язык США. Возможно ли заменить тонкий шрифт русского языка на шрифт из русификатора, похожий на "родной" шрифт Minecraft с сохранением возможности корректно писать на табличках и в чате?
     
    Сникерсни нравится это.
  16. dimahru

    dimahru Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    Строка запуска прикреплена Локаль
    LANG=ru_RU.UTF-8
    LANGUAGE=
    LC_CTYPE="ru_RU.UTF-8"
    LC_NUMERIC="ru_RU.UTF-8"
    LC_TIME="ru_RU.UTF-8"
    LC_COLLATE="ru_RU.UTF-8"
    LC_MONETARY="ru_RU.UTF-8"
    LC_MESSAGES="ru_RU.UTF-8"
    LC_PAPER="ru_RU.UTF-8"
    LC_NAME="ru_RU.UTF-8"
    LC_ADDRESS="ru_RU.UTF-8"
    LC_TELEPHONE="ru_RU.UTF-8"
    LC_MEASUREMENT="ru_RU.UTF-8"
    LC_IDENTIFICATION="ru_RU.UTF-8"
    LC_ALL=

    В CpFix всё на UTF-8, может проблема из-за того, что используется чат essentials? Пример надписи в консоли пҐп╟п©п╦я│п╟п╩ Используется встроенный в minecraft русификатор, в MCPC+ ничего не менял, кроме ссылки на чексеервер
     

    Вложения:

    • exim.txt
      Размер файла:
      94 байт
      Просмотров:
      20
  17. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Я правильно понимаю, Вы хотите чтобы клиент был на русском языке, а шрифт по принципу английского? По идее можно: я в каком-то клиенте такой русификатор встречал.
     
  18. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @dimahru, конфиг CPFix покажите :)
     
  19. dimahru

    dimahru Старожил Пользователь

    Баллы:
    153
    Имя в Minecraft:
    dimahru

    Вложения:

    • CPFix.zip
      Размер файла:
      797 байт
      Просмотров:
      18
    I-Am-Black-Overlord нравится это.
  20. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @dimahru, попробуйте вообще отключить функцию рекода консоли в CPFix:

    Код:
    output-recode:
      console:
        enable: false
        code-page: UTF-8
      server-log:
        enable: false
        code-page: UTF-8
    input-recode:
      enable: false
      code-page: UTF-8
     
    Jesper нравится это.

Поделиться этой страницей