Моды для Minecraft Server - как это работает?

9

Сервер Minecraft поставляется в виде одной банки. Как развиваются моды? Как они взаимодействуют с оригинальной банкой? Что там под капотом?

Какие технологии там задействованы? Я в основном парень на C ++ / Python, но я бы хотел кое-что узнать о разработке модов.

goodrone
источник

Ответы:

11

JAR - это просто ZIP-файл, содержащий различные файлы классов и другие используемые метаданные - это полностью стандартизированный формат.

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

Технически, моды для Minecraft - это действительно «взломанные» версии оригинального кода: нужно изменить настоящие файлы бинарных классов, чтобы игра узнала о новом материале; Официальной поддержки модов пока нет (хотя Notch заявил, что они будут работать над ним во время бета-тестирования).

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

Майкл Мэдсен
источник
Это не совсем верно - МакАдмин, например, был написан на C #
BlueRaja - Дэнни Пфлюгофт
@BlueRaja: На мой взгляд, MCAdmin на самом деле не мод, а индивидуальный сервер. Хотя это может позволить клиенту делать новые вещи с помощью команд, я считаю, что эти две вещи разные.
Майкл Мэдсен
А? Нет, это был определенно мод; это была обертка вокруг сервера майнкрафт. Для этого требовался сервер minecraft, поэтому он не был автономным. Я кратко посмотрел на источник, и он, казалось, перехватывал сетевые сообщения и изменял их при входе / выходе.
BlueRaja - Дэнни Пфлюгофт
3
@BlueRaja: Да, я мог поклясться, что это был отдельный сервер, но, опять же, я признаю, что никогда не использовал его. Это своего рода особый случай, поскольку он работает как прокси-сервер между игроком и сервером. Я все еще не совсем назвал бы это модом, но это может быть только я.
Майкл Мэдсен
6

Однопользовательские моды являются взломанными версиями оригинального кода. Многопользовательские моды сейчас разные. Почти все они используют серверную оболочку hey0, которая ссылается на minecraft_server.jar (или любой другой термин в языке Java), но определяет свои собственные классы функций, перегружает некоторые основные функции и запускает свой собственный main ()

Hey0 предоставляет мод API . Видеть

cthom06
источник
1

К вашему сведению, в ближайшем будущем Mojang выпустит «Mod API» (во время бета-тестирования, то есть до его официального релиза, который состоится примерно в ноябре 2011 года).

Фактически, это будет полный исходный код, как упомянуто в блоге Notch.

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

но сейчас вам нужно «декомпилировать» jar-файлы, чтобы увидеть частично запутанный код и перекомпилировать его для последующего использования / отладки.

Для этого я настоятельно рекомендую пакет Minecraft Coder's Pack http://mcp.ocean-labs.de/index.php/MCP_Releases.

на форумах также есть пара учебных пособий по моддингу: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

dominicbri7
источник