うまげーむさん

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

【マインクラフト Modding】1.16での自作Modの作り方 #7 食料アイテムの追加

はじめに

どうも。

1.16Moddingパート7です。今回は食料編です。

前回:

www.umagame.info

今回追加するアイテム

f:id:Umagame:20210120205654p:plain

今回は、Hypixel UHCのエクストラレシピ(Extra Utilities)の一つである「Cornucopia」を作っていきます。

Cornucopiaは金リンゴとは違って一瞬で食べることができ(右クリックするだけで食べれる)、衝撃吸収Ⅰが10分間、再生能力Ⅱが10秒間付与されます。

ちなみに「Cornucopia」(コーヌコピア、コルヌコピア)とは、「古代ギリシア・ローマ世界において、食べ物と豊かさの象徴として用いられた角のイメージ」らしいです。(Wikipediaより)

食料の追加

食料はItem.Propertiesの設定をいじるだけで作れます。

なのでほとんどアイテムと手順が同じです。

アイテムのクラス

f:id:Umagame:20210120205717p:plain

itemパッケージに新しくクラスを作ります。

f:id:Umagame:20210120205720p:plain

名前は「CornucopiaItem」にします。

f:id:Umagame:20210120205723p:plain

Itemクラスを継承して、コンストラクタを追加します。

今、Propertiesのメソッドはクリエイティブタブのもの(group)しか記述していませんが、

f:id:Umagame:20210120205727p:plain

ここにfoodというメソッドを重ねることで、このアイテムを食料アイテムと認識させることができます。

f:id:Umagame:20210120205731p:plain

引数はFoodクラスにあるビルダー(Food.Builder)を使います。

これにメソッドを重ねていく(メソッドチェーン)ことでこの食料の回復量や、付与されるエフェクトなどを設定することができます。

f:id:Umagame:20210120205752p:plain

今回はこんな感じです。一つずつ説明します。

まずhungerは空腹バーの回復量です。UHCでのCornucopiaの回復量がわからなかったので、金リンゴと同じ4にしました。

次にsaturationですが、これは隠し満腹度の回復量です。これも金リンゴと同じ(1.2)にしました。

setAlwaysEdibleはクリエイティブモードで食べれるかどうかです。このメソッドを記述するとクリエイティブでも食べれるようになります。

fastToEatを記述すると、昆布のように通常の食べ物より食べる速度が速くなります。右クリックだけで食べれる仕様にすると間違えて食べてしまいそうなので、こっちにしました。

effectで食べたときに付与されるエフェクトを設定することができます。

今回は2種類のエフェクトが付与されるので、effectも2回呼び出しています。

Effects.○○のところがエフェクトの効果で、その次の数字が効果が続く時間(20で1秒です)で、その次がエフェクトのレベル(0のときⅠ)で、その次が食べたときにエフェクトが付与される確率です。(今回は100%付与されるので1に設定しました)

ちなみに、Propertiesのrarityメソッドでアイテムのレアリティを設定できます。

今回はRARE(レア)にしました。レアに設定すると文字が青くなります。

コードはこちら。(CornucopiaItem.java

package com.umagame.uhcitemsmod.item;

import com.umagame.uhcitemsmod.init.ItemGroupInit;

import net.minecraft.item.Food;
import net.minecraft.item.Item;
import net.minecraft.item.Rarity;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.Effects;

public class CornucopiaItem extends Item{

	public CornucopiaItem() {
		super(new Properties().rarity(Rarity.RARE).group(ItemGroupInit.UHCITEMS_MOD)
				.food(new Food.Builder().hunger(4).saturation(1.2F).setAlwaysEdible().fastToEat()
						.effect(() -> new EffectInstance(Effects.ABSORPTION,12000,0),1)
						.effect(() -> new EffectInstance(Effects.REGENERATION,200,1),1).build()));
	}
}

f:id:Umagame:20210120205735p:plain

設定が完了したら、ItemInitクラスでアイテムを登録します。

テクスチャ等の反映の作業は割愛します。

起動して確認

f:id:Umagame:20210120205739p:plain

ちゃんとレアリティがついています。

f:id:Umagame:20210120210404p:plain

食べるとエフェクトもちゃんと付きます。

さいごに

今回は短いですがここまでです。

今の所ツール編、鉱石の生成編、特殊な効果のあるアイテム編を予定しています。

バイオームやディメンションの追加は多分やりません。作りたい方は1.15の記事を参考にしてみてください。(要望があれば1.16でもやるかもしれません)

次回:

www.umagame.info