Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 1 год назад .

Через какие фреймворки работают Minecraft Java, Bukkit или Spigot и т.д. сервера? Как это работает на уровне хоста и сервера? Через что происходит управление RCON в Minecraft серверах? Хочу подробного ответа, или статей, литературу на эту тему, но именно не в целом про Java, а более узко, только по Minecraft.

Отслеживать
задан 27 ноя 2021 в 20:07
Еврейская мафия Еврейская мафия
11 3 3 бронзовых знака

Глупо конечно звучит, но minecraft сервера работают на minecraft сервере, который написал разработчик. Не секрет, что minecraft поддерживает систему моддинга и плагинов, чем и пользуются люди. Ваш вопрос можно свести к «как пишутся плагины и моды». Исходный код этих плагинов есть на github и любой желающий может ознакомится подробнее. Правда сейчас github слег, поэтому посмотреть описание не могу: github.com/Bukkit.

Источник: ru.stackoverflow.com

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

Development resources

Minecraft is written in Java and C++, and although the class files are obfuscated, the community has figured out most of the inner workings of Minecraft. Notch himself gave notes on a common format used by Minecraft, the NBT format. From this, the community has derived information for the files that use the NBT format.

Contents

  • 1 NBT format
  • 2 Level formats
  • 2.1 Java Edition
  • 2.2 Bedrock Edition

NBT format

The NBT format is used by almost every file in Minecraft. It is a GZipped tree structure of tags, where each tag has a type, name, and payload based on the type. In 1.2 snapshot 12w07a and above, an additional tag type was added to the original tag types that existed since Indev.

Level formats

Each edition of Minecraft uses its own file format to store levels. The following information about the different level file formats can be used by software developers to create map editors, servers, level generators, and other programs. Blocks, Items, Data values, and Entities are common to all map types.

Java Edition

  • Java Edition Classic level format used by Classic.
  • Java Edition Indev level format used by Indev.
  • Java Edition Alpha level format used by Alpha (previously Infdev).
  • Java Edition level format used by 1.0
  • Anvil file format used by 1.0 (from 1.2)
  • Region file format used since Beta (from Beta 1.3).
  • Chunk format for the individual 16x256x16 chunks contained in regions.
Читайте также:  Как сделать плейстейшен в Майнкрафт

Bedrock Edition

  • Bedrock Edition level format used by Bedrock Edition.

Other formats

  • Servers.dat format used to store the list of saved multiplayer servers.
  • Schematic files are NBT files used by a few 3rd party utilities to store sections of a map for later use.

Libraries

These are community-created libraries to interact with the various files used by Minecraft.

КАК СКОМПИЛИРОВАТЬ МОД ИЛИ ПЛАГИН МАЙНКРАФТ?

Name/Link Language Description
MCModify Java/C++ Library that allows for loading, manipulating, and saving all Minecraft formats.
nbt Java Flexible and intuitive library for reading and writing Minecraft’s NBT format on the JVM, with emphasis on custom tags.
Example NBT Class Java Basic brute-force Java class that reads and writes NBT structures.
Example Classic Level Class Java Java class(es) to read and write Classic levels.
Substrate C# C# classes to load and edit levels.
Craft.Net C# C# library for writing server software and messing with worlds and such.
c10t C++ An open source cartography tool.
libnbt++ C++ C++ library to read and write NBT structures.
CNBT C C library to read and write NBT structures.
Minecraft-Perl Perl Perl library to edit Minecraft files.
Python NBT Parser Python Python library to edit NBT structures.
pymclevel Python Python library to edit Minecraft levels. MCEdit was built upon this library.
J2Blocks Java A Java library for easy generation of Minecraft worlds.
nbtlib Python A modern python library to read and edit nbt data.

Mod creation tools

  • Minecraft Coder Pack used to create and edit mods to both the Minecraft client and server
  • MCAnimator — a modeler: used to create custom models which can have textures and animations. Has many tools to help you in the creation process. You can export to all the latest Minecraft versions. It has a library that allows perfect animations control.
  • Techne — the modeler: used to create custom models for in game use, comes with library of standard models.
  • FMCModeler can be used to create custom models for in game use, can also create models from Java code (with some restrictions). Written in Flash. It appears to be abandoned, but it’s still working when used with CustomRenderer.
Читайте также:  Как убрать сетку блоков в Майнкрафт

Server protocol

Classic server protocol used by the Minecraft Classic Creative Multiplayer server.

For info on the current multiplayer protocol, see the MCDevs wiki (wiki.vg).

Resources

URL Program OS Notes
http://www.delorie.com/djgpp/ Djgpp, GCC for Windows Windows
http://www.cygwin.com/ Cygwin the Linux-on-Windows (Unix Environment) Windows Good for Windows users.
http://www.microsoft.com/express/ Microsoft Visual Studio Express Windows Free version of Visual Studio, an IDE and compiler for C++, C# and Visual Basic.
http://java.sun.com/javase/downloads/index.jsp Java Development Kit download Cross-platform Essential if you want to interpret Java code

Источник: minecraft.fandom.com

Исходный код minecraft java

Начиная со снимка 19w36a , Mojang выпускает карты обфускации для каждой версии, доступной в программе запуска . Эти карты можно использовать для деобфускации файла JAR версии , то есть для замены обфусцированных имен классов и имен членов классов их исходными (деобфусцированными) именами. Используя декомпилятор , можно восстановить читаемый человеком код Java .

  • 1 Заявление об ограничении ответственности
  • 2 Загрузка карты обфускации
  • 3 Деобфускация JAR
  • 3.1 Примечание

Заявление об ограничении ответственности [ ]

Этот раздел нуждается в расширении.

Вы можете помочь, расширив его .
Инструкции: Добавьте дополнительную информацию о том, что разрешено, а что нет.

Согласно лицензии , декомпиляция Minecraft разрешена, но не рекомендуется выпускать декомпилированный код.

Скачивание карты запутывания [ ]

Файл JSON каждой версии содержит ссылку на карты обфускации для этой версии с 19w36a. Файл JSON для версии можно найти в version_manifest.json .

Как только вы найдете файл JSON, соответствующий версии, которую хотите декомпилировать, найдите client_mappings или server_mappings (в зависимости от того, с какой стороны вы хотите декомпилировать) под полем загружает и загружает файл по URL-адресу внутри поле url .

Деобфускация JAR [ ]

Содержание этого раздела не поддерживается Mojang Studios или Minecraft Wiki .

Чтобы деобфускировать файл JAR, вам нужна программа, которая принимает файл JAR и соответствующую ему карту обфускации в качестве входных данных и возвращает деобфусцированный файл JAR. Вы можете использовать бесплатную программу с открытым исходным кодом — SpecialSource . Вы можете скачать последнюю версию на Maven . На самом деле вам не нужно загружать все зависимости, чтобы запустить SpecialSource. Вот список зависимостей, необходимых для работы версии 1.10.0:

  • SpecialSource 1.10.0 ( .jar ) доступен по лицензии BSD с тремя пунктами
  • Guava 20.0 ( .jar ), доступный по лицензии Apache, версия 2.0
  • JOpt Simple 4.9 ( .jar ), доступный по лицензии MIT
  • ASM Commons 9.1 ( .jar ), доступный по лицензии BSD с тремя пунктами
  • ASM 9.1 ( .jar ), доступный по лицензии BSD с тремя пунктами
  • ASM Tree 9.1 ( .jar ), доступный по лицензии BSD с тремя пунктами
  • ASM Analysis 9.1 ( .jar ), доступный по лицензии BSD с тремя пунктами
Читайте также:  Ответы на вопросы в Майнкрафт нет

Чтобы использовать SpecialSource для декомпиляции файла JAR, загрузите все указанные выше зависимости в тот же каталог и выполните следующую команду внутри этого каталога:

java -cp SpecialSource-1.10.0.jar; * ;. net.md_5.specialsource.SpecialSource —in-jar —out-jar —srg-in —kill-lvt

  • заменяется на путь к обфусцированному JAR-файлу версии
  • заменяется на путь к файлу JAR для вывода
  • заменяется на путь к карте обфускации версии

Примечание [ ]

Карты обфускации, предоставляемые Mojang, не включают имена локальных переменных. Параметр —kill-lvt («уничтожить таблицу локальных переменных») указывает SpecialSource не пытаться переназначить имена локальных переменных.

Декомпиляция JAR [ ]

Содержание этого раздела не поддерживается Mojang Studios или Minecraft Wiki .

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

Доступно множество декомпиляторов Java. CFR — это бесплатный вариант с открытым исходным кодом, доступный по лицензии MIT . Вы можете скачать CFR 0.148 на Maven ( .jar ). 0.148 — это версия, которая дает наилучшие результаты при декомпиляции последних версий Minecraft . Чтобы запустить CFR для файла JAR, используйте следующую команду:

java -jar cfr-0.148.jar —outputdir

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

Полезные инструменты [ ]

Содержание этого раздела не поддерживается Mojang Studios или Minecraft Wiki .

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

Источник: minecraftpages.wiki