【Java + Mod開発】オリジナルのアイテムをMinecraftに追加する方法

ゲーム

はじめに

今回は、マイクラのMod開発としてオリジナルアイテムの追加をやってみたいと思います。

 

前提

以下記事を参考にModの開発環境が構築されていること。

【参照】
【開発環境構築】VSCodeでMinecraft(Java版)のMOD作成環境を構築する – SEもりのLog (selifemorizo.com)

【Java + Mod開発】Minecraftで作成するModの名前を変更してみる – SEもりのLog (selifemorizo.com)

 

フォルダ構成を作成する

赤字が今回の追加対象になります。

│  .gitattributes
│  .gitignore
│  build.gradle
│  changelog.txt
│  CREDITS.txt
│  gradle.properties
│  gradlew
│  gradlew.bat
│  LICENSE.txt
│  README.txt
│  runClient.launch
│  runData.launch
│  runGameTestServer.launch
│  runServer.launch
│  settings.gradle
├─.vscode
│      settings.json
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─mori
    │  │          └─morimod
    │  │              │  Config.java
    │  │              │  MoriMod.java
    │  │              │
    │  │              └─items            ←アイテム管理用フォルダ
    │  │                      MoriModItem.java     ←アイテムMod
    │  │
    │  └─resources
    │      │  pack.mcmeta
    │      │
    │      ├─assets
    │      │  └─morimod              ←必ずModIdの名前をつける
    │      │      ├─lang              ←ゲーム内翻訳用
    │      │      │      en_us.json
    │      │      │      ja_jp.json
    │      │      │
    │      │      ├─models             ←アイテム設定ファイル
    │      │      │  └─item
    │      │      │          moriitem.json      ←必ずModアイテムの名前をつける
    │      │      │
    │      │      └─textures            ←アイテムのテクスチャ
    │      │          └─item
    │      │                  moriitem.png      ←必ずModアイテムの名前をつける
    │      │
    │      └─META-INF
    │              mods.toml

 

ソース編集

MoriModItem.java

アイテムMod用のjavaファイルを作成します。

package com.mori.morimod.items;

import com.mori.morimod.MoriMod;

import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

/**
 * アイテムMod用クラス
 */
public class MoriModItem {
    // MODIDは自身で設定したものを指定します
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MoriMod.MODID);

    // アイテムオブジェクトの生成 第一引数のnemeはitemのIDを任意でつけます
    public static final RegistryObject<Item> MORIITEM = ITEMS.register("moriitem", () -> new Item(new Item.Properties()));

    public static void register(IEventBus eventBus) {
        ITEMS.register(eventBus);
    }
}

 

MoriMod.java

元のModクラスで、アイテム用Modクラスを読み込みます。

@Mod(MoriMod.MODID)
public class MoriMod
{
~~~~~~~~~~~~~~~
    public MoriMod()
    {
        IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();

        MoriModItem.register(modEventBus);
~~~~~~~~~~~~~~~
    }
~~~~~~~~~~~~~~~
    // Add the example block item to the building blocks tab
    private void addCreative(BuildCreativeModeTabContentsEvent event)
    {
        // クリエイティブモードのタブにアイテムをセット
        // INGREDIENTSは材料のグループになる
        if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
            event.accept(MoriModItem.MORIITEM.get());
        }
    }
~~~~~~~~~~~~~~~
}

 

設定の追加

moriitem.json

どのテクスチャをどういう形式で出力させるかを設定するファイルです。
ファイル名は自身でつけたアイテムのIDを設定します。

{
    "parent": "item/generated",
    "textures":{
        "layer0": "morimod:item/moriitem"
    }
}

 

テクスチャ格納

画像サイズは、できる限り小さくしたほうが良いです。
この例はは大きくして張っています。

 

ja_jp.json

ゲーム内で表示するアイテム名を指定します。

{
    "item.morimod.moriitem": "もり アイテム"
}

 

実行確認

実行して独自のアイテムが反省されていることを確認しましょう!

 

クリエイティブモードに変更する

/gamemode creative

 

材料の確認

材料のグループに独自のアイテムが追加されていることを確認。

 

持ってみる

機能としては追加できてないですが、アイテムの追加することができました!
今回はここまで確認できたら終わりです。

 

公式サイト

公式サイト | Minecraft

 

最後に

以上、ログになります。
これからも継続していきましょう!!

ゲーム趣味/その他
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました