今回追加するレシピ
今回は、前回作った「熱された石炭」のレシピと、それを使って鉄を作るレシピを追加します。
「熱された石炭」のレシピは単純で、ただ石炭をかまどで熱するだけです。
そして「鉄を作るレシピ」ですが、これはHypixel UHCのものをちょっと変更して再現します。
もともとのレシピは石炭と鉄鉱石ですが、今回は石炭の部分を熱された石炭に置き換えます。
レシピの追加
製錬レシピ
まず、熱された石炭のレシピから追加していきます。
「src/main/resources」に新しくパッケージを作成します。
名前は「data.ModID.recipes」にしてください。
作ったパッケージに新しくファイルを作成します。
今回はアイテム(熱された石炭)のIDと同じ名前にしていますが、別に同じでなくてもOKです。
このように入力します。
「"type"」の要素がレシピの種類です。今回はかまどのレシピなので「"smelting"」(製錬)にしています。
そして「"item"」の要素が材料(かまどの上のスロットに入れるアイテム)で、「"result"」の要素が完成したアイテム(熱された石炭)です。
「"experience"」は製錬時に入手できる経験値の量です。今回はバニラの木炭のレシピと同じ量にしました。(ちなみに鉄インゴットは0.7、ステーキは0.35です)
「"cookingtime"」は製錬にかかる時間です。(バニラではすべてのアイテムが200に設定されています。多分)
コードはこちら。(heated_coal.json)
{
"type": "minecraft:smelting",
"ingredient": {
"item": "minecraft:coal"
},
"result": "uhcitems:heated_coal",
"experience": 0.15,
"cookingtime": 200
}
作業台レシピ(shaped)
次に作業台のレシピを追加していきます。
recipesに新しくjsonファイルを作ります。
UHCではこのレシピが「Iron Pack」という名前なので、「iron_pack」にしました。
コードを書きます。
今回は形が決まっているレシピなので、「"type"」は「"crafting_shaped"」です。
(火打ち石と打ち金などの形が決まっていないレシピの「"type"」は、「"crafting_shapeless"」になっています)
「"pattern"」の要素にどのようにアイテムを並べるかを入力して、「"key"」でそのアイテムを指定します。
「"pattern"」に使っている「A」とか「B」は、他の文字でも代用できます。
「"count"」がクラフト後のアイテム(鉄インゴット)の量です。
コードはこちら。(iron_pack.json)
{
"type": "minecraft:crafting_shaped",
"pattern": [
"AAA",
"ABA",
"AAA"
],
"key": {
"A": {
"item": "minecraft:iron_ore"
},
"B": {
"item": "uhcitems:heated_coal"
}
},
"result": {
"item": "minecraft:iron_ingot",
"count": 10
}
}
起動して確認
レシピはこれでOKです。起動して確認してみます。
一つでもミスがあると反映されないので、スペルミスには注意。
クリエイティブタブの追加
次に、このModのクリエイティブタブを作ります。
タブのクラス
「init」パッケージに新しくクラスを作成します。
名前は「ItemGroupInit」にします。(「ItemGroup」はシステム内でのクリエイティブタブの呼び名です)
このようにItemGroupのfinalフィールドを作ります。
「new ItemGroup」の後の「"uhcitems"」は、クリエイティブタブのIDです。
エラーが出るので、豆電球をクリックして「createIcon()」をオーバーライドします。
自動生成された「createIcon()」の戻り値に、アイコンとなるアイテムを設定します。(戻り値の型は「Item」ではなく「ItemStack」です。)
今回は金のリンゴにしました。
これでタブの追加は完了です。
コードはこちら。(ItemGroupInit.java)
package com.umagame.uhcitemsmod.init;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
public class ItemGroupInit {
public static final ItemGroup UHCITEMS_MOD = (new ItemGroup("uhcitems") {
@Override
public ItemStack createIcon() {
return new ItemStack(Items.GOLDEN_APPLE);
}
});
}
アイテムに反映
作ったタブにアイテムを追加します。
アイテムのクラス(HeatedCoalItem.java)の「new Properties()」の後に「.group(タブ)」と入力します。
これでアイテムにタブを設定できました。(「熱された木炭」でも同じ手順を行いました)
コードはこちら。(HeatedCoalItem.java)
package com.umagame.uhcitemsmod.item;
import com.umagame.uhcitemsmod.init.ItemGroupInit;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class HeatedCoalItem extends Item{
public HeatedCoalItem() {
super(new Properties().group(ItemGroupInit.UHCITEMS_MOD));
}
@Override
public int getBurnTime(ItemStack itemstack) {
return 1800;
}
}
起動して確認 その2
起動して確認してみます。
ちゃんと追加されていますが、まだローカライズされていません。
langファイル
クリエイティブタブの名前を設定します。
langファイルに、「"itemGroup.タブのID": "タブの名前"」と追記します。
コンマ(「,」)を忘れないように。
ちゃんと反映されました。
コードはこちら。(en_us.json、ja_jp.json)
{
"itemGroup.uhcitems": "UHC Items Mod",
"item.uhcitems.heated_coal": "Heated Coal",
"item.uhcitems.heated_charcoal": "Heated Charcoal"
}
{
"itemGroup.uhcitems": "UHC Items Mod",
"item.uhcitems.heated_coal": "熱された石炭",
"item.uhcitems.heated_charcoal": "熱された木炭"
}