====== アイテムの追加 ====== ==== 導入 ==== 基本アイテムの追加は、 Mod 製作の最初のステップの 1 つです。 '''' オブジェクトを作成して登録し、テクスチャを与える必要があります。アイテムに追加の動作を追加するには、カスタムの '''' クラスが必要です。 このチュートリアルと今後のすべてのチュートリアルでは、 “tutorial” 名前空間がプレースホルダーとして使用されます。 別の modid がある場合は、代わりに自由に使用してください。 ==== アイテムの登録 ==== まず、 のインスタンスを作成します。これを初期化クラスの先頭に格納します。 コンストラクターは、''.'' (または ''FabricItemSettings'') インスタンスを受け取ります。これは、インベントリカテゴリ、耐久度、スタック数などのアイテムのプロパティを設定するために使用されます。 public class ExampleMod implements ModInitializer { // 新しいアイテムのインスタンス public static final class_1792 CUSTOM_ITEM = new class_1792(new FabricItemSettings()); [...] } 新しいコンテンツを登録するには、バニラのレジストリシステムを使用します。基本的な構文は ''#(Registry Type, , Content)'' です。レジストリタイプは '''' クラスに静的フィールドとして格納され、識別子はコンテンツにラベルを付けるものです。コンテンツは、追加するもののインスタンスです。これは、初期化中に発生する限り、どこでも呼び出すことができます。 public class ExampleMod implements ModInitializer { // 新しいアイテムのインスタンス public static final class_1792 CUSTOM_ITEM = new class_1792(new FabricItemSettings()); @Override public void onInitialize() { class_2378.method_10230(class_7923.field_41178, new class_2960("tutorial", "custom_item"), CUSTOM_ITEM); } } 新しいアイテムが Minecraft に追加されました。 ''runClient'' Gradle タスクを実行して、動作を確認します。 {{:tutorial:2019-02-17_16.50.44.png?400|}} ==== アイテムテクスチャの追加 ==== アイテムのテクスチャを登録するには、アイテムモデルの .json ファイルとテクスチャイメージが必要です。これらをリソースディレクトリに追加する必要があります。それぞれの直接パスは次のとおりです: アイテムモデル: .../resources/assets/tutorial/models/item/custom_item.json アイテムテクスチャ: .../resources/assets/tutorial/textures/item/custom_item.png サンプルテクスチャは [[https://i.imgur.com/CqLSMEQ.png|こちら]] にあります。 最初のステップでアイテムを適切に登録した場合、ゲームはテクスチャファイルが見つからないというメッセージを次のように表示します: [Server-Worker-1/WARN]: Unable to load model: 'tutorial:custom_item#inventory' referenced from: tutorial:custom_item#inventory: java.io.FileNotFoundException: tutorial:models/item/custom_item.json 便利なことに、アセットが見つかると予想される場所を正確に教えてくれます。……疑わしい場合は、ログを確認してください。 基本的なアイテムモデルテンプレートは次のとおりです: { "parent": "item/generated", "textures": { "layer0": "tutorial:item/custom_item" } } アイテムの親は、ハンドでのレンダリング方法を変更し、インベントリ内のブロックアイテムなどに役立ちます。 "item/handheld" は、テクスチャの左下から保持されるツールに使用されます。 textures/layer0 は画像ファイルの場所です。 最終的なテクスチャの結果: {{:tutorial:item_texture.png?400|}} ==== アイテムクラスの作成 ==== アイテムに追加の動作を追加するには、Item クラスを作成する必要があります。デフォルトのコンストラクタには、Item.Settings オブジェクトが必要です。 public class CustomItem extends class_1792 { public CustomItem(class_1793 settings) { super(settings); } } カスタムアイテムクラスの実用的な使用例は、アイテムを使用するときに音を鳴らすことです: public class CustomItem extends class_1792 { public CustomItem(class_1793 settings) { super(settings); } @Override public class_1271 method_7836(class_1937 world, class_1657 playerEntity, class_1268 hand) { playerEntity.method_5783(class_3417.field_14983, 1.0F, 1.0F); return class_1271.method_22427(playerEntity.method_5998(hand)); } } 古い オブジェクトを新しいアイテムクラスのインスタンスに置き換えます: public class ExampleMod implements ModInitializer { // an instance of our new item public static final CustomItem CUSTOM_ITEM = new CustomItem(new FabricItemSettings()); [...] } すべてを正しく行った場合、アイテムを使用するとサウンドが再生されるはずです。 ==== アイテムのスタック数を変更したい場合はどうすればよいですか? ==== このためには、''FabricItemSettings'' 内で ''(int size)'' を使用して最大スタック数を指定します。アイテムが破損する可能性がある場合、最大スタック数を指定できないことに注意してください。そうしないと、ゲームが RuntimeException をスローします。 public class ExampleMod implements ModInitializer { // 最大スタック数が 16 の新しいアイテムのインスタンス public static final CustomItem CUSTOM_ITEM = new CustomItem(new FabricItemSettings().maxCount(16)); [...] } ==== あなたのアイテムを燃料または堆肥化可能にする ==== かまどで使用できるように燃料にしたい場合は、''FuelRegistry'' を使用できます。たとえば、次のようになります: public class ExampleMod implements ModInitializer { [...] @Override public void onInitialize() { [...] FuelRegistry.INSTANCE.add(CUSTOM_ITEM, 300) } } 同様に、''CompostingChanceRegistry'' を使用して、コンポスターで堆肥化可能にすることができます。 ==== 次のステップ ==== [[tutorial:itemgroup|アイテムを独自の ItemGroup に追加する]]