Этот раздел был разработан как 10 000-метровый обзор для новичков, охватывающий основные понятия и определения, необходимые в качестве базовых знаний, прежде чем вы начнете разработку своего первого мода. Некоторые понятия относятся к элементам, видимым в игре, другие - к используемым файлам или классам, которые часто используются при моддинге. Понимание этих терминов и понятий, надеюсь, облегчит понимание других разделов Вики.
Понятие | Описание |
---|---|
Предмет(Item) | Что-то, что можно взять в руку, уронить на землю, поместить в инвентарь или хранить в контейнере. Это может быть инструмент или блок, который вы держите в руке, прежде чем поместить его. |
Блок(Block) | Ключевой компонент для всего, что вы строите в Minecraft и размещаете в мире. Многие блоки - это кубы, но большинство вещей, которые вы размещаете в мире, реализованы в виде блоков, например, печь. Некоторые блоки даже не очень похожи на кубики, например, кнопки, заборы и двери, и все же они рассматриваются как блоки. Важно отметить, что блок следует рассматривать в коде как определение типа блока, а не как фактический отдельный блок, который вы видите в игре. |
Состояние блока(Block state) | Состояние блока (часто встречается в коде под названием “state”) - это конкретный экземпляр блока вместе с его свойствами (например, ориентация, нахождение в воде или стадия роста). Это то, что вы обычно воспринимаете как блок во время игры. Каждое состояние блока может иметь свою собственную 3D модель. |
Предмет блока(Block item) | Форма предмета блока, так что вы можете держать их в руке, складывать и хранить. |
Сущность(Entity) | Динамические объекты в мире, которые обычно двигаются. Например, ItemEntity для предметов, и, конечно, LivingEntity . Некоторые другие вещи иногда также реализуются как сущности, например, снаряды, рамки предметов и картины. |
Живая сущность(Living entity) | Подкатегория сущностей, которые живы и движутся в мире, например, игроки и мобы (коровы, зомби, летучие мыши и т.д.). |
Сущность блока(Block entity) | Хранит дополнительные данные для блока, например, содержащиеся предметы или крафты. Они могут предоставлять дополнительную логику для блока, например, при тикании. Не все блоки имеют блочные сущности - те, которые имеют, реализуют BlockEntityProvider . Блочные сущности не то же самое, что сущности! |
Модель блока/предмета(Block/item model) | Модель - это набор описательных данных, используемых для представления внешнего вида блока или предмета. Например, железный блок или печь будет содержать информацию, описывающую форму и размер каждой из его сторон, а также информацию о том, где найти текстуру (изображение), которая используется для придания конкретной поверхности ее уникального вида. Модели обычно описываются в файлах JSON, но также могут быть сгенерированы с помощью Java-кода. |
Модель сущности(Entity model) | Сущности также имеют свои собственные 3D-модели, которые обычно определяются полностью в коде как экземпляры net.minecraft.client.render.entity.model.EntityModel . |
Текстура | Это графические изображения, используемые для придания поверхностям их уникального вида. Они обычно реализуются в виде файлов .PNG размером 16×16 пикселей для блоков и предметов, или в виде более крупных изображений для сущностей и элементов графического интерфейса. |
Рендерер(Renderer) | Хотя большинство модов используют blockstates и JSON файлы моделей плюс .PNG текстуры для полного представления блоков и предметов и полагаются на механизм рендеринга по умолчанию, чтобы показать их в мире так, как вы ожидаете, но бывают ситуации, когда вам нужно более сложное строение. В этих случаях вам потребуется создать собственный рендерер для достижения желаемого результата. Сущности всегда используют рендереры. |
NBT | NBT - это формат файлов для хранения данных, используемый в Minecraft. Методы сохранения/загрузки NBT - это то, что вы используете в классе сущности или блочной сущности, чтобы убедиться, что ваши данные сохраняются и загружаются из сохранения мира. Звучит сложно, но это простое дело - переопределить пару методов и поместить туда пару строк кода. Это хорошо описано в разделе “Добавление сущности блока”. |
Стороны(Sides) | Minecraft состоит из двух частей, клиентской и серверной. Когда вы играете на сервере, разделение очевидно, но серверная часть все еще существует, когда вы играете на своем компьютере. Вы часто увидите, что данный переопределенный метод вызывается и клиентом, и сервером, и чтобы определить, на какой стороне вы отвечаете, вам нужно будет проверить это. Самый простой и распространенный способ - проверка с помощью булевого метода world.isClient() . Более подробное объяснение смотрите в этой статье. |
Синхронизация данных(Data sync) | Хотя вы можете хранить данные блока на его блочной сущности, такие данные не перемещаются автоматически между сервером и клиентом. Вы должны включить ее самостоятельно с помощью пары строк кода, следуя описанию в разделе “Добавление сущности блока”. |