このページはForge wiki内のCrafting and Smelting Tutorialの翻訳記事です。多くが意訳で、雑な翻訳であること、見やすさに応じて太字などは独自に変えられている場合がありますのでご注意ください。Javaの一般的な知識に関する項目、Minecraftの上で一般的な知識は訳していません。
目次
Havvy's Minecraft Forge Tutorials(Crafting and Smelting)
BaseModクラスの準備ができたら、レシピの追加は簡単に出来ます。レシピには3つのクラスがあります。形のあるもの、形のないもの、そして精錬のレシピです。
一般的なクラフティングの知識
レシピの追加は@Initアノテーションの追加されたメソッドで行われます。GenericModでは、tutorial.generic.Genericのloadメソッドに当たります。この章の最後では、完成形のGenericクラスと、クラフティングレシピのクラスのファイルをご覧に入れましょう。
クラフティングに関するメソッドはスタティックメソッドです。GameRegistryの中にあり、CraftingManagerにデータを渡します。
アイテムスタック
ItemStackは、スタックできる量と、使った際にダメージを持つかどうか(ピッケルなど)による、いくつかのコンストラクターを持っています。
単数所持、ダメージを持たない
1つのみスタックできて、ダメージを持たないアイテムの場合、設定は簡単なので、1つしか引数は取りません。
ItemStack dirtStack = new ItemStack(Block.dirt);
上のコードは一つのブロックを持つDirtのサンプルです。
複数所持、ダメージを持たない
複数スタックできるアイテムの場合は、以下の様なコードで設定出来ます。
ItemStack diamondsStack = new ItemStack(Item.diamond, 64);
これは、フルスタックのダイアモンドを指します。
ダメージを保つ場合
もしダメージもしくはメタデータの値を含ませたいのならば、量を含ませる必要があります。
ItemStack blackWoolStack = new ItemStack(Block.cloth, 42, 15);
ウールはMinecraftのコードの中ではclothと呼ばれています。この例の場合、15というメタデータが黒を指すので、42この黒いウールとなります。
item idしか知らない場合
ブロックのインスタンスへの参照がわからなくても、ブロックIDがわかれば、別のコンストラクタが使えます。しかし、おすすめはしません。
ItemStack unknownItemStack = new ItemStack(1, 3, 0);
3つで構成されるスタックで、ブロックのidが1のDirtを指します。しかし、インスタンスへの参照をとることを試みるべきでしょう。バニラの全てのアイテムとブロックは、net.minecraft.block.Blockもしくは、net.minecraft.item.Item内に見つかります。
形のないクラフティング
形のないクラフティングは、アイテムの並び方を気にしません。一般的な例は、きのこスープと本でしょう。一般的に形のないレシピの追加は以下を使います。
GameRegistry.addShapelessRecipe(ItemStack result, Object... recipe)
例えば、以下のようにして土をダイヤモンドに交換出来ます。
GameRegistry.addShapelessRecipe(new ItemStack(Item.diamond, 64), new ItemStack(Block.dirt));