Table of Contents
Система реестра
Вам нужно будет зарегистрировать большую часть контента, который вы добавляете в игру. Это может помочь с:
- Сообщением игре, что ваш контент существует.
- Проверкой игрового контента между клиентом и сервером.
- Обработкой недопустимого содержимого в сохранении.
- Предотвращением конфликтов между разными модами.
- Сжатием для связи клиент↔сервер и сохранением данных.
- Абстрагированием или сокрытием числовых идентификаторов.
При регистрации любого типа контента вы передаете Identifier
, который является меткой для вашего добавления. Идентификаторы, часто сокращенно называемые Айди(ID), имеют пространство имен и путь. В большинстве случаев пространство имен — это идентификатор вашего мода, а путь — это имя контента, который вы регистрируете. Например, стандартный блок грязи имеет идентификатор minecraft:dirt
.
Использование пользовательского контента без его регистрации может привести к ошибочному поведению, например отсутствующим текстурам, проблемам с сохранением мира и сбоям. Игра обычно сообщит вам, если вы забудете что-то зарегистрировать.
Типы реестра
При регистрации контента необходимо указать, в какой реестр вы добавляете контент. Базовая игра предоставляет реестры для всего ванильного контента, который можно найти в Registry
. Два примера реестров, которые вы можете использовать, включают Registry.ITEM
для предметов и Registry.BLOCK
для блоков.
Подробный обзор и описание всех доступных реестров см. на странице Типы реестров.
Регистрация контента
Используйте Registry.register
для добавления контента в реестры:
public static <T> T register(Registry<? super T> registry, Identifier id, T entry) { return ((MutableRegistry)registry).add(id, entry); }
registry — экземпляр реестра, в который вы хотите добавить контент. Список всех ванильных реестров, расположенных в Registry
, можно найти на странице Типы реестров.
id — идентификационная метка для вашего контента в реестре. Стандартное соглашение: modid:name
, как видно из minecraft:dirt
.
запись — экземпляр контента, который вы хотите зарегистрировать.
Методы реестра
get
— возвращает запись, связанную с идентификатором внутри реестра. Если запись не существует, DefaultedRegistry
возвращает значение реестра по умолчанию, а SimpleRegistry
возвращает null.
@Nullable public abstract T get(@Nullable Identifier id);
getId
— возвращает Identifier
, связанный с записью в реестре. Если запись не существует, DefaultedRegistry
возвращает идентификатор реестра по умолчанию, а SimpleRegistry
возвращает null.
@Nullable public abstract Identifier getId(T entry);
getRawId
— возвращает внутренний целочисленный идентификатор, связанный с записью в реестре. Если запись не существует, DefaultedRegistry
возвращает необработанный идентификатор значения реестра по умолчанию, а SimpleRegistry
возвращает -1.
public abstract int getRawId(@Nullable T entry);