====== レジストリシステム ====== 〔[[https://e-words.jp/w/%E3%83%AC%E3%82%B8%E3%82%B9%E3%83%88%E3%83%AA.html|レジストリ(Registry)は英語で登録、登記、登録所、登録簿などの意味があります。情報処理の分野では、外部から情報の登録を受け付け、まとめて保管しておくシステムや機関のことを意味することが多いです。]] Minecraft にもコンテンツを登録するための機構となるレジストリが存在します。〕 ゲームに追加するほとんどのコンテンツをレジストリに登録する必要があります。 これは次のことに役立ちます: * コンテンツの存在をゲームに知らせる * クライアントとサーバー間のゲームコンテンツの検証 * 保存時の無効なコンテンツの処理 * 異なる Mod 間の競合を防ぐ * クライアント↔サーバー間通信とデータ保存のための圧縮 * ID ナンバーの抽象化または非表示 任意のタイプのコンテンツを登録するときは、追加のラベルである '''' を渡します。 (しばしば ID と省略されます)には名前空間とパスがあります。ほとんどの場合、名前空間は Mod の ID であり、パスは登録するコンテンツの名前です。たとえば、標準の土ブロックの ID は ''%%minecraft:dirt%%'' です。 カスタムコンテンツを登録せずに使用すると、テクスチャの欠落、ワールドセーブの問題、クラッシュなどのバグのある動作が発生する可能性があります。何かを登録するのを忘れた場合、ゲームは通常あなたに知らせます。 ===== レジストリの種類 ===== コンテンツを登録するときは、コンテンツを追加するレジストリを指定する必要があります。ベースゲームは、すべてのバニラコンテンツのレジストリを提供します。これは、 ''%%Registries%%'' (バージョン1.19.3以降) または ''%%Registry%%'' (バージョン1.19.3まで) にあります。使用できるレジストリの 2 つの例には、アイテム用の ''%%Registries.ITEM%%'' (バージョン1.19.3以降) / ''%%Registry.ITEM%%'' (バージョン1.19.3以降) とブロック用の ''%%Registries.BLOCK%%'' (バージョン1.19.3以降) / ''%%Registry.BLOCK%%'' (バージョン1.19.3以降) があります。 利用可能なすべてのレジストリの詳細な概要と説明については、[[tutorial:registry_types|レジストリの種類]] ページを参照してください。 ===== コンテンツの登録 ===== レジストリにコンテンツを追加するには、 ''.'' を使用します。 public static T method_10230(class_2378 registry, class_2960 id, T entry) { return ((class_2385)registry)method_10272(id, entry); } **registry** - コンテンツを追加するレジストリのインスタンス。 '''' にあるすべてのバニラレジストリのリストは、 [[tutorial:registry_types|レジストリの種類]] にあります。 **id** - レジストリ内のコンテンツの識別ラベル。標準的な規則は、''%%minecraft:dirt%%'' で見られるように、''%%modid:name%%'' です。 **entry** - 登録するコンテンツのインスタンス。 ===== レジストリメソッド ===== '''' - レジストリ内の ID に関連付けられたエントリを返します。エントリが存在しない場合、 '''' はデフォルトのレジストリ値を返し、 '''' は null を返します。 @Nullable public abstract T method_10223(@Nullable class_2960 id); ---- '''' - レジストリ内のエントリに関連付けられた '''' を返します。エントリが存在しない場合、 '''' はデフォルトのレジストリ ID を返し、'''' は null を返します。 @Nullable public abstract class_2960 method_10221(T entry); ---- '''' - レジストリ内のエントリに関連付けられた内部整数 ID を返します。 エントリが存在しない場合、'''' はデフォルトのレジストリ値の生 ID を返し、 '''' は -1 を返します。 public abstract int method_10206(@Nullable T entry);