Minecraft Wiki
Advertisement
Если есть совет по данной теме или заметили неточность, то не стесняйтесь и поправьте страничку Смайлик (обычный)

Перевод статейки отсюда. Наткнулся на неё ищя информацию по URL-ам загрузки assets, так как пишу свой лаунчер. Мой перевод кое-где кривоват, но как уж есть - если уж совсем невыносимо, сделайте правку.

Игра (скорее лаунчер) использует формат JSON, читайте документацию, если непонятны значения слов "пара" и "объект".

Игра

Имена (id) всех загружаемых версий в игре хранятся в этом файле:

http://s3.amazonaws.com/Minecraft.Download/versions/versions.json

Jar-файл данной версии хранится здесь:

http://s3.amazonaws.com/Minecraft.Download/versions/<версия>/<версия>.jar

Дополнительная информация, список библиотек и необходимые аргументы для версии находятся в этом файле:

http://s3.amazonaws.com/Minecraft.Download/versions/<версия>/<версия>.json

После обновлений лаунчера форматы данных, хранящися в файле <версия>.json могут измениться. Пара minimumLauncherVersion в файле <версия>.json должна не допускать ошибочных обновлений (то есть старый лаунчер в соответствии со значением этой пары откажется закачивать и запускать версию, которая пердназначена для более нового лаунчера)

Библиотеки

Библиотеки используются всеми версиями Minecraft и закачиваются лаунчером отсюда:

https://libraries.minecraft.net/

Файл <версия>.json содержит названия библиотек, которые необходимы для запуска. Внутри файла есть объект libraries, который содержит информацию о каждой необходимой библиотеке. Например:

{
  "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3",
  "natives": {
    "linux": "natives-linux",
    "windows": "natives-windows",
    "osx": "natives-osx"
  },
  "extract": {
    "exclude": [
      "META-INF/"
    ]
  },
  "rules": [
    {
      "action": "allow",
      "os": {
        "name": "osx",
        "version": "^10\\.5\\.\\d$"
      }
    }
  ]
}

Значение пары name используется для получения URL для загрузки версии. Формат значения:

<сборка>:<название>:<версия>

Преобразованный URL для загрузки выглядит уже так:

<сборка>/<название>/<версия>/<название>-<версия>.jar

где путь (папка на сервере с библиотекой) является результатом замещения всех точек в <сборка> слэшами ('/').

Лаунчер также загружает контрольную сумму в формате sha1 отсюда:

<сборка>/<название>/<версия>/<название>-<версия>.jar.sha1

Объект natives представляет из себя строки, которые будут выбираться в зависимости от системы (и, иногда, разрядности) и вставляться между расширением и версией библиотеки. Обобщенный формат:

<название>-<версия>-<строка из объекта natives>.jar

Такие преобразования делаются с именем любой библиотеки, объект которой содержит объект natives.

Объект extract ("распаковка") содержит правила распаковки библиотеки.

Объект rules ("правила") используется для того, чтобы загружать библиотеку только в зависимости от системы. Когда значение пары action равно allow, библиотека будет загружена, если название системы соответствует значению одной из пар объекта os (может быть linux, windows или osx). Когда значение пары action равно disallow, библиотека не будет загружена, если название системы соответствует значению одной из пар объекта os. Если объект os отсутствует, то эти правила будут применяться для non-specified platforms.


В качестве примера, ниже приведен полный URL загрузки библиотеки из под OS X:

https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.1-nightly-20130708-debug3/lwjgl-platform-2.9.1-nightly-20130708-debug3-natives-osx.jar

Все, что содержит библиотека, будет распаковано, кроме папки META-INF. Также, библиотека будет загружена, только если лаунчер запущен на OS X 10.5.

Assets

Игра загружает assets (ресурсы - звуки, музыка и языки) отсюда:

http://resources.download.minecraft.net/

Список необходимых для данной версии assets расположен здесь:

https://s3.amazonaws.com/Minecraft.Download/indexes/<index>.json 

где значение "index" равно значению пары "assets" в файле <версия>.json. Если оно отсутствует, то "index" будет равно "legacy" ("наследие", то есть для устаревших версий):

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

После этого лаунчер закачивает все необходимые для версии ресурсы отсюда

http://resources.download.minecraft.net/<первые два символа хэша>/<весь хэш>

сюда:

.minecraft/assets/objects/<первые два символа хэша>/<весь хэш>

и копирует с переименовыванием их в папку

.minecraft/assets/virtual/legacy/ 

для того, чтобы ресурсы были доступны версиям, не поддерживающим новую систему (1.7.2 и ниже).

Advertisement