Часть кода игры Minecraft была передана в Open Source корпорацией Microsoft

Часть исходного кода игры Minecraft: Java Edition была легально опубликована на GitHub под свободной лицензией корпорацией Microsoft.

Код был открыт под лицензией MIT и представляет собой Java-библиотеки Brigadier и DataFixerUpper. Они позволяют разбирать, отправлять и обрабатывать пользовательские команды, а также обрабатывать данные для новых версий игры.

Раньше основным способом увидеть этот код для энтузиастов была «декомпиляция» — конвертация байт-кода обратно в человеко-читаемый код на Java. Многим хватало и этого, но, конечно, «исходные тексты», полученные таким путем, были несколько труднее для восприятия чем оригинальные исходники.

В дальнейшем планируется «освобождение» других универсальных подсистем Minecraft, которые могут оказаться полезными для разработки других игр и упрощения труда мод-мейкеров. Вероятно, на следующем этапе будут открыты исходные тексты полностью переписанного движка рендеринга Blaze3D, планируемого для релиза в Minecraft версии 1.14.

СТАНЬ РАЗРАБОТЧИКОМ МАЙНКРАФТА MOJANG НУЖДАЕТСЯ В ТЕБЕ | ЧАС КОДА | HOUR OF CODE

код игры майнкрафт на java

Brigadier представляет собой инструмент для парсинга и диспетчеризации команд. По словам разработчиков, библиотека использует данные пользовательского ввода в Minecraft, и превращает их в функцию, которую игра будет выполнять. С точки зрения пользователя компонент выглядит как стандартная консоль с подсветкой синтаксиса команд и автодополнением ввода.

код игры майнкрафт на java

DataFixerUpper включает инструменты для инкрементальной сборки, слияния и оптимизации операций преобразования данных, необходимые для переноса существующих игровых данных в новые версии Minecraft.

Исходный код Майнкрафт: как его достать и что с ним можно сделать?

код игры майнкрафт на java

Майнкрафт — это одна из самых знаменитых игр нашего времени. Над ее созданием и поддержкой трудится команда шведских разработчиков Mojang Java Studios. Исходный код в Майнкрафт в целом держится в секрете, не считая тех наработок, что есть в darknet’е. Однако буквально недавно команда разработчиков опубликовала несколько легальных частей кода под свободной лицензией. Чуть позже остановимся на этом подробнее.

Почему считают, что Майнкрафт — для детей?

Нрави тся Майнкрафт детям по нескольким простым причинам:

Код Майнкрафта — это Java?

Сделано это для того, чтобы была возможность объединять все версии с разных платформ:

К сожалению, Java не могла обеспечить работу игры на iOS, поэтому было принято такое решение.

Где и как достать исходный код Майнкрафта | Под капотом

Вот и получается, что код Майнкрафта доступен в двух версиях:

Где найти исходный код Майнкрафта?

Но вот, буквально недавно, были легально опубликованы несколько пакетов кода Java Edition. Найти их можно на GitHub. Они распространяются открыто и со свободной лицензией MIT корпорации Microsoft. В своем составе они представляют две библиотеки Java:

Эти библиотеки открыли возможность разбивки, отправки, обработки пользовательских команд и данных от новых версий игры.

На этом все не остановится. Как говорят разработчики, в дальнейшем они планируют еще о публиковать в открытом доступе другие библиотеки и куски исходного кода Майнкрафт. Это будет делаться для того, чтобы облегчит ь разработку других подобных игр и труд разработчиков модификаций.

Библиотека Brigadier

Данной библиотекой пользоваться довольно просто — нужны минимальные знания.

Библиотека DataFixerUpper

Данная библиотека представляет собой набор инструментов, чтобы можно было собрать, склеить и оптимизировать преобразованные данные, которые нужны будут для добавления их в новые версии игры Майнкрафт.

Полностью Java код Майнкрафта пока открыва ть не будет, хотя у разработчиков были мысли и об этом. Он говорят, что пока исходный код Minecraft будет открываться частями и по запланированному графику.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Делаем свой minecraft на JavaScript

Добро пожаловать в самую запутанную архитектуру проекта. Да я умею писать вступление.

Попробуем сделать небольшую демку minecraft в браузере. Пригодятся знания JS и three.js.

Немного условностей. Я не претендую на звание лучшее приложение столетия. Это всего лишь моя реализация для данной задачи. Также есть видео версия для тех кому лень читать(там тот же смысл, но другими словами).

В конце статьи есть все нужные ссылки. Постараюсь как можно меньше воды в тексте. Объяснять работу каждой строки не буду. Вот теперь можно начать.

Читайте также:  Как зарядить химическую лабораторию в Майнкрафте

Для начала чтобы понимать какой будет итог, то вот демка игры.

Разделим статью на несколько частей:

Структура проекта

Вот так выглядит структура проекта.

index.html — Расположение канваса, немного интерфейса и подключение стилей, скриптов.
style.css — Стили только для внешнего вида. Самое важное это кастомный курсор для игры который располагается в центре экрана.

texture — Здесь лежат текстуры для курсора и блока земли для игры.
core.js — Основной скрипт где происходит инициализация проекта.
perlin.js — Это библиотека для шума Перлина.
PointerLockControls.js — Камера от three.js.
controls.js — Управление камерой и игроком.
generationMap.js — Генерация мира.
three.module.js — Сам three.js в виде модуля.
settings.js — Настройки проекта.

Игровой цикл

В core.js нужно провести инициализацию three.js, настроить его и добавить все нужные модули от игры + обработчики событий… ну и игровой цикл запустить. В учет того, что все настройки стандартные, то объяснять их нет смысла. Поговорить можно про map (он принимает сцену игры для добавления блоков) и contorls т.к. он принимает несколько параметров. Первый это камера от three.js, сцену для добавления блоков и карту чтобы можно было взаимодействовать с ней. update отвечает за обновление камеры, GameLoop — игровой цикл, render- стандарт от three.js для обновления кадра, событие resize также стандарт для работы с канвасом (это реализация адаптива).

Настройки

В настройки можно было вынести и другие параметры, например, настройки three.js, но я сделал без них и сейчас здесь лишь пара параметров отвечающие за размер блоков.

Генерация карты

В классе Map у нас есть несколько свойство которые отвечают за кеш материалов и параметры для шума Перлина. В методе generation мы загружаем текстуры, создаем геометрию и меш. noise.seed отвечает за стартовое зерно для генерации карты. Можно рандом заменить на статичное значение чтобы карты всегда была одинаковая. В цикле по X и Z координатам начинаем расставлять кубы. Y координата генерируется за счет библиотеки pretlin.js. В конечном итоге мы добавляем куб с нужными координатами на сцену через scene.add( cube );

Камера и управление

Я уже говорил, что controls принимает параметры в виде камеры, сцены и карты. Также в конструкторе мы добавляем массив keys для клавиш и movingSpeed для скорости. Для мыши у нас есть 3 метода. onClick определяет какая кнопка нажата, а onRightClick и onLeftClick уже отвечают за действия. Правый клик(удаление блока) происходит через raycast и поиска пересеченных элементов.

Если их нет, то прекращаем работу, если есть, то удаляем первый элеент. Левый клик работает по схожей системе. Для начала создаем блок. Запускаем рейкаст и если есть блок который пересек луч, то получаем координаты этого блока. Далее определяем с какой стороны произошел клик.

Меняем координаты для созданного куба в соответствии со стороной к которой мы добавляем блок. градация в 5 единиц т.к. это размер блока(да здесь можно было использовать свойство из settings).

Как работает управление камерой?! У нас есть три метода inputKeydown, inputKeyup и update. В inputKeydown мы добавляем кнопку в массив keys. inputKeyup отвечает за очистку кнопок из массива которые отжали. В update идет проверка keys и вызывается moveForward у камеры, параметры которые принимает метод это скорость.

Ссылки

Как и обещал. Весь материал который пригодится.

Если есть желание, то на можете добавить свой функционал к проекту на гитхаб.

Исходники Minecraft#

Мы разрабатываем моды для Minecraft, а значит находимся в очень тесной связи и с ним.

Иногда возникают вопросы вида: * Как сделать портал? * Как отловить правый клик по блоку? * Как добавить описание под названием предмета?

Ответы на подобного вида вопросы ВСЕГДА нужно искать в исходном коде Minecraft. 99% того, что вы хотите создать в своем моде уже было реализовано в Minecraft. Можно просто посмотреть, как (правильно) сделано в игре, и, на основе готового примера, сделать что-то свое.

Для этого нам нужно уметь обращаться к исходным кодам и ассетам (звукам, текстурам, моделям) Minecraft.

В Intellij Idea исходники можно найти, открыв в проводнике слева вкладку External Libraries и найдя файл «forgeSrc-версия Minecraft—версия Forge.jar».

Читайте также:  Включить minecraft шеди мен

Откройте его и увидите достаточно много папок:

код игры майнкрафт на java

Eclipse#

Пояснение#

В пакете assets/minecraft находятся все ресурсы Minecraft: текстуры, JSON описания моделей, файлы локализации и так далее.

В пакете net.minecraft находится исходный код игры. Файлов там очень много и именно там находятся ответы на 90% всех ваших вопросов.

Пример#

Там есть следующий кусок кода:

Вот мы и нашли метод, который надо записать в файле нашего блока. Он будет выполняться, когда по нашему блоку кликнут.

Внутри него видим следующий метод:

Строчка this.world.createExplosion(this, this.posX, this.posY + (double)(this.height / 16.0F), this.posZ, 4.0F, true); как раз то, что нам нужно!

В нашем блоке BlockTest.java осталось записать:

Почти наверняка то, что вы хотите добавить в своем моде уже реализовано в игре в том или ином смысле. Старайтесь найти примеры в исходном коде и используйте их для реализации своих идей.

К тому же, ориентируясь на исходники игры, вы будете лучше понимать их внутреннюю структуру, что сильно облегчает создание модов.

код игры майнкрафт на java

Недавно майнкрафт обновился до майнкрафт 1.17, многие пользователи пиратских лаунчеров столкнулись с тем, что данная версия игры не запускается, ведь она требует Java 16 версии и игра просто не запускается. Некоторые лаунчеры уже умеют автоматически исправлять эту проблему (TL Legacy например), другие научатся в ближайшее время, а пока в этой новости Вы узнаете где взять эту джаву и решить ошибку запуска.

Давайте немного разберемся, что это и как:

Начиная с предварительной версии 21w19a и с релиза 1.17 игра работает на более новой версии JAVA, лицензионный лаунчер это знает, он автоматически скачивает и устанавливает все необходимое, а вот многие пиратские лаунчеры этого пока не умеют, потому пиратам придется делать это руками.

К сожалению, не достаточно просто указать в лаунчере новую версию JAVA, новые версии игры работать будут, другие, более старые версии игры работать тоже будут, а вот многие моды на старых версиях всего скорее работать не будут, так как они устарели.

Где скачать и как установить Java 16:

Вам не нужно удалять старую версию Java (она нужна для игры на старых версиях), нужно скачать и установить 16 версию, и использовать именно ее для запуска снапшотов и версии 1.17.

Скачать Java 16:

Адреса расположения версий Java:
При установке 32bit: C:Program FilesAdoptOpenJDKjdk-16.0.1.9-hotspotbinjava.exe
При установке 64bit: C:Program FilesJavajdk-16.0.2binjava.exe

Предупреждение :
Повторю еще раз, для особенно слепых, кратко и поделу.
До Minecraft 1.17, а именно до снапшота 21w19a все версии игры отлично работали на Java 1.8.0_281, с модами и без модов, НО теперь все новые версии игры требуют версии Java 16, лиц лаунчер сам скачивает и использует нужную версию, а вот пиратам не повезло.

Многие пиратские лаунчеры этого пока не умеют, возможно не все научатся, потому что бы сейчас, а может быть и потом запускать на пиратском лаунчере Minecraft 1.17 нужно установить Java 16 и использовать именно ее для запуска игры. Прочие ванильные версии Minecraft работают на Java 16, а вот версии с модами НЕ РАБОТАЮТ на Java 16, для их запуска вам нужно указывать старую добрую Java 1.8.0.

  • ← код земли в майнкрафте
  • код каменного кирпича в майнкрафт →

Источник: 0031477.ru

Fabric Wiki

Если вы хотите начать разработку модов с использованием Fabric, возможно, некоторые статьи могут вас заинтересовать.

Подготовка

Эти страницы помогут вам настроить среду разработки и полуавтоматические выпуски.

Основы

Эти страницы являются обязательными для чтения при разработке модов. Если вы новичёк, то рекомендуется прочитать следующее.

Терминология
Инструменты для разработки

Продвинутым

Предметы

Блоки

Эти страницы помогут вам создать блоки, хранить предметы и данные в блоках, а также создавать модели и состояния блоков.

Генерация данных

Эти страницы помогут вам с Fabric Data Generation API, который генерирует файлы JSON с помощью генераторов данных.

Генерация мира

Команды

Эти страницы помогут вам с библиотекой Brigadier от Mojang, которая позволяет создавать команды со сложными аргументами и действиями.

События (Ивенты)

Сущности

Жидкости

Миксины

Эти страницы помогут вам в использовании библиотеки Mixin от SpongePowered, которая является очень сложной темой. Мы рекомендуем вам внимательно прочитать эти страницы.

Читайте также:  Для чего в Майнкрафте корус

Разное

Некоторые из этих страниц в настоящее время находятся в стадии написания, некоторые могут быть недоступны.

Yarn

Помощь в разработке Fabric

Процедура изменения Fabric — или как сделать так, чтобы предложенное Вами изменение внесли (или наоборот!)

FabLabs — тестовая площадка для макетирования новых возможностей Fabric без создания pull-запроса

Ищете старые туториалы? Вероятно, они были заархивированы. Вы можете просмотреть архивные страницы здесь.

ru:tutorial:reading_mc_code

Table of Contents

Чтение исходного кода Minecraft

Чтение исходного кода Minecraft — важный навык в моддинге, потому что:

Большинство вещей Minecraft не задокументированы.
Документации/туториалы устаревают довольно быстро.

Чтобы прочитать исходный код Minecraft, вам нужно сначала сгенерировать исходный код. Смотрите раздел “Генерация исходного кода Minecraft” в Настройка среды разработки.

Поиск класса Minecraft

Чтобы найти класс Minecraft, выполните следующие действия:

IntelliJ IDEA

Откройте панель поиска с помощью Ctrl + N .
Установите область поиска на Project and Libraries или шире.
Введите название класса в поле поиска.

Visual Studio Code

Откройте панель поиска с помощью Ctrl + P .
Введите имя класса с префиксом # .

В коде Visual Studio вы также можете использовать Ctrl + T , чтобы напрямую открыть поиск по классам.

Поиск класса, который вы хотите увидеть

Поиск части кода, которую вы хотите увидеть, является сложной задачей. Вот несколько советов:

В полной мере воспользуйтесь возможностями IDE для поиска соответствующего кода, такого как Call hierarchy , Method hierarchy или Type hierarchy .

Взгляните на моды с открытым исходным кодом, которые похожи на то, что вы хотите создать.

Если вы добавляете новый контент, есть большая вероятность, что вам потребуется доступ к реестрам, определенным в net.minecraft.util.registry.Registry .

Имейте в виду, что все начинается с одного основного класса ( net.minecraft.client.main.Main для клиента, net.minecraft.server.Main для выделенного сервера).

Чтение байт-кода

Чтение байт-кода иногда требуется, потому что:

Миксины работают с байт-кодом, а не с исходным кодом. Понимание байт-кода имеет важное значение, когда вы пишете сложный миксин.

Декомпилятор (FernFlower) не идеален. Иногда он выдает недопустимый java-код, такой как int i = true; .

Если вы не знакомы с байт-кодом java, обратитесь в спецификацию JVM.

Чтобы просмотреть байт-код, выполните следующие действия:

IntelliJ IDEA

Откройте класс, байт-код которого вы хотите увидеть.
Выберите View в главном меню.
Выберите Show Bytecode .

Другие инструменты

Если ваша IDE не поддерживает просмотр байт-кода, используйте другие средства просмотра байт-кода, такие как этот.

Часто задаваемые вопросы

Где находятся сгенерированные исходники?

Они находится либо в пользовательском кэше gradle ( ~/.gradle/caches/fabric-loom ), либо в кэше gradle проекта ( ./.gradle/loom-cache ). Вы можете использовать исходники jar вне вашего IDE.

ru/tutorial/reading_mc_code.txt · Last modified: 2023/01/06 09:33 by l_mrboom_l

Page Tools

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International

Источник: fabricmc.net

Microsoft открыла часть кода игры Minecraft в виде библиотек

Minecraft: Brigadier и Data Fixer Upper

Разработчики Minecraft: Java Edition открыли часть исходного кода игры в виде Java-библиотек Brigadier и Data Fixer Upper. Они позволяют разбирать и направлять команды, а также обрабатывать данные для новых версий игры. Код доступен на GitHub под лицензией MIT.

Натан Адамс (Nathan Adams), один из разработчиков игры, пояснил, что открытые игровые библиотеки — это элементы движка Minecraft: Java Edition, и их можно использовать для модификаций или сторонних проектов.

Brigadier

Brigadier представляет собой средство для парсинга и диспетчеризации команд. По словам Адамса, библиотека берёт данные, которые пользователь вводит в Minecraft, и превращает их в функцию, которую игра будет выполнять.

Data Fixer Upper

Библиотека Data Fixer Upper включает инструменты для инкрементальной сборки, слияния и оптимизации операций преобразования данных, которые используются для переноса игровой информации в новые версии игры.

Планы

Однако Brigadier и Data Fixer Upper дело не ограничится. Команда разработчиков также рассчитывает открыть новый движок отрисовки Blaze3D, который создаётся для Minecraft: Java Edition 1.14.

Постепенно разработчики планируют открыть многие библиотеки игры, хотя о полной open source версии речи пока не идёт.

Источник: tproger.ru