User Tools

Site Tools


ja:tutorial:registry

レジストリシステム

レジストリ(Registry)は英語で登録、登記、登録所、登録簿などの意味があります。情報処理の分野では、外部から情報の登録を受け付け、まとめて保管しておくシステムや機関のことを意味することが多いです。 Minecraft にもコンテンツを登録するための機構となるレジストリが存在します。〕

ゲームに追加するほとんどのコンテンツをレジストリに登録する必要があります。 これは次のことに役立ちます:

  • コンテンツの存在をゲームに知らせる
  • クライアントとサーバー間のゲームコンテンツの検証
  • 保存時の無効なコンテンツの処理
  • 異なる Mod 間の競合を防ぐ
  • クライアント↔サーバー間通信とデータ保存のための圧縮
  • ID ナンバーの抽象化または非表示

任意のタイプのコンテンツを登録するときは、追加のラベルである Identifier を渡します。 Identifier (しばしば ID と省略されます)には名前空間とパスがあります。ほとんどの場合、名前空間は Mod の ID であり、パスは登録するコンテンツの名前です。たとえば、標準の土ブロックの ID は minecraft:dirt です。

カスタムコンテンツを登録せずに使用すると、テクスチャの欠落、ワールドセーブの問題、クラッシュなどのバグのある動作が発生する可能性があります。何かを登録するのを忘れた場合、ゲームは通常あなたに知らせます。

レジストリの種類

コンテンツを登録するときは、コンテンツを追加するレジストリを指定する必要があります。ベースゲームは、すべてのバニラコンテンツのレジストリを提供します。これは、 Registry にあります。使用できるレジストリの 2 つの例には、アイテム用の Registry.field_11142 とブロック用の Registry.field_11146 があります。

利用可能なすべてのレジストリの詳細な概要と説明については、レジストリの種類 ページを参照してください。

コンテンツの登録

レジストリにコンテンツを追加するには、 Registry.register を使用します。

public static <T> T register(Registry<? super T> registry, Identifier id, T entry) {
    return ((MutableRegistry)registry)add(id, entry);
}
registry - コンテンツを追加するレジストリのインスタンス。 Registry にあるすべてのバニラレジストリのリストは、 レジストリの種類 にあります。

id - レジストリ内のコンテンツの識別ラベル。標準的な規則は、minecraft:dirt で見られるように、modid:name です。

entry - 登録するコンテンツのインスタンス。

レジストリメソッド

get - レジストリ内の ID に関連付けられたエントリを返します。エントリが存在しない場合、 SimpleDefaultedRegistry はデフォルトのレジストリ値を返し、 SimpleRegistry は null を返します。

@Nullable
public abstract T get(@Nullable Identifier id);


getId - レジストリ内のエントリに関連付けられた Identifier を返します。エントリが存在しない場合、 SimpleDefaultedRegistry はデフォルトのレジストリ ID を返し、SimpleRegistry は null を返します。

@Nullable
public abstract Identifier getId(T entry);


getRawId - レジストリ内のエントリに関連付けられた内部整数 ID を返します。 エントリが存在しない場合、SimpleDefaultedRegistry はデフォルトのレジストリ値の生 ID を返し、 SimpleRegistry は -1 を返します。

public abstract int getRawId(@Nullable T entry);

ja/tutorial/registry.txt · Last modified: 2022/08/11 07:29 by 127.0.0.1