Исходный код Майнкрафт: как его достать и что с ним можно сделать?
Майнкрафт — это одна из самых знаменитых игр нашего времени. Над ее созданием и поддержкой трудится команда шведских разработчиков Mojang Java Studios. Исходный код в Майнкрафт в целом держится в секрете, не считая тех наработок, что есть в darknet’е. Однако буквально недавно команда разработчиков опубликовала несколько легальных частей кода под свободной лицензией. Чуть позже остановимся на этом подробнее.
Почему считают, что Майнкрафт — для детей?
- по своей сути он очень напоминает LEGO, но только в «цифре»;
- фантазия ребенка в игре ничем не ограничена;
- абсолютно свободные действия в игре : ломать, строить, рыть, ходить — легко .
Код Майнкрафта — это Java?
-
Windows;
-
Linux;
-
MacOS;
-
Android;
-
iOS.
-
на С++;
-
на Java Edition.
Где найти исходный код Майнкрафта?
- Brigadier;
- DataFixerUpper.
Библиотека Brigadier
Данная библиотека в основном используется как парсинг и диспетчер команд. Как говорят разработчики, их «Бригадир» может использовать данные (строку кода), которые вводит пользователь, чтобы превратить их в функцию , и уже данную функцию Майнкрафт сможет выполнить. Для пользователей же это обычная консоль, куда можно вводить команды . К оманды , правда , нужно вводить на языке Java.
Brigadier делит любую команду пользователя, чтобы проверить ее на ошибки и воспроизвести. Еще обработчик команд старается быть ненавязчивым и полезным, чтобы ускорить ваш процесс. Например , при вводе команд он предложит вам возможные варианты на выбор.
Данной библиотекой пользоваться довольно просто — нужны минимальные знания.
Библиотека DataFixerUpper
Данная библиотека представляет собой набор инструментов, чтобы можно было собрать, склеить и оптимизировать преобразованные данные, которые нужны будут для добавления их в новые версии игры Майнкрафт.
Если простым языком, то этот исходный код Minecraft делает следующее : д опустим , вы загружаете какой-нибудь мир в Майнкрафт. И так получилось, что там есть данные, которые не трогались больше 5 лет, потому что вы не посещали эти чанки все эти 5 лет. Так вот, как только игра начинает запускаться , сам Майнкрафт обращается к библиотеке DataFixerEpper, которая приводит чанки к современному формату.
Полностью Java код Майнкрафта пока открыва ть не будет, хотя у разработчиков были мысли и об этом. Он говорят, что пока исходный код Minecraft будет открываться частями и по запланированному графику.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
[Tutorial] [Forge] Основы программирования Minecraft 1.7.2
Ну вот, когда мы удостоверились что всё работает — давайте приступим к моддингу! Для начала, мы видим что у нас в левом столбце выдаёт ошибку, для того что бы её исправить нажимаем Minecraft -> src/java/main -> com.example.examplemod -> И открываем класс ExampleMod.java. В нём удаляем всё что написано в скобках public void init(FMLInitializationEvent event), у вас должно получиться так:
Теперь можно приступать к созданию нашего мода.
Первым делом нажимаем на Minecraft правой кнопкой мыши и выбираем New -> Source Folder, и называем src/и тут название вашего мода, например src/testmod. Теперь нажимаем на наш Source Folder src/testmod ПКМ и выбираем New -> Package и называем его net.testmod.stuff, затем нажимаем на наш пакет и так же выбираем New -> Class и называем его как нибудь, я предпочитаю называть главный класс файла ModCore, ну а вы как хотите.
Затем удаляем из этого класса всё и вставляем вот такой код:
Давайте разберём что и что обозначает:
Это название нашего пакета.
Это название нашего главного класса, в моём случае ModCore.
Тут мы указываем ID нашего мода, его название и версию соответственно.
Когда мы настроили наш главный класс, можно приступать к добавлению блока.
Первым делом отступаем две строчки от того где мы указывали версию мода и пишем:
Мы добавили public static для нашего блока, blockRubyOre (Моя прекрасная фантазия).
Далее в
Пишем такой код:
blockRubyOre — указывает на то что это наш блок который мы регистрировали выше, RubyOre — указывает к какому классу относится наш блок.
Указывает в какой вкладке креатива будет он располагаться, в нашем случае во вкладке Block.
Тут указанна наше текстура для блока, но добавление текстур мы разберём чуть позже.
После того как вы добавили этот код Вы видите что у Вас подчёркивает красным цветом надпись RubyOre, поэтому наводим на неё стрелку и выбираем Create Class «RubyOre» и в данный класс пишем вот такой код:
Обозначает что наш блок будет как камень, и будет ломаться киркой.
Обозначает его прочность, . но не взрывоустойчивость. 2F это чуть больше чем у обычного камня.
Ну вот и всё, сохраняем наш прогресс нажатием дискеты вверху, и можно запускать Minecraft и искать наш блок во вкладке Block креатива. В следующих частях я расскажу как добавить нормальное название и текстуру блоку.
Разработка собственного плагина для сервера Minecraft
Еще с детства я начал покорять бесконечные просторы Minecraft. Естественно о разработке в то время никакой речи не шло. Но с недавних пор загорелся идеей создать о свой проект серверов.
На Java до этого никогда не писал, но есть бекграунд на других языках, поэтому осталось только приспособиться. Соотвественно разработка плагинов, Bukkit и другие библиотеки вижу впервые, но посмотрев несколько туторов, стала понятна примерная концепция.
Ранее писал на таких языках как PHP, JS. В данный момент веду разработку на языке Go. Сильно привык к «гошке» и его синтаксису и в процессе написания плагина часто использовал синтаксис Go для написания логических конструкций.
Мне не сильно хотелось использовать какие-то готовые решения, ведь тогда не будет углубленных знаний, которые я получу в процессе написания кода. Хочется одновременно и поучить Java и написать что-то свое (самое главное).
В этой статье я не буду затрагивать процесс настройки окружения, установки IDE и стороннего софта.
Идея плагина
На серверах часто используются постройки, находящиеся в пустоте, например летающие лобби, острова. Такую модель постройки мы выбрали вместе с моим другом: летающие острова. Одной из проблем таких построек — Игрок может провалиться в пустоту и не выбраться.
Прошерстив Google мне удалось найти парочку подходящих плагинов, которые уже решают это проблему. Но один из них, который оказался поддерживаем разработчиком и самими ядром сервера, предоставлял ограниченный функционал, расширенный можно было приобрести на X евро. Фича, которая мне понравилась в платном плагине — создание анимаций из частиц после телепортации из пустоты.
Мне захотелось самому понять, как это сделать, разработать собственный плагин, а потом с удовольствием им пользоваться, поддерживать, находить баги — мое мелкое детище, как никак.
Создаем сам плагин
Назвал я плагин просто — VoidTeleport.
Первым делом создал класс для управления конфигурацией плагина.
Отлично! Класс для работы с конфигом уже есть, теперь нужно определиться со структурой файла config.yml . Нужно реализовать поддержку для разных миров, поэтому не придумал ничего проще, как просто указать список нужных миров.
Конфиг есть, теперь можно приступить к созданию обработчика событий. Мой выбор пал на событие EntityDamageByBlockEvent. Можно было бы и слушать событие PlayerMoveEvent, но оно случается гораздо чаще, чем триггер на получение урона. Лишняя нагрузка на сервер не нужна, поэтому стал слушать урон.
Тепер разберем вызов эффекта анимации при телепортации Spiral.spawn(player) . Назвал класс Spiral, потому что эффект будет в виде спирали.
Т.к. это мой первый плагин, то не стал заморачиваться с Пакетами и ProtocolLib.
Описываем анимацию в отдельном классе Spiral. Я предпочел реализовать спираль под названием Helix — достаточно простая в реализации модель. Пришлось немного вспомнить тригонометрию, но у меня получилось!
Почему в коде 23? Это число является ограничением для координаты y. Т.е. по сути спираль будет подниматься вверх на y = 2.3 . Как можно заметить, при указании смещения particleLocation.add(x, y / 10, z) y делится на 10. Еще одной причиной стало то, что спираль не успевает несколько раз «обернуть» игрока.
Собираем все вместе
Наконец можем собрать наш код в единой точке и протестировать, что получилось.
Результат
При заданным настройкам файле конфигурации мы успешно попадаем в указанную точки и наблюдаем просто классную анимацию, как по мне.
Name already in use
LWJGL-Minecraft / src / MineCraft.java /
- Go to file T
- Go to line L
- Go to definition R
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters