提供: Minecraft Modding Wiki
移動先: 案内検索
Wood pickaxe.png
初心者向けのチュートリアルです。

ここでは、精錬レシピ、および新しい燃料を追加する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 200;
                }
                return 0;
            }
        });
    }

    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event){
    }

}

解説

編集中

精錬レシピを作る

GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f);
  • GameRegistry.addSmeltingで、精錬レシピを追加する。
  • 第一引数には、精錬する素材を、BlockかItemかItemStackで指定する。
    • 鉄ブロックを精錬する素材として要求する場合は、 Blocks.iron_block とする。
    • サドルを精錬する素材として要求する場合は、 Items.saddle とする。
    • ラピスラズリを精錬する素材として要求する場合は、 new ItemStack(Items.dye, 1, 4) とする。
  • 第二引数には、完成後のアイテムを、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個分)の燃焼効率を返している。