提供: Minecraft Modding Wiki
移動先: 案内検索
(1.3以降の場合について追記)
(設定値例追加)
38行目: 38行目:
 
<source lang="java">
 
<source lang="java">
 
ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1));
 
ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1));
 +
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, new ItemStack(Block.sponge, 1));
 
</source>
 
</source>
*ModLoader.addSmeltingメソッドで、精錬レシピを追加する。
+
*ModLoader.addSmelting、もしくはFurnaceRecipes.smelting().addSmeltingで、精錬レシピを追加する。
 
*第一引数にはBlock.blockID、Item.shiftedIndexを指定する。
 
*第一引数にはBlock.blockID、Item.shiftedIndexを指定する。
 
*第二引数には、完成後のアイテムを、ItemStack型で指定する。
 
*第二引数には、完成後のアイテムを、ItemStack型で指定する。
50行目: 51行目:
 
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1));
 
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1));
 
</source>
 
</source>
*精錬前のアイテムがダメージ値を持つ場合、ModLoaderの機能では設定できません。
+
*FurnaceRecipes.smelting().addSmeltingメソッドで、精錬レシピを追加する。
*精錬前のアイテムのダメージ値を指定したい場合は、Minecraft標準のクラスにアクセスします。
+
**精錬前のアイテムがダメージ値を持つ場合、ModLoaderの機能では設定できません。
*FurnaceRecipes.smelting().addSmeltingメソッドで、精錬レシピを追加できます。
 
 
*第一引数にはBlock.blockID、Item.shiftedIndexを指定する。
 
*第一引数にはBlock.blockID、Item.shiftedIndexを指定する。
*第二引数には、精錬前のアイテムのダメージ値を指定します。
+
*第二引数には、精錬前のアイテムのダメージ値を指定する。
 
*第三引数には、完成後のアイテムを、ItemStack型で指定する。
 
*第三引数には、完成後のアイテムを、ItemStack型で指定する。
 
**書き方は、 new itemStack(Item型、またはItemID, 作成数, ダメージ値)
 
**書き方は、 new itemStack(Item型、またはItemID, 作成数, ダメージ値)
 
*サンプルは、黄色い羊毛を焼くとスポンジを1つ出すように指定されています。
 
*サンプルは、黄色い羊毛を焼くとスポンジを1つ出すように指定されています。
  
==新しい燃料を追加する==
+
=新しい燃料を追加する=
 
mod_Tutorial に addFuel メソッドを追加する事で、燃料の設定を追加できる。
 
mod_Tutorial に addFuel メソッドを追加する事で、燃料の設定を追加できる。
 
<source lang="java">
 
<source lang="java">
79行目: 79行目:
 
*上の例では木製のツール(斧、つるはし、ショベル、クワ、剣)で200(1個分)の燃焼効率を返している。
 
*上の例では木製のツール(斧、つるはし、ショベル、クワ、剣)で200(1個分)の燃焼効率を返している。
  
==1.3以降の場合==
+
=1.3.x以降の場合=
 
精錬したものを取り出した時に経験値オーブが出るようになり、それに合わせaddSmeltingの引数が追加されています。
 
精錬したものを取り出した時に経験値オーブが出るようになり、それに合わせaddSmeltingの引数が追加されています。
 
上記のソースをこのように変更すれば良いです。
 
上記のソースをこのように変更すれば良いです。
 
<source lang="java">
 
<source lang="java">
ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1), 1.0F);
+
ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1), 0.1F);
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1), 1.0F);
+
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, new ItemStack(Block.sponge, 1), 0.1F);
 +
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1), 0.1F);
 
</source>
 
</source>
第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。
+
*第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。
 +
*バニラの設定値は以下のようになっています。
 +
**0.1F  砂、丸石、石炭鉱石
 +
**0.15F 原木
 +
**0.2F  サボテン、ラピス鉱石
 +
**0.3F  粘土
 +
**0.35F 牛肉、豚肉、鶏肉、生魚、ジャガイモ
 +
**0.7F  鉄鉱石、レッドストーン鉱石
 +
**1.0F  ダイヤモンド鉱石、エメラルド鉱石、金鉱石

2012年12月14日 (金) 22:12時点における版

この記事は"ModLoader"を前提MODとしています。

精錬レシピの追加

ここでは、精錬レシピ、および新しい燃料を追加するMODを作成する。

ソース全文

mod_Tutorial.java
package net.minecraft.src;
 
public class mod_Tutorial extends BaseMod
{
    public String getVersion()
    {
        return "1.2.3";
    }

    public void load()
    {
        ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1));
        FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1));
    }

    public int addFuel(int id, int metadata)
    {
        if(id >= 268 && id <= 271 || id == 290)
        {
            return 200;
        }
        return 0;
    }
}

精錬レシピを作る

精錬レシピを指定する方法は、精錬前のアイテムのダメージ値を指定するかどうかで変わります。

精錬前がダメージ値を持たない場合

例えば、普通のアイテムや、どの色の羊毛を精錬してもいいようなレシピの場合。

ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1));
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, new ItemStack(Block.sponge, 1));
  • ModLoader.addSmelting、もしくはFurnaceRecipes.smelting().addSmeltingで、精錬レシピを追加する。
  • 第一引数にはBlock.blockID、Item.shiftedIndexを指定する。
  • 第二引数には、完成後のアイテムを、ItemStack型で指定する。
    • 書き方は、 new itemStack(Item型、またはItemID, 作成数, ダメージ値)
  • サンプルは、土を焼くとダイヤモンドを1つ出すように指定されています。

精錬前がダメージ値を持つ場合

例えば特定の色の羊毛のみなどを精錬したい場合。

FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1));
  • FurnaceRecipes.smelting().addSmeltingメソッドで、精錬レシピを追加する。
    • 精錬前のアイテムがダメージ値を持つ場合、ModLoaderの機能では設定できません。
  • 第一引数にはBlock.blockID、Item.shiftedIndexを指定する。
  • 第二引数には、精錬前のアイテムのダメージ値を指定する。
  • 第三引数には、完成後のアイテムを、ItemStack型で指定する。
    • 書き方は、 new itemStack(Item型、またはItemID, 作成数, ダメージ値)
  • サンプルは、黄色い羊毛を焼くとスポンジを1つ出すように指定されています。

新しい燃料を追加する

mod_Tutorial に addFuel メソッドを追加する事で、燃料の設定を追加できる。

public int addFuel(int id, int metadata)
{
	if(id >= 268 && id <= 271 || id == 290)
	{
		return 200;
	}
	return 0;
}
  • addFuelメソッドは、かまどで精錬が開始される時に呼ばれる。
    • id には、燃料スロットに入れられたアイテムのIDが入る。
    • metadeta には、燃料スロットに入れられたアイテムのダメージ値が入る。
  • これらの値を判定し、燃焼効率を返す。
    • 200 でアイテム1個分の効率。
    • 例えば木の棒や苗木は100(0.5個分)、石炭木炭は1600(8個分)となる。
  • 上の例では木製のツール(斧、つるはし、ショベル、クワ、剣)で200(1個分)の燃焼効率を返している。

1.3.x以降の場合

精錬したものを取り出した時に経験値オーブが出るようになり、それに合わせaddSmeltingの引数が追加されています。 上記のソースをこのように変更すれば良いです。

ModLoader.addSmelting(Block.dirt.blockID, new ItemStack(Item.diamond, 1), 0.1F);
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, new ItemStack(Block.sponge, 1), 0.1F);
FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 4, new ItemStack(Block.sponge, 1), 0.1F);
  • 第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。
  • バニラの設定値は以下のようになっています。
    • 0.1F  砂、丸石、石炭鉱石
    • 0.15F 原木
    • 0.2F  サボテン、ラピス鉱石
    • 0.3F  粘土
    • 0.35F 牛肉、豚肉、鶏肉、生魚、ジャガイモ
    • 0.7F  鉄鉱石、レッドストーン鉱石
    • 1.0F  ダイヤモンド鉱石、エメラルド鉱石、金鉱石