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

Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Лаунчер Sashok724 Launcher (Modification)

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем DragoSFire, 11 апр 2014.

  1. Bars

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

    Баллы:
    173
    Провозился 6 часов, ничего не помогло.

    Поменял File.toString() на File.getAbsolutePath() в Game.java
    Пробовал менять кодировку строки с путём во всех BaseUtils.get_x_Dir() (и принудительно на UTF-8, и из UTF-8 в ANSI - 0 реакции)
    Пробовал прописать напрямую явно прямо в коде полный String до папки с AppData ("C:/Users/Петя/AppData/Roaming")
    Пробовал то же самое, только закодировал имя юзера в Unicode (\u041F\u0435\u0442\u044F)
    Попробовал задать кодировку при запуске клиента в Game.java:
    Код:
                    System.setProperty("file.encoding", "UTF-8");
                    // Сброс текущей кодировки JVM: (присутствует кстати в TLauncher! Во совпало)
                    Field charset = null;
                    try {
                      charset = Charset.class.getDeclaredField("defaultCharset");
                    } catch (NoSuchFieldException e) {
                      e.printStackTrace();
                    }
                    charset.setAccessible(true);
                    try {
                      charset.set(null, null);
                    } catch (IllegalAccessException e) {
                      e.printStackTrace();
                    }
    И все одно и то же - звука нет.
    Есть только мысль создавать симлинк и запускать через него. Но где его создашь без прав админа?
    Без прав админа можно только писать в папку юзера и на корень системного диска. А такое мало кого будет устраивать. Конечно можно скрыть, но не у всех отключено отображение скрытых файлов. Но можно и чисто только на время игры создавать. А если и такое не устраивает, то пусть запускают с правами админа и тогда будет доступна папка, скажем, Program Files.

    Была мысль, что дело может быть в обфускации кода, но нет, я на время всех попыток и тестов не обфусцировал лаунчер.
     
    Последнее редактирование: 25 янв 2021
  2. alexandrage

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

    Баллы:
    173
    Потому что нельзя использовать флаг -Dfile.encoding=UTF8 на клиенте. Должна быть стандартная кодировка системы. Раньше тоже по тупости юзал для исправления текста в лк с веба, но потом решил это более правильным путем.
     
    Последнее редактирование: 25 янв 2021
  3. AmaZ1nG1307

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

    Баллы:
    61
    Имя в Minecraft:
    AmaZ1nG
    Более правильный это какой?
     
  4. Bars

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

    Баллы:
    173
    В общем я тут столько кода нагородил и натестировал, что просто ужас.
    Симлинк без админ-прав не создать. Решил генерировать батник SoundFix в корне клиента, который при запуске игроком с админ-правами создаст ему симлинк. Симлинк уже успешно создается и открывается (C:/.mine.by/Petya_1918fa783851db0dc1f72f83d33a5994), но какая-то ошибка при запуске лаунчера при его использовании.

    Придумал другую идею.
    Сделать возможность запуска из C:/.mine.by, если есть такая папка, а если ее нет, то из %appdata%.
    И у тех, у кого нет звука, просто говорить, чтобы они эту папку переместили на диск C.
    А там лаунчер ее потом пометит как скрытую, чтобы глаза не мозолила.

    А так предлагаю всем проектам с лаунчером не засорять диск C, а использовать какую-то стандартизированную директорию для всех клиентов. @alexandrage, сделай коммит у себя, чтобы по умолчанию использующим лаунчер предлагало путь, к примеру "C:/MC/Launchers/НазваниеПроекта". А то у игроков, играющих на разных лаунчерах будет засорен корневой раздел. Надо бы хотя бы сейчас это остановить и как-то рассказать админам проектов. Можешь им даже предложить внутренний конвертер в обновлении лаунчера, который будет чекать старую папку (которую пропишет админ в лаунчере, например в Settings.oldDir) и если она есть, перенести ее на новый путь.

    Почему я предложил именно C:/MC/Launchers?
    Если делать к примеру просто MCLaunchers, то это мусорно. Лучше уже чтобы была универсальная папка MC, куда можно все по майнкрафту сложить, особенно запускать всякие MCP для работы с декомпиляцией. Это - полезно. А какой-то "MCLaunchers" и смотрится прямо в корне противно (много отвлекающих букв из-за "Launcher"), и если рядом создавать папки...... короче объясню так: пространства имён.

    Можно напихать кучи всего всякого в корень
    MCLaunchers
    MCPrograms
    MCServers
    MC...

    А можно сделать единый "воркспейс"/"пространство имен"/"top-level домен" (как угодно) "MC":
    MC/Launchers
    MC/Programs
    - BuildTools
    - MCP
    MC/Servers
    - MyServerSandbox
    - MyServerHiTech

    Все сразу по Майнкрафту в одном месте. И всякие MCP работают, так как их часто нужно запускать из корня. И ни одной больше лишней папки в корне. Все что по майну - в одной папке
     
    Последнее редактирование: 25 янв 2021
  5. alexandrage

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

    Баллы:
    173
    Указал кодировку для InputStreamReader.
     
  6. Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Проблема случайно не lwjgl? До версии 1.6 кириллицы с клавы в игре вообще не было до обновления этого самого lwjgl
    Идея благая, но порой мне кажется что юзерам пофиг на "гигиену" при пользовании ПК и просто забивают на это. Как и многие лончеры, в которых не предусмотрена возможность удалить папку с игрой.
     
  7. Bars

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

    Баллы:
    173
    Оо, вспомнил те времена. Но нет, не в этом. На абсолютно всех версиях такое.
    При том тот же TLauncher например нормально работает. Но я там ничего не нашел в коде кроме сниппета выше.

    Сделал запуск с диска C, а хранение сессии в Юзер/AppData. Как хостер заменит диск, только тогда протестирую.
     
  8. Bars

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

    Баллы:
    173
    В логах вот что, когда кириллица в имени юзера:

    Код:
    [19:59:08] [Client thread/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:
    [19:59:08] [Client thread/INFO]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down...
    [19:59:08] [Client thread/INFO]: [paulscode.sound.SoundSystemLogger:importantMessage:90]:     Author: Paul Lamb, www.paulscode.com
    [19:59:08] [Client thread/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:
    [19:59:08] [Client thread/INFO]: [RTM](Client) Start loading sounds
    [19:59:08] [Client thread/INFO]: [RTM](Client) Start registering sounds.json
    [19:59:08] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:
    [19:59:08] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem...
    [19:59:08] [Client thread/INFO]: [RTM](Client) Cant't start loading sounds
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:     (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:errorMessage:131]: Error in class 'LibraryLWJGLOpenAL'
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:errorMessage:132]:     Unable to initialize OpenAL.  Probable cause: OpenAL not supported.
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:importantMessage:90]:     ERROR MESSAGE:
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         Could not locate OpenAL library.
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:importantMessage:90]:     STACK TRACE:
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         org.lwjgl.openal.AL.create(AL.java:151)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         org.lwjgl.openal.AL.create(AL.java:102)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         org.lwjgl.openal.AL.create(AL.java:201)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         paulscode.sound.libraries.LibraryLWJGLOpenAL.init(LibraryLWJGLOpenAL.java:164)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         paulscode.sound.SoundSystem.CommandNewLibrary(SoundSystem.java:1576)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         paulscode.sound.SoundSystem.CommandQueue(SoundSystem.java:2572)
    [19:59:09] [Thread-39/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         paulscode.sound.CommandThread.run(CommandThread.java:121)
    [19:59:09] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:importantMessage:90]:     ERROR MESSAGE:
    [19:59:09] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:         Could not locate OpenAL library.
    [19:59:09] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:
    [19:59:09] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem...
    [19:59:09] [Thread-41/INFO]: [paulscode.sound.SoundSystemLogger:message:69]: Switching to No Sound
    [19:59:09] [Thread-41/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:     (Silent Mode)
    [19:59:10] [Sound Library Loader/INFO]: [paulscode.sound.SoundSystemLogger:message:69]:
    [19:59:10] [Sound Library Loader/INFO]: Sound engine started
    Пишет про OpenAL, но если его отдельно устаналивать, то у большинства все равно не работает. То ли дело в самой DLL-ке, то ли что. В целом есть еще мысли, как можно попытаться, но я уже не хочу. Потратил сутки напролет уже. И сделал все на системдрайве. Звуки работают, хоть assets находятся по прежнему в директории пользователя и путь к ним содержит кириллицу. А вот DLL-ки не хотят на кириллицу. Так что дело точно не в пути к assets. Они и сейчас в кириллице, а работают.
    Я догадываюсь. Надо посмотреть метод, который сканирует и пассит клиенту нативы. Только лично я уже умываю руки
     
  9. alexandrage

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

    Баллы:
    173
    Я же ответил почему, и да это дело в самом lwjgl. Не используй флаг Dfile.encoding и все починится.
     
  10. Bars

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

    Баллы:
    173
    Аа, понял. Так я же его не использовал ранее, только вчера внедрил. И в TLauncher почему-то с этим флагом звуки не портятся.
     
  11. alexandrage

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

    Баллы:
    173
    Так там игра в отдельном процессе же запускается.
     
  12. Sanya007vuch

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

    Баллы:
    68
    привет
    не по теме, однако прошу, подскажи плс, поддержка по лаунчерам еще актуальна? куда не зайду - не могу найти чего можно купить чтоб лаунчер работал в нужной связке. Лет 6 назад я приобретал у тебя лаунчер (даж нашёл всё сорцы с того времени), щас думаю вот снова попробовать, но не получается найти ничего толкового
     
  13. Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Если не ошибаюсь, JVM может цеплять только те длл, которые находятся в -Djava.library.path. Причём нельзя сказать, что загрузка библиотеки происходит из нативного кода, поскольку lwjgl делает это средствами JVM https://github.com/LWJGL/lwjgl3/blo.../src/main/java/org/lwjgl/openal/ALC.java#L119
     
  14. WolfSpirit

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

    Баллы:
    63
    Где взять asset на 1.16.5 а то негде найти не могу, или как его сделать самому
     

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