User Tools

Site Tools


ru:tutorial:registry

This is an old revision of the document!


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

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

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

При регистрации любого типа контента вы передаете Identifier, который является меткой для вашего добавления. Идентификаторы, часто сокращенно называемые идентификаторами, имеют пространство имен и путь. В большинстве случаев пространство имен — это идентификатор вашего мода, а путь — это имя контента, который вы регистрируете. Например, стандартный блок грязи имеет идентификатор 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.1644513431.txt.gz · Last modified: 2022/02/10 17:17 by furnygo