提供: defeatedcrow mod wiki
移動先: 案内検索
(ページの作成:「=レシピの追加= 作ったアイテムに、サバイバルでの入手手段を作らなければサバイバルで使用できません。<br /> 安易な手段は...」)
(相違点なし)

2016年3月8日 (火) 15:31時点における版

レシピの追加

作ったアイテムに、サバイバルでの入手手段を作らなければサバイバルで使用できません。
安易な手段はクラフトレシピを追加してアイテムの組み合わせから作成できるようにすることです。(それ以外にも、ダンジョンルートへの追加、村人からの購入、釣りや農作物、ブロックからのドロップ追加、ブロックの場合は自然生成など、色々な方法があります。)

クラフトレシピの作成

今回はクラフトで全て入手可能にします。かまどなど複数の材料を使えない物は中間素材が必要になりやすく煩雑であることと、他MOD装置に頼るとそのMODが必須になってしまうため。
レシピクラスはFlameCore内ではなく、別クラスに分離させます。

  • RegisterRecipe.class
package defeatedcrow.flamethrower;

import java.util.ArrayList;

import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import cpw.mods.fml.common.registry.GameRegistry;

public class RegisterRecipe {

	public static void addRecipe() {

		GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(FlameCore.flamethrower, 1, 0), new Object[] {
				"XXX",
				" YZ",
				Character.valueOf('X'),
				"ingotIron",
				Character.valueOf('Y'),
				new ItemStack(FlameCore.magazine, 1, 0),
				Character.valueOf('Z'),
				new ItemStack(Items.flint_and_steel, 1, 32767) }));

		GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(FlameCore.magazine, 1, 0), new Object[] {
				"XX",
				"XX",
				Character.valueOf('X'),
				new ItemStack(FlameCore.smallAmpoule, 1, 0) }));

		GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.arrow, 1, 0), new Object[] {
				"XX",
				"XX",
				Character.valueOf('X'),
				new ItemStack(FlameCore.smallAmpoule, 1, 1) }));
               }

	}

レシピは鉱石辞書対応したいので、ShapedOreRecipeを使用します。

GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(FlameCore.flamethrower, 1, 0), new Object[] {
				"XXX",
				" YZ",
				Character.valueOf('X'),
				"ingotIron",
				Character.valueOf('Y'),
				new ItemStack(FlameCore.magazine, 1, 0),
				Character.valueOf('Z'),
				new ItemStack(Items.flint_and_steel, 1, 32767) }));

GameRegistryのレシピ追加用メソッド、

GameRegistry.addRecipe(IRecipe recipe)

ここにIRecipe実装クラスとしてShapedOreRecipenのインスタンスを入れます。辞書名はStringとして使用できます。上記の場合は"ingtoIron"部分。