Help us understand the problem. What is going on with this article?

Minecraft 1.14.4 Forge Modの作成 その3 【無機能アイテムの追加】

More than 1 year has passed since last update.

はじめに

クラフトの素材になるような無機能アイテムの追加をしてみます。
2019-09-16_19.11.21.png

参考
Minecraft Modding Tutorial for MC 1.14/1.14.3 - Basic Items

💻開発環境

ここでは環境は以下のようにします。

  • Windows 10
  • JDK 8u211
  • Minecraft 1.14.4
  • Minecraft Forge 1.14.4 (28.1.0)
  • IntelliJ IDEA 2019.1.4

パッケージの作成

アイテムの宣言はメインクラス外のクラスでしようと思います。
今後、ブロックの宣言をすることもあるので、それらをまとめるパッケージを作成しておくことにします。

また、アイテムを追加する際に必要になるlangmodels/itemtextures/itemsフォルダも作成しておきます。
フォルダ名の単数、複数形には気を付けてください。

└─src
    └─main
        ├─java
        │  └─jp
        │      └─yuyu
        │          └─biwako_mod
        │              │  BiwakoMod.java
        │              │
        │              └─*lists
        │                      *ItemList.java
        │
        └─resources
            │  logo.png
            │  pack.mcmeta
            │
            ├─assets
            │  └─biwako_mod
            │      ├─*lang
            │      ├─*models
            │      │  └─*item
            │      └─*textures
            │          └─*items
            └─META-INF
                    mods.toml

アイテムの宣言

作成したlistフォルダ内にItemList.javaを作成しアイテムの宣言だけ記述します。
琵琶湖インゴット、略して琵ンゴットを追加しようと思います。(ナニソレ)

ItemList.java
package jp.yuyu.biwako_mod.lists;

import net.minecraft.item.Item;

public class ItemList {
    public static Item BiwakoIngot;
}

アイテムの登録

まず、RegistryEventsクラス内にアイテムの登録用メソッドを記述します。
その中でItemクラスのインスタンスを作成し、登録します。

group(ItemGroup.MISC)でクリエイティブタブの指定、
setRegistryName(new ResourceLocation(MOD_ID, "biwako_ingot"))でアイテムID名の指定です。
アイテムID名のアルファベットは全て小文字でないとForgeがエラーを吐きます

BiwakoMod.java
    @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
    public static class RegistryEvents {
        @SubscribeEvent
        public static void onItemsRegistry(final RegistryEvent.Register<Item> itemRegistryEvent) {
            LOGGER.info("HELLO from Register Item");
            itemRegistryEvent.getRegistry().registerAll(
                    ItemList.BiwakoIngot = new Item(new Item.Properties().group(ItemGroup.MISC))
                            .setRegistryName(new ResourceLocation(MOD_ID, "biwako_ingot"))
            );
       }

        @SubscribeEvent
        public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
            LOGGER.info("HELLO from Register Block");
        }
    }

翻訳ファイル

アイテムID名に対するアイテム名を言語別に記述しておきます。
日本語用のファイル名はja_jp.json、英語(US)はen_us.jsonとするルールがあります。

ファイルはsrc/main/resources/assets/biwako_mod/langフォルダに作成します。

書き方はitem.MOD_ID.アイテムID名": "アイテム名"という形。

en_us.json
{
    "item.biwako_mod.biwako_ingot":  "Biwako Ingot"
}
ja_jp.json
{
    "item.biwako_mod.biwako_ingot":  "琵ンゴット"
}

モデルファイル

テクスチャをどのように適用するかをモデルファイルで指定します。
jsonファイルはsrc/main/resources/assets/biwako_mod/models/itemフォルダに
setRegistryNameで登録した名前.jsonという形で配置します。

私の場合はbiwako_ingot.jsonを配置します。
ほとんどの場合、変えるのはlayer0の値だけで、MOD_ID:items/TEXTURE_FILE_NAMEという形で書きます。

TEXTURE_FILE_NAMEbiwako_ingot.pngという画像を用意したのであれば、
拡張子以外の部分のbiwako_ingotとなります。

biwako_ingot.json
{
    "parent": "item/generated",
    "textures": {
        "layer0": "biwako_mod:items/biwako_ingot"
    }
}

テクスチャファイル

テクスチャファイルはsrc/main/resources/assets/biwako_mod/textures/itemsフォルダに配置します。
私の場合はbiwako_ingot.pngを配置します。

biwako_ingot.png

            ├─assets
            │  └─biwako_mod
            │      ├─lang
            │      │      en_us.json
            │      │      ja_jp.json
            │      │
            │      ├─models
            │      │  └─item
            │      │          biwako_ingot.json
            │      │
            │      └─textures
            │          └─items
            │                  biwako_ingot.png

Minecraftを起動

English

2019-09-16_19.08.53.png

日本語

2019-09-16_19.11.21.png


Githubにてプロジェクトを公開しています。

Hiroya_W
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away