Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

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

  1. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Всё! Запуск любой версии майна, как vanilla, так и с Forge по JSON-у я сделал.
    Теперь у меня огромнейшая проблема! Это скачивание файлов! Я решил начать с либрариансов. Принцип прост:
    каждый name из librarians из JSON-а проверяются на существование, и если его нет, он проверят на существование все папки, если их тоже нет, он их создаёт. Но тут возникла проблемка!
    С такими библиотеками, как:
    {
    "name": "net.sf.trove4j:trove4j:3.0.3"
    },
    {
    "name": "com.ibm.icu:icu4j-core-mojang:51.2"
    },
    {
    "name": "net.sf.jopt-simple:jopt-simple:4.5"
    },
    всё норм.
    Вот пример одной ссылки:
    https://libraries.minecraft.net/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar
    Все остальные библиотеки грузятся по этому же принципу!

    С загрузкой Forge - файлов, тоже проблем не возникло: Просто читаем exact_url и url из JSON-а, соответствующие каждому name.

    Но кода дело дошло до lwjgl... Тут и пошли проблемы....

    Дело в том, что libraries.minecraft.net некоторые либрариансы не знает!
    org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20131017
    Ссылка выходит такая:
    https://libraries.minecraft.net/org...017/lwjgl-platform-2.9.1-nightly-20131017.jar

    И всё! Лаунчер тупо вылетает!
    Подскажите пожалуйста, как быть с lwjgl, потому что больше половины нельзя скачать!
    Или может их как-нибудь просто взять и пропустить!
    Причём JSON трогать не надо![DOUBLEPOST=1475090878,1475090119][/DOUBLEPOST]Сейчас заметил, что TLauncher качает не все библиотеки из json. Тогда что же получается, необходимо под каждую версию прописывать какие именно надо качать библиотеки? Или есть какой-нибудь способ узнать по JSON, какие библиотеки качать?[DOUBLEPOST=1475091365][/DOUBLEPOST]Ещё сейчас при запуске заметил проблемы со звуком:

    [14:35:16] [Client thread/WARN]: Unable to play unknown soundEvent: minecraft:music.menu
    [14:35:30] [Client thread/WARN]: Unable to play unknown soundEvent: minecraft:gui.button.press[DOUBLEPOST=1475091705][/DOUBLEPOST]
    Это я решил заменой ${game_assets} не просто на assets, а на \assets\virtual\legacy[DOUBLEPOST=1475103059][/DOUBLEPOST]Сколько не рылся пока ни одной толковой идеи по скачиванию файлов, используя JSON не нашёл[DOUBLEPOST=1475128544][/DOUBLEPOST]Ура! Спустя 4 часа безуспешного печатания кода, я реализовал загрузку либрариансов по JSON!
    Короче принцип такой:
    У нас есть главный цикл считывания name из libraries
    Затем от строит путь к каждому файлу и проверят, если пути нет, он создаёт папки, затем загружает файл.
    Если при этом существуют параметры exact_url и/или deleteEntries, он грузить exact_url и затем удаляет deleteEntries из скаченного jar, редактируя его как архив и используя Ionic.Zip.dll
    Теперь осталось ещё подумать над закачкой папки assets[DOUBLEPOST=1475129546][/DOUBLEPOST]Если кому-нибудь не сложно напишите полный принцип скачивания assets, я примерно уже и сам понял.
    Тут главный файл indexes/legacy.json (путь у нему также указан в JSON-е версии) из которого скачиваются файлы по принципу:
    И потом переименовываются во что надо.
    Но если кому не лень, можете написать![DOUBLEPOST=1475163674][/DOUBLEPOST]Ребят, помогите плиз, как сделать загрузку natives?
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Разве в шарпе нет как и в жабе mkdirs, который создает сразу все каталоги.[DOUBLEPOST=1475173973,1475173752][/DOUBLEPOST]Не стандартные ссылки пишутся в url. И да, качаются либы только под нужную платформу в моджанг лаунчере и турке.[DOUBLEPOST=1475174484][/DOUBLEPOST]По поводу assets, 1.6.* юзает virtual/legacy/[DOUBLEPOST=1475174758][/DOUBLEPOST]
    Тут все просто, берем первые 2 символа из dd85fb564e96ee2dbd4754f711ae9deb08a169f9. Это и будет нада папка dd/[DOUBLEPOST=1475174937][/DOUBLEPOST]
    Нативы лежат в джарниках, тег "extract": означает распаковку в папку natives exclude, пропустить папку-файл, не распаковывать.[DOUBLEPOST=1475175039][/DOUBLEPOST]"rules": [
    {
    "action": "allow",
    "os": {
    "name": "windows"
    }
    }
    Тут все просто, качать только под форточкой.
     
  4. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Спасибо за инфу, всё опробую, отпишусь!

    Это я уже переделал, по принципу разделителя, т.е. Он тупо создаёт все каталоги и подкаталоги пока существует слэш "/" ! Работает просто идеально!

    Вопрос, как это потом переделать в music/hal3.ogg
    По фразе:
    "music/hal3.ogg": {
    "hash": "dd85fb564e96ee2dbd4754f711ae9deb08a169f9",
    "size": 1923269
    },
    И нужен ли вообще "size", а то я так понял, размер значения не имеет? =D
    А с нэйтивами порпобуем![DOUBLEPOST=1475177988,1475177140][/DOUBLEPOST]А вчера я ещё кое-что придумал, ведь на c# можно килить процессы других программ, так вот, по этому принципу можно сделать мини-защиту от школололо, которые кроме читэнжина, вообще ничем пользоваться не умеют, ну и некоторые (более продвинутые) ещё сессию ваейршарком пытаются спереть.
    Используя всякие примочки от c#, можно сделать неплохую защиту для лаунчера, если например его юзать на проекте.
    А от школьников ещё может такая капча спасти:
    [​IMG]
    =D

    Так что можно успешно сделать не плохой лаунчер для своего проекта!
     
  5. Santa

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

    Баллы:
    66
    Имя в Minecraft:
    Santa64
    У меня лаунчер на C#. Сам его писал с нуля. Это дело неблагодарное...
    Открою секрет: лаунчер на изи разбирается и можно сделать обход.
    Есть один выход: писать свою библиотеку, в которой будет весь функционал для лаунчера.
     
  6. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    А защитить исходники нельзя?[DOUBLEPOST=1475259835,1475259775][/DOUBLEPOST]Это совсем не сложно! Зато защитив, его разобрать нельзя будет никак!
     
  7. Santa

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

    Баллы:
    66
    Имя в Minecraft:
    Santa64
    Все известные мне обходы на мой лаунчер не работают.
    Я его защитил. Просто тебя предупреждаю.
     
  8. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ничего переделывать не нужно. Качаешь в assets/objects/dd/85fb564e96ee2dbd4754f711ae9deb08a169f9
    У старых асотов парсеп в assets/virtual/legacy/sounds.json
    А legacy.json это вроде старый костыль под 1.7.2. Но эта версия не имеет смысла.[DOUBLEPOST=1475271841,1475271510][/DOUBLEPOST]
    Универсалка от костика сдувает всех.
     
  9. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    XD У меня теперь новая проблема! Это скан самого json-а!
    Я гадаю и не могу понять, как из этого:
    "minecraft/sounds/entity/rabbit/attack2.ogg": {
    "hash": "4b90ff3a9b1486642bc0f15da0045d83a91df82e",
    "size": 7268
    },
    "minecraft/sounds/entity/shulker/close5.ogg": {
    "hash": "e555fcece121879fe0becbada9d01dea27ab153d",
    "size": 5376
    },
    Извлечь имя (minecraft/sounds/entity/rabbit/attack2.ogg) =D
    На кибер форуме кажись тоже никто не знает! XD
    Я даже нарыл библиотеку Newtonsoft.Json для парсинга JSON-а, но она тоже этого не умеет, так как тут нет параметра, было бы например "name" : "...", а то что есть - это проблема![DOUBLEPOST=1475276091,1475275901][/DOUBLEPOST]
    Это что ещё такое, а ну ка по-подробнее...[DOUBLEPOST=1475276776][/DOUBLEPOST]
    Мну нужно так, чтобы все версии работали, а 1.7.2 не грузится без переделки в папку virtual, у него даже в джосннике указано: "virtual": true
     
  10. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Это называются ключи, их и получай. Криво гуглил просто.

    Первая ссылка в гугле.

    Код:
    JObject obj = JObject.Parse(response);
    foreach (var pair in obj) {
        Console.WriteLine (pair.Key);
    }
     
    Последнее редактирование: 1 окт 2016
  11. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Да про ключи огромное спасибо! Но тут опять проблема! Нам-то надо читать исключительно всё-то, что под "objects"[DOUBLEPOST=1475297061,1475297025][/DOUBLEPOST]Ну и естественно кибер форум опять ничего не знает!
     
  12. Santa

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

    Баллы:
    66
    Имя в Minecraft:
    Santa64
    Впервые слышу. Дай ссылку на инфу
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Не имеет значения. Получаешь objects, потом считываешь ключи других объектов.
     
  14. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Он тупо выводит objects далее всё! Я как только уже не пробовал и не гуглил! Ничего не выходит!
     
  15. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тупой что ли? Получаешь значение objects, потом из него ключи.
     
  16. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Давай обойдёмся без оскорблений! Я так уже делал, значение objects получить невозможно, так как там стоят фигурные, а не квадратные скобки! {}, а если и как-то попытаться, он тупо выдаст пустую переменную![DOUBLEPOST=1475346987,1475346669][/DOUBLEPOST]Или же, вот так:
    [​IMG][DOUBLEPOST=1475348450][/DOUBLEPOST]Я уже писал, что всегда недолюбливал JSON в C#, я попросил помочь, так что оскорбление тут твоё совсем не уместно![DOUBLEPOST=1475349758][/DOUBLEPOST]Кажись я понял в чём дело! Он не может прочитать JSON!
     
  17. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Опять же не имеет значения какие там объекты. Читаешь объект objects и все.
     
  18. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Я же говорю, в этом и вся проблема, ОН НЕ ЧИТАЕТСЯ![DOUBLEPOST=1475350169,1475349985][/DOUBLEPOST]Я по какой-то причине не могу даже текст из него извлечь:
    Код:
    string assetsindexfile = File.ReadAllText(@"C:\1.9.json");
                MessageBox.Show(Convert.ToString(assetsindexfile));
    А результат, такой же как и на скриншоте!
     
  19. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Ща попробуем твоим методом, ведь мой метод джсонник версии читает превосходно, а с index, вот что:

    [​IMG]

    [​IMG][DOUBLEPOST=1475350915,1475350575][/DOUBLEPOST]Ещё веселее:
    [​IMG]
    http://s018.radikal.ru/i522/1610/b2/0415ec495fc9.png
     
  20. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    У меня нет визуалки для шарпа, я его не юзаю. Просто ищи как получить объект по ключу.
     
  21. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    У меня кажись есть одна версия, как думаешь, может ли быть, что файл слишком большой для чтения?
    4200 строк, как не верти!
     

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