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

Обсудим Лепим пиратский лаунчер

Тема в разделе "Управление сервером Bukkit", создана пользователем Oinvizion Craft, 27 сен 2016.

  1. alexandrage

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

    Баллы:
    173
    Не смотрел даже никогда.
     
  2. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    О! Ща в консольку залезу к тлаунчеру!
    Там не сказано
    Если найдёшь откуда legacy.json качается напиши пж
    О нашёл!!!!

    https://s3.amazonaws.com/Minecraft.Download/indexes/legacy.json

    Вот тут если что все ссылки:
    http://wiki.vg/Game_files
    А как natives которые в папки версии лежат скачать?
    Слушай, очень надо узнать, как получить список версий и их JSON-нников?
    А также откуда качать dll нэйтивсов в папке версии
    Всё с нативсами я разобрался,


    (Если кому-то надо будет)
    Это качается от сюда: http://s3.amazonaws.com/MinecraftDownload/windows_natives.jar.lzma

    Их просто вытащить из этого джарника и всё?
    Слушай, что это такое вылазит у меня при запуске с новыми нэйтивсами:
    Код:
    2016-11-04 16:44:58 [INFO] [STDERR] java.lang.reflect.InvocationTargetException
    2016-11-04 16:44:58 [INFO] [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    2016-11-04 16:44:58 [INFO] [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    2016-11-04 16:44:58 [INFO] [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    2016-11-04 16:44:58 [INFO] [STDERR]     at java.lang.reflect.Method.invoke(Unknown Source)
    2016-11-04 16:44:58 [INFO] [STDERR]     at cpw.mods.fml.relauncher.FMLRelauncher.relaunchClient(FMLRelauncher.java:123)
    2016-11-04 16:44:58 [INFO] [STDERR]     at cpw.mods.fml.relauncher.FMLRelauncher.handleClientRelaunch(FMLRelauncher.java:38)
    2016-11-04 16:44:58 [INFO] [STDERR]     at net.minecraft.client.Minecraft.main(Minecraft.java:2237)
    2016-11-04 16:44:58 [INFO] [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    2016-11-04 16:44:58 [INFO] [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    2016-11-04 16:44:58 [INFO] [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    2016-11-04 16:44:58 [INFO] [STDERR]     at java.lang.reflect.Method.invoke(Unknown Source)
    2016-11-04 16:44:58 [INFO] [STDERR]     at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
    2016-11-04 16:44:58 [INFO] [STDERR]     at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
    2016-11-04 16:44:58 [INFO] [STDERR] Caused by: java.lang.UnsatisfiedLinkError: org.lwjgl.DefaultSysImplementation.getPointerSize()I
    2016-11-04 16:44:58 [INFO] [STDERR]     at org.lwjgl.DefaultSysImplementation.getPointerSize(Native Method)
    2016-11-04 16:44:58 [INFO] [STDERR]     at org.lwjgl.Sys.<clinit>(Sys.java:113)
    2016-11-04 16:44:58 [INFO] [STDERR]     at net.minecraft.client.Minecraft.func_71386_F(Minecraft.java:2576)
    2016-11-04 16:44:58 [INFO] [STDERR]     at net.minecraft.client.Minecraft.fmlReentry(Minecraft.java:2247)
    2016-11-04 16:44:58 [INFO] [STDERR]     ... 13 more

    Перепробовал кучу методов, не знаешь, какую версию lwjgl майнкрафт юзает?
    Я заметил, что в каждой версии майна, своя версия lwjgl
    Возникла проблема при загрузки библиотек.
    По какой причине не качаются многие библиотеки, типа этой:

    https://libraries.minecraft.net/org...1-nightly-20130708-debug3-natives-windows.jar (эту ссылку выдаёт мой лаунчер и не может скачать)

    Вот что в JSON-нике:
    Код:
    {
          "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3",
          "rules": [
            {
              "action": "allow",
              "os": {
                "name": "osx",
                "version": "^10\\.5\\.\\d$"
              }
            }
          ],
          "natives": {
            "linux": "natives-linux",
            "osx": "natives-osx",
            "windows": "natives-windows"
          },
          "extract": {
            "exclude": [
              "META-INF/"
            ]
          }
        },
    Вроде всё правильно, но оно не качается. Почему?
     
  3. alexandrage

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

    Баллы:
    173
    Ответ тут

    1. "action": "allow",
    2. "os": {
    3. "name": "osx",
    4. "version": "^10\\.5\\.\\d$"
    5. }
      только для osx.
     
  4. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Т.е. Где в Rules OS Name стоит OSX эту библиотеку просто тупо пропускать?

    Всё! Пришлось помаяться со считыванием значения, вот как сделал:

    В самом начале идёт цикл, который и раньше запускал проверку, загрузку и распаковку либов:
    Код:
    for (int i = 0; i < jobject["libraries"].Count(); i++)
    {
    А потом такое:
    Код:
    try
                    {
                        rules = (JValue)jobject["libraries"][i]["rules"][0]["os"]["name"];
                        2rules = Convert.ToString(rules);
                    }
                    catch
                    {
                        2rules = "";
                    }
    И затем:
    Код:
    if (2rules != "")
                    {
                        goto end; //Пропускает этот либ
                    }
    P.S
    Мож коряво, но зато работает!
    Да, и такой вопросик, может ли name быть windows ?
     
    Последнее редактирование: 13 ноя 2016
  5. alexandrage

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

    Баллы:
    173
    Там где в рулес нету форточки = да, пропускаем.
    P.s можно так foreach (var librari in libraries) {}
     
  6. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Удобнее первым вариантом, так как цикл этот как бы главный, т.е. именно он проверяет и скачивает либы, распаковывает их, распаковывает natives и т.д. Но вообще к едино решению можно придти разными путями.

    Ах да, и всё висит пара вопросов, от куда качать JSON-нники версий?
    И откуда получать список самих версий?

    Вот:
    http://s3.amazonaws.com/Minecraft.Download/versions/versions.json
    Это?
    "This URL is being phased out! Please update your scripts to check https://launchermeta.mojang.com/mc/game/version_manifest.json instead. Thanks <3 --Dinnerbone"

    И что юзать тогда?
    Слушай, не знаешь как в MS визуалке запретить ввод своего текста в ComboBox?
    И ещё, как сопоставить значение выбранной версии ComboBox с url из джоснника?
     
  7. alexandrage

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

    Баллы:
    173
    Ну видимо это новый json.
    Тут я не понял про что ты.
    Если про это, то foreach (var librari in jobject["libraries"]) {}
     
  8. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Это я так.. Ты вот на это лучше ответь:

     
  9. alexandrage

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

    Баллы:
    173
    Не знаю.
    Ты наверное сделал комбобокс поля для ввода.
     
  10. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Хорошо, а если так:
    У нас есть массив считанных версий где каждой версии (id) соответствует url джсонника
    И есть string со значением id.
    Как открыть из массива значение url?
     
  11. alexandrage

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

    Баллы:
    173
    хз о чем ты. Или ты сляпой ).

    Код:
    {
    "id":"1.11-pre1",
    "type":"snapshot","time":"2016-11-08T13:44:29+00:00",
    "releaseTime":"2016-11-08T13:42:50+00:00",
    "url":"https://launchermeta.mojang.com/mc/game/7dfcb37dd7f2c354b6cb10896f791df6a32151dc/1.11-pre1.json"
    }
     
  12. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    А про ComboBox нарыл.
    Надо в DropDownStyle установить DropDownList
    Это ты меня не понял! Как из массива вытащить значение url, которое соответствует id (например 1.10.2), выбранное из ComboBox
     
  13. alexandrage

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

    Баллы:
    173
    Разве бокс не указывает на индекс объекта?
     
  14. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Слушай, ты вообще не понимаешь что я спрашиваю про соответствие значения url из массива, значению id из ComboBox?
     
  15. alexandrage

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

    Баллы:
    173
    Я не понимаю твоей проблемы. У тебя массив объектов версий. Ты надуваешь комбобокс
    foreach(чтототам массив) {
    чтототам get(id), добавить в бокс.
    }
    При выборе бокса он указывает на индекс массива.
    Массив get(наш индекс) get(урл).
     
  16. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Ну смотри короче!

    У нас есть ComboBox, содержащий id версий из JSON-а
    Пользователь выбирает в ComboBox версию, например (1.10.2)
    И лаунчер считывает то, что он выбрал:
    string versia = versionlistbox.SelectedItem // переменная versia равна 1.10.2
    И мне необходимо из JSON-а вытащить url, который соответствует выбранной версии
     
  17. alexandrage

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

    Баллы:
    173
    selectedIndex = comboBox.SelectedIndex.
    Массив версий get(selectedIndex) get("url").
    Проблем?
     
  18. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Слушай, как versionlist["versions"] Переделать в массив?
     
  19. alexandrage

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

    Баллы:
    173
    Оно уже, массив json.
     
  20. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Я вообще запутался:
    versionlist["versions"] get(selectedIndex) get("url")
    Так что ли? Но оно не робит
    Спасибо!
    Вот конечный вид:
    versionlist["versions"][selectedIndex]["url"]
     

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