提供: Minecraft Modding Wiki
2014年10月6日 (月) 22:36時点におけるModderKina (トーク | 投稿記録)による版
精錬レシピの追加
ここでは、精錬レシピ、および新しい燃料を追加するMODを作成する。
ソース全文
- TutorialSmelt.java
package mods.recipesample; import cpw.mods.fml.common.IFuelHandler; import cpw.mods.fml.common.Mod; 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.Items; import net.minecraft.item.ItemStack; @Mod(modid = "ttr_smelt") public class TutorialSmelt{ @Mod.EventHandler public void preInit(FMLPreInitializationEvent event){ } @Mod.EventHandler public void init(FMLInitializationEvent event){ GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f); GameRegistry.registerFuelHandler(new IFuelHandler(){ @Override public int getBurnTime(ItemStack fuel){ if(fuel.getItem().equals(Items.apple)){ return 500; } return 0; } }); } @Mod.EventHandler public void postInit(FMLPostInitializationEvent event){ } }
精錬レシピを作る
GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f);
- GameRegistry.addSmeltingで、精錬レシピを追加する。
- 第一引数にはBlockかItemを指定する。
- 第二引数には、完成後のアイテムを、ItemStackで指定する。
- 書き方は、 new itemStack(Itemまたはブロック, 作成数, ダメージ値)
- 第二引数以降は特に指定しなくても良い。
- サンプルは、人参を焼くと石炭を1つ出すように指定されています。
- 第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。
- バニラの設定値は以下のようになっています。
- 0.1F 砂、丸石、石炭鉱石
- 0.15F 原木
- 0.2F サボテン、ラピス鉱石
- 0.3F 粘土
- 0.35F 牛肉、豚肉、鶏肉、生魚、ジャガイモ
- 0.7F 鉄鉱石、レッドストーン鉱石
- 1.0F ダイヤモンド鉱石、エメラルド鉱石、金鉱石
新しい燃料を追加する
GameRegistry.registerFuelHandler(new IFuelHandler(){ @Override public int getBurnTime(ItemStack fuel){ if(fuel.getItem().equals(Items.apple)){ return 200; } return 0; } });
- registerFuelHandlerメソッドは、引数に実装したIFuelHandlerを渡すことで利用できる。
- IFuelHandlerのメソッドの引数であるItemStack:fuel には、燃料スロットに入れられたアイテムの種類とメタデータが格納されたItemStackが入る。
- これらを判定し、燃焼効率を返す。
- 200 でアイテム1個分の効率。
- 例えば木の棒や苗木は100(0.5個分)、石炭木炭は1600(8個分)となる。
- 上の例ではりんごで200(1個分)の燃焼効率を返している。