うまげーむのゲームブログ

ゲームの情報を主に投稿します。

【マインクラフト Modding】1.16での自作Modの作り方 #5 レシピ・クリエイティブタブの追加

はじめに

どうも。

今回はレシピとクリエイティブのタブを作ります。

前回:

www.umagame.info

今回追加するレシピ

今回は、前回作った「熱された石炭」のレシピと、それを使って鉄を作るレシピを追加します。

「熱された石炭」のレシピは単純で、ただ石炭をかまどで熱するだけです。

f:id:Umagame:20210117104823p:plain
Hypixelサーバーより

そして「鉄を作るレシピ」ですが、これはHypixel UHCのものをちょっと変更して再現します。

もともとのレシピは石炭と鉄鉱石ですが、今回は石炭の部分を熱された石炭に置き換えます。

レシピの追加

製錬レシピ

まず、熱された石炭のレシピから追加していきます。

f:id:Umagame:20210117103748p:plain

「src/main/resources」に新しくパッケージを作成します。

f:id:Umagame:20210117103751p:plain

名前は「data.ModID.recipes」にしてください。

f:id:Umagame:20210117103754p:plain

作ったパッケージに新しくファイルを作成します。

f:id:Umagame:20210117103758p:plain

今回はアイテム(熱された石炭)のIDと同じ名前にしていますが、別に同じでなくてもOKです。

f:id:Umagame:20210117103801p:plain

このように入力します。

「"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)

次に作業台のレシピを追加していきます。

f:id:Umagame:20210117103804p:plain

recipesに新しくjsonファイルを作ります。

UHCではこのレシピが「Iron Pack」という名前なので、「iron_pack」にしました。

f:id:Umagame:20210117103817p:plain

コードを書きます。

今回は形が決まっているレシピなので、「"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です。起動して確認してみます。

f:id:Umagame:20210117103811p:plain

f:id:Umagame:20210117103822p:plain

一つでもミスがあると反映されないので、スペルミスには注意。

クリエイティブタブの追加

次に、このModのクリエイティブタブを作ります。

タブのクラス

f:id:Umagame:20210117103828p:plain

「init」パッケージに新しくクラスを作成します。

f:id:Umagame:20210117103831p:plain

名前は「ItemGroupInit」にします。(「ItemGroup」はシステム内でのクリエイティブタブの呼び名です)

f:id:Umagame:20210117103834p:plain

このようにItemGroupのfinalフィールドを作ります。

「new ItemGroup」の後の「"uhcitems"」は、クリエイティブタブのIDです。

f:id:Umagame:20210117103837p:plain

エラーが出るので、豆電球をクリックして「createIcon()」をオーバーライドします。

f:id:Umagame:20210117103840p:plain

自動生成された「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);
		}
	});
}

アイテムに反映

作ったタブにアイテムを追加します。

f:id:Umagame:20210117103843p:plain

アイテムのクラス(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

起動して確認してみます。

f:id:Umagame:20210117103845p:plain

ちゃんと追加されていますが、まだローカライズされていません。

langファイル

クリエイティブタブの名前を設定します。

f:id:Umagame:20210117103851p:plain
f:id:Umagame:20210117103853p:plain

langファイルに、「"itemGroup.タブのID": "タブの名前"」と追記します。

コンマ(「,」)を忘れないように。

f:id:Umagame:20210117103857p:plain

ちゃんと反映されました。

コードはこちら。(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": "熱された木炭"
}

さいごに

今回はここまでです。

次回はブロック編です。

次回:

www.umagame.info