- Сначала разберёмся: что именно вам нужно — client.jar или server.jar
- Как получить доступ к файлам сервера и клиента для разных версий
- Что означает “piston-data.mojang.com” в URL
- Какие версии доступны для загрузки и как понять названия
- Есть ли связь между номерами версий и датами выпуска
- Стабильные и предварительные: какие различия между jar-файлами
- Как узнать, какая версия Minecraft вам нужна
- Где найти официальные ссылки на загрузку файлов Minecraft
- Как безопасно скачивать файлы Minecraft
- Переходим к модам: что такое Jar-in-Jar и как включить jarJar
- Каковы основные функции Jar-in-Jar
- Как добавить зависимости для включения в JAR-файл мода
- Как указать точную версию зависимости для включения (pin)
- Как включить зависимости времени выполнения в JAR
- Рекомендации по фильтрам зависимостей при fromRuntimeConfiguration
- Почему некоторые хотят публиковать Jar-in-Jar в Maven
- Связка с игрой: как это используют моды и что такое “World In a Jar”
- Итог: быстрый маршрут под вашу задачу
Если вы ищете jar для майнкрафт, обычно есть две причины: вы хотите скачать client.jar и server.jar нужной версии, либо вы делаете мод/сборку и вам нужно упаковать зависимости в один JAR. В статье разберём оба случая: как устроены версии, что означают названия вроде 25w46a и 26.2-snapshot-2, где брать официальные ссылки и как безопасно подключать зависимости через Jar-in-Jar (jarJar).
Сначала разберёмся: что именно вам нужно — client.jar или server.jar
В Minecraft у игры есть два разных артефакта:
| Файл | Для чего нужен | Куда обычно ставят |
|---|---|---|
| client.jar | запускает клиент (где вы играете и видите мир) | в настройках запуска/лаунчера |
| server.jar | запускает сервер (где крутится мир и подключаются игроки) | на серверной машине/в папке сервера |
Отличие важное: нельзя просто взять server.jar и ожидать, что клиент “запустится как обычно”, и наоборот.
Как получить доступ к файлам сервера и клиента для разных версий
Официальные .jar лежат в адресах вида:
https://piston-data.mojang.com/v1/objects/.../server.jarhttps://piston-data.mojang.com/v1/objects/.../client.jar
В примерах, которые часто встречаются в подборках, вы видите строки формата “номер версии → server.jar и client.jar”, например для 26.2-snapshot-2 указаны отдельные ссылки на server.jar и client.jar. Точно так же перечисляются версии 25w46a, 1.21.11, 1.21.11-rc3, и так далее.
Что означает “piston-data.mojang.com” в URL
piston-data.mojang.com — это хранилище, где Mojang держит игровые бинарники (в том числе jar-файлы) по “объектному” адресу. В URL есть хэш-часть, которая однозначно ведёт к конкретной версии артефакта.
Именно поэтому в адресах часто встречается много символов после /objects/ — это не “версия”, а идентификатор конкретного объекта.
Какие версии доступны для загрузки и как понять названия
Обычно вы встретите несколько типов версий:
- Стабильные релизы (например, 1.21.11)
- RC (release candidate — “кандидат в релиз”, почти готово)
- pre (предрелизная версия, тестируется раньше)
- snapshot (снепшот — более “сырой” и быстро меняющийся код)
- Буквенные снимки недели вида 25w46a (сокращённо: год/неделя/итерация)
Примеры из встречающихся названий:
- 26.2-snapshot-2 — snapshot №2 в серии для ветки 26.2
- 25w46a — 25-й год, 46-я неделя, первая итерация “a”
- 1.21.11-rc3 — третий кандидат на релиз для версии 1.21.11
- 1.21.11-pre5 — пятая предрелизная сборка
Есть ли связь между номерами версий и датами выпуска
Связь есть, но не всегда “прямая в лоб”.
- Для формата 25w46a связь с датой самая понятная: это привязка к неделям разработки (год/неделя).
- Для релизных номеров типа 1.21.11 и веток rc/pre/snapshot номер обычно отражает порядок появления и “этап готовности”, а точная дата — в истории релизов и уведомлениях разработчика.
Стабильные и предварительные: какие различия между jar-файлами
Формально файлы client.jar и server.jar всегда “про одну версию”, но по смыслу отличаются уровнем готовности к релизу:
| Тип версии | Какой риск | Как это ощущается |
|---|---|---|
| Стабильная | низкий | меньше неожиданных поломок |
| rc | средний | возможны последние правки |
| pre | выше | изменения ещё идут |
| snapshot | самый высокий | код может меняться быстро |
То есть если вам важна предсказуемость сервера, чаще выбирают стабильные релизы. Если же вы хотите тестировать новые функции — смотрят на pre/rc/snapshot.
Как узнать, какая версия Minecraft вам нужна
Обычно “правильная” версия зависит от цели:
- Вы запускаете обычный мир/сервер → берите ту же версию, на которой уже работают мир и моды (чтобы избежать несовместимости).
- Вы ставите мод → ориентируйтесь на требования мода (какая версия Minecraft поддерживается).
- Вы хотите конкретную дату/неделю разработки → формат 25w46a и подобные подсказки помогают попасть в нужный этап.
Главное правило: jar-файл должен соответствовать ожидаемому Minecraft-версией окружению.
Где найти официальные ссылки на загрузку файлов Minecraft
Ищите официальные источники, где указаны прямые адреса на client.jar/server.jar. Практически это выглядит так: таблица “версия → две ссылки” (client/server) с доменом piston-data.mojang.com.
Важный ориентир: официальный URL почти всегда содержит server.jar и client.jar как “концовку” и использует объектный путь с хэшом.
Как безопасно скачивать файлы Minecraft
Чтобы снизить риск подмены и “битых” загрузок, придерживайтесь простых правил:
- Скачивайте jar только из официальных доменов (в таких адресах используется piston-data.mojang.com).
- Убедитесь, что скачивается именно client.jar или server.jar, а не “что-то похожее”.
- Храните jar рядом с логом/настройками запуска: если что-то пошло не так, будет проще понять, какая version была использована.
- Если вы собираете модпроект, не подсовывайте вручную jar из случайных мест: используйте версию, которую требует сборка.
Переходим к модам: что такое Jar-in-Jar и как включить jarJar
Если запрос “jar для майнкрафт” связан с разработкой, вам может быть нужен Jar-in-Jar — способ положить зависимости внутрь jar мода, чтобы сборка была проще и “не зависела” от того, установлены ли библиотеки отдельно.
Jar-in-Jar генерирует метаданные внутри вашего мода в META-INF/jarjar/metadata.json. Это помогает загрузчику понять, какие зависимости лежат “внутри” вашего JAR.
Включается опционально и настраивается так, чтобы заработал механизм jarJar:
jarJar.enable()— включает систему- конфигурируете таск jarJar и какие зависимости добавлять
Ключевая мысль: это делается в build.gradle проекта ForgeGradle/сборки, чтобы ваш мод упаковал нужные зависимости.
Каковы основные функции Jar-in-Jar
Основные задачи jar-in-jar такие:
- Включить зависимости в один файл jar
- Поддержать разные версии зависимостей через “диапазоны”
- При необходимости “прибить” конкретную версию, используя pin
- При желании подключать зависимости времени выполнения, но аккуратно
Как добавить зависимости для включения в JAR-файл мода
В настройках сборки вы добавляете зависимости через jarJar конфигурацию.
Пример подхода (идея, а не копипаст):
- Вы объявляете, какие зависимости включить “внутрь” мода.
- Вместо одной версии часто указывают диапазон, например: “берём максимальную поддерживаемую в пределах [2.0, 3.0)”.
Так вы обеспечиваете совместимость с тем, что есть в окружении пользователя.
Как указать точную версию зависимости для включения (pin)
Иногда диапазон не подходит: вам нужна конкретная сборка библиотеки. Тогда вы используете jarJar#pin:
- компилируетесь против “высокой поддерживаемой” из диапазона,
- а внутрь мода кладёте pinned версию (точно ту, которую выбрали).
Это помогает избежать ситуаций, когда при запуске у пользователя подтянулась “почти такая же” зависимость и из‑за отличий мод ведёт себя непредсказуемо.
Как включить зависимости времени выполнения в JAR
Есть режим, который включает runtime-зависимости внутрь вашего jar через fromRuntimeConfiguration.
Но здесь важное предупреждение: если не задавать фильтры, можно случайно упаковать вообще всё, включая Minecraft и Forge. Это не то, что обычно нужно, и может ухудшить совместимость и размер.
Рекомендации по фильтрам зависимостей при fromRuntimeConfiguration
Чтобы упаковка была контролируемой:
- Делайте минимальный include: добавляйте только нужные библиотеки.
- Используйте exclude, чтобы убрать ненужное.
- Применяйте фильтры по шаблонам пакетов (например, исключать группы библиотек, которые не должны попадать в ваш мод).
Фильтры — это “страховка”, чтобы ваш мод jar не превращался в огромный “архив всего подряд”.
Почему некоторые хотят публиковать Jar-in-Jar в Maven
Механика Jar-in-Jar технически позволяет публиковать результат в Maven-репозиторий. Однако это обычно делают ради совместимости пайплайнов и сборочных цепочек.
С практической точки зрения, такая публикация для “обычного” сценария может быть не самой полезной — важнее корректная сборка и включение зависимостей в итоговый jar.
Связка с игрой: как это используют моды и что такое “World In a Jar”
В теме модов встречается идея “мир в jar”, но тут важно не путать термины.
- Jar-in-Jar — техническая упаковка зависимостей модов
- “World In a Jar” — геймплейная механика мода, где игрок работает с “world jar” блоком
То есть “jar” в названии мода — это про игровую механику, а “Jar-in-Jar” — про то, как собирать и упаковывать мод.
Итог: быстрый маршрут под вашу задачу
Если вы хотите просто скачать jar для майнкрафт:
- берите нужную version
- скачивайте именно server.jar или client.jar
- используйте официальные URL, где фигурирует piston-data.mojang.com
Если вы делаете мод:
- включайте Jar-in-Jar (jarJar.enable)
- добавляйте зависимости через jarJar configuration
- при необходимости используйте pin
- аккуратно работайте с runtime через фильтры include/exclude, чтобы ваш jar был корректным и совместимым