Mod制作メモ > レシピの追加

クラフトレシピと精錬レシピの追加


コード

  • Sample.java
package Sample;
 
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
 
@Mod(modid = "SampleMod", name = "SampleMod", version = "1.0")
public class Sample {
 
	@EventHandler
	public void preInit(FMLPreInitializationEvent event) {
 
	}
 
	@EventHandler
	public void init(FMLInitializationEvent event) {
		GameRegistry.addRecipe(new ItemStack(Items.diamond),
				"XXX",
				"XXX",
				"XXX",
				'X', Blocks.cobblestone
		);
 
		GameRegistry.addRecipe(new ItemStack(Items.emerald),
				"X X",
				'X', Blocks.dirt
		);
 
		GameRegistry.addRecipe(new ItemStack(Items.iron_ingot),
				"XYX",
				"YXY",
				"XYX",
				'X', Blocks.dirt,
				'Y', Blocks.cobblestone
		);
 
		GameRegistry.addShapelessRecipe(new ItemStack(Items.diamond),
				Items.apple,
				Blocks.planks
		);
 
		GameRegistry.addSmelting(Blocks.diamond_block, new ItemStack(Items.diamond, 5), 0.5F);
	}
 
	@EventHandler
	public void postInit(FMLPostInitializationEvent event) {
 
	}
}
 

解説

Sample.java

GameRegistry.addRecipe(new ItemStack(Items.diamond),
				"XXX",
				"XXX",
				"XXX",
				'X', Blocks.cobblestone
		);
 
クラフトレシピはGameRegistryに登録する形で追加する。
addRecipeだと定型レシピ。
第一引数が完成品、それ以降でレシピを決める。
String→レシピの配置
char + Item or Block or ItemStack→素材を決める。charはStringに合わせる。

GameRegistry.addRecipe(new ItemStack(Items.emerald),
				"X X",
				'X', Blocks.dirt
		);
 
このように一列だけを追加することも可能。

GameRegistry.addRecipe(new ItemStack(Items.iron_ingot),
				"XYX",
				"YXY",
				"XYX",
				'X', Blocks.dirt,
				'Y', Blocks.cobblestone
		);
 
二つ以上の素材を使う場合もこのように一つずつ素材を設定する。

GameRegistry.addShapelessRecipe(new ItemStack(Items.diamond),
				Items.apple,
				Blocks.planks
		);
 
addShaplessRecipeは不定形レシピ。
こちらの第二引数以降はItemかBlockかItemStack。

GameRegistry.addSmelting(Blocks.diamond_block, new ItemStack(Items.diamond, 5), 0.5F);
 
かまどの精錬レシピもGameRegistryに登録する。
関数はaddSmelting。
第一引数が素材、第二引数が完成品、第三引数が経験値の出る確率