Edited at

Minecraft 1.12.2 Forge Modの作成 その3 【剣の追加とレシピ登録,クラフト後に返ってくるアイテムの設定】


はじめに

今回はツールの追加第一弾として剣を追加してみたいと思います。

MODの作成において主に以下のサイトを参考にさせていただきます。

チュートリアル一覧

また、今回は以下のYoutube動画が大変参考になりました。

【マインクラフト】MODの作り方 part2 アイテム&ツール作成編


💻開発環境


  • Windows 10

  • JDK 8u211

  • Minecraft 1.12.2

  • Minecraft Forge 1.12.2 (14.23.5.2838)

  • IntelliJ IDEA 2019.1.3


ツールを作るための素材をアイテムとして登録

琵琶湖の水をアイテムとして登録します。


メンバーの追加


Biwako_mod.java

    @GameRegistry.ObjectHolder(MOD_ID)

public static class Items {
public static final Item biwakoBurger = null; /** 琵琶湖バーガー */
public static final Item biwakoWater = null; /** 琵琶湖の水 */
}


アイテムとモデルの登録

アイテムの登録は、コンマ(,)をつけて同じように書く。

モデルの登録はメンバー名変更するだけ。


Biwako_mod.java

    @Mod.EventBusSubscriber

public static class ObjectRegistryHandler {
@SubscribeEvent
public static void addItems(RegistryEvent.Register<Item> event) {
event.getRegistry().registerAll(
new Item()
.setRegistryName(MOD_ID, "biwakoburger")
.setCreativeTab(CreativeTabs.FOOD)
.setTranslationKey("biwakoburger"),
new Item()
.setRegistryName(MOD_ID,"biwakowater")
.setCreativeTab(CreativeTabs.MATERIALS)
.setTranslationKey("biwakowater")
);
}

@SubscribeEvent
public static void addBlocks(RegistryEvent.Register<Block> event) {

}

@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomModelResourceLocation(Items.biwakoBurger, 0, new ModelResourceLocation(Items.biwakoBurger.getRegistryName(), "inventory"));
ModelLoader.setCustomModelResourceLocation(Items.biwakoWater, 0, new ModelResourceLocation(Items.biwakoWater.getRegistryName(), "inventory"));
}
}



jsonファイル

琵琶湖の水には、バニラに用意されている水バケツのテクスチャを利用しようと思う。

そこで、バニラのアイテムのjsonファイルを見てみる。

右側のプロジェクトウィンドウの一番下に外部ライブラリ-があり、

これのforgeSrc-1.12.2-14.23.5.2838.jar/assets/minecraft/models/itemにjsonが入っている。

ちなみに、水バケツはwater_bucket.jsonという名前で置かれていた。

biwakowater.jsonファイルを作成し、water_bucket.jsonの中身をコピペする。

image.png


biwakowater.json

{

"parent": "item/generated",
"textures": {
"layer0": "items/bucket_water"
}
}


langファイル

こんな感じ。


ja_JP.lang

# 日本語言語ファイル

item.biwakoburger.name=琵琶湖バーガー
item.biwakowater.name=琵琶湖の水


en_US.lang

# English Language File

item.biwakoburger.name=Biwako Burger
item.biwakowater.name=Water of Biwako


minecraftの起動

2019-07-17_21.06.57.png

ここまでは前回と同じ手順。


琵琶湖ソードを追加

まずはソードを追加してみます。


メンバーの追加

ソードのメンバを新しく追加します。ソードも変数をItemとするようです。


Biwako_mod.java

@GameRegistry.ObjectHolder(MOD_ID)

public static class Items {
public static final Item biwakoBurger = null; /** 琵琶湖バーガー */
public static final Item biwakoWater = null; /** 琵琶湖の水 */
public static final Item biwakoSword = null; /** 琵琶湖ソード , 滋賀剣*/
}


ソード追加クラス

src/main/java/jp/yuyu/biwako_modにソード追加用のクラスを作成します。

ファイル名はAddSword.javaとしました。

ItemSwordクラスを継承させ、以下のように記述しておきます。


AddSword.java

package jp.yuyu.biwako_mod;

import net.minecraft.item.ItemSword;

public class AddSword extends ItemSword {
public AddSword(ToolMaterial material){
super(material);
}
}



アイテムの登録

少し長くなってきましたので、次回からは一部のみ記載することにします。

無機能アイテムを登録したときと同じように、addItemsメソッド内でアイテムの登録を行います。

先程作ったAddSwordクラスのインスタンスを作成し、

引数には、EnumHelper.addToolMaterialメソッドを用いてツールのパラメータを設定します。

パラメータは以下の通りに設定してみました。

また、CreativeTabの設定はせずとも、ItemSwordクラスがやってくれるようです。

名前

name
BIWAKOWATER_MATERIAL

harvestLevel
1

maxUses
1000

efficiency
5

damage
7

enchantabillity
1


Biwako_mod.java

    @Mod.EventBusSubscriber

public static class ObjectRegistryHandler {
@SubscribeEvent
public static void addItems(RegistryEvent.Register<Item> event) {
event.getRegistry().registerAll(
new Item()
.setRegistryName(MOD_ID, "biwakoburger")
.setCreativeTab(CreativeTabs.FOOD)
.setTranslationKey("biwakoburger"),
new Item()
.setRegistryName(MOD_ID,"biwakowater")
.setCreativeTab(CreativeTabs.MATERIALS)
.setTranslationKey("biwakowater"),
new AddSword(EnumHelper.addToolMaterial("BIWAKOWATER_MATERIAL",1,1000,5,7,1))
.setRegistryName(MOD_ID,"biwakosword")
.setTranslationKey("biwakosword")
);
}

@SubscribeEvent
public static void addBlocks(RegistryEvent.Register<Block> event) {

}

/**
* モデル登録用イベント
*/

@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomModelResourceLocation(Items.biwakoBurger, 0, new ModelResourceLocation(Items.biwakoBurger.getRegistryName(), "inventory"));
ModelLoader.setCustomModelResourceLocation(Items.biwakoWater, 0, new ModelResourceLocation(Items.biwakoWater.getRegistryName(), "inventory"));
ModelLoader.setCustomModelResourceLocation(Items.biwakoSword, 0, new ModelResourceLocation(Items.biwakoSword.getRegistryName(), "inventory"));
}
}



ソードのテクスチャ

models/item/biwakosword.jsonを作成します。

テクスチャは用意できなかったので、代わりにバニラのダイヤモンドソードのテクスチャを使用します。

無機能アイテムと違い、ソードの場合はparentの値をitem/handheldにします。


biwakosword.json

{

"parent": "item/handheld",
"textures": {
"layer0": "items/diamond_sword"
}
}


langの設定


en_US.lang

# English Language File

item.biwakoburger.name=Biwako Burger
item.biwakowater.name=Water of Biwako
item.biwakosword.name=Biwako Sword


ja_JP.lang

# 日本語言語ファイル

item.biwakoburger.name=琵琶湖バーガー
item.biwakowater.name=琵琶湖の水
item.biwakosword.name=滋賀県


minecraftの起動

無事、滋賀県(?)が追加されました

2019-08-08_14.42.00.png


レシピの登録


レシピ登録のJsonファイル

Jsonファイルを使ってレシピ登録ができるようです。

resources/assets/biwako_mod/recipes/biwakosword_recipe.jsonを作成します。

ファイル名は何でも良いようですので、わかりやすい名前をつけておきます。

patternには、作業台にアイテムをどう配置するかを記述し、

アルファベットに対するアイテムが何なのかをkeyとして記述します。


biwakosword_recipe.json

{

"type": "minecraft:crafting_shaped",
"pattern": [
"W",
"W",
"S"
],
"key": {
"W": [
{
"item": "biwako_mod:biwakowater",
"data": 0
}
],
"S": [
{
"item": "minecraft:stick",
"data": 0
}
]
},
"result": {
"item": "biwako_mod:biwakosword",
"data": 0,
"count": 1
}
}


クラフト後に返ってくるアイテム

滋賀県(琵琶湖ソード)は琵琶湖の水を素材として使用します。

クラフト後にはバケツが返ってきてほしいのです。

これはレシピ用のJsonファイルに記述するのではなく、アイテムの登録時に設定します。

setContainerItemというメソッドの引数にバニラのバケツを渡せばOKです。


Biwako_mod.java

new Item()

.setRegistryName(MOD_ID,"biwakowater")
.setCreativeTab(CreativeTabs.MATERIALS)
.setTranslationKey("biwakowater")
.setContainerItem(Item.getByNameOrId("bucket")),


minecraftの起動

左側のレシピには、一度クラフトすると表示されるようになりました。

ケーキで試して挙動が同じか確かめた痕跡が残ってるSSですが、

ちゃんとクラフト後にはバケツが残りますね!

返ってくるアイテムはIDでも指定できるようで、適当にID指定したら砂利が返ってきたのも写ってますね...。

2019-08-08_15.31.16.png

2019-08-08_15.50.33.png


おわりに

ツール作成第一弾、ソードの追加ができました。

アイテムの登録に関しては、なんとなくわかってきた気がします(ほんとに気がするだけ)。

色合いを変えるだけでもいいから、専用テクスチャを用意しておきたいのと、

ツールのパラメータをいい感じに調整したいですね。

現在開発中の琵琶湖MODですが、Githubにてプロジェクトを公開しています。


次回は琵琶湖ツールを完成させます。

Minecraft 1.12.2 Forge Modの作成 その1 【開発環境の準備 IntelliJ IDEA】

Minecraft 1.12.2 Forge Modの作成 その2 【mcmod.infoの編集と無機能アイテムの追加】

Minecraft 1.12.2 Forge Modの作成 その3 【剣の追加とレシピ登録,クラフト後に返ってくるアイテムの設定】

Minecraft 1.12.2 Forge Modの作成 その4 【ブロックの追加】

2018/08/08 初版