User Tools

Site Tools


ru:tutorial:registry

Система реестра

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

  • Сообщением игре, что ваш контент существует.
  • Проверкой игрового контента между клиентом и сервером.
  • Обработкой недопустимого содержимого в сохранении.
  • Предотвращением конфликтов между разными модами.
  • Сжатием для связи клиент↔сервер и сохранением данных.
  • Абстрагированием или сокрытием числовых идентификаторов.

При регистрации любого типа контента вы передаете 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);
ru/tutorial/registry.txt · Last modified: 2022/02/14 20:34 by furnygo