提供: Minecraft Modding Wiki
2014年10月6日 (月) 22:34時点における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型、またはItemID, 作成数, ダメージ値)
    • 第二引数以降は特に指定しなくて良い。
  • サンプルは、人参を焼くと石炭を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個分)の燃焼効率を返している。