アイテムの追加 (1.16.5)

概要

特殊な機能を持たないアイテムを追加します。

動作確認

2020年3月21日

  • Minecraft 1.16.5
  • Forge 36.1.0

解説

TitaniumMod

TitaniumMod/src/main/java/com/tntmodders/titaniummod/TitaniumMod.java

package com.tntmodders.titaniummod;

import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;

@Mod(TitaniumMod.MOD_ID)
public class TitaniumMod {
    public static final String MOD_ID = "titaniummod";

    public TitaniumMod() {
        IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
        Items.register(modEventBus);
    }

    public static class Items {
        private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID);
        public static final RegistryObject<Item> TITANIUM_INGOT = ITEMS.register("titanium_ingot", () -> new Item(new Item.Properties()
                .tab(ItemGroup.TAB_MATERIALS)));

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

MODのプログラムをJavaで記述します。

MOD_IDmods.tomlに記載したものと一致する必要があります。すべて小文字にしてください。

ITEMS.register("titanium_ingot", …)でアイテムの登録名を指定します。アイテムIDはtitaniummod:titanium_ingotとなります。

ItemクラスのインスタンスはMinecraftのアイテムの種類を表します。耐久上限や最大スタック数など、アイテムの種類によって変わる性質を保持しています。

tab(ItemGroup.TAB_MATERIALS)でクリエイティブタブ「その他」に表示されるよう指定します。この指定を行わなかった場合、クリエイティブタブからは取得できなくなります。

モデル

TitaniumMod/src/main/resources/assets/titaniummod/models/item/titanium_ingot.json

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "titaniummod:item/titanium_ingot"
  }
}

アイテムモデルをリソースパックと同様の形式のJSONで記述します。

テクスチャ

TitaniumMod/src/main/resources/assets/titaniummod/textures/item/titanium_ingot.png

titanium_ingot.png

アイテムのアイコンになる16×16ピクセルのpng画像ファイルです。

英語翻訳

TitaniumMod/src/main/resources/assets/titaniummod/lang/en_us.json

{
  "item.titaniummod.titanium_ingot": "Titanium Ingot"
}

英語の翻訳をリソースパックと同様の形式のJSONで記述します。翻訳が設定されていない言語の代わりとしても表示されます。

日本語翻訳

TitaniumMod/src/main/resources/assets/titaniummod/lang/ja_jp.json

{
  "item.titaniummod.titanium_ingot": "チタンインゴット"
}

日本語の翻訳をリソースパックと同様の形式のJSONで記述します。文字コードはUTF-8で保存します。

過去の質問

テクスチャが反映されません。

src/main/resources/assets/にあるtitaniummodフォルダは、MODのIDをすべて小文字にして入れてください。また、テクスチャやモデルが見つからなかったという内容のログが表示されるので、ファイル名が正しいか確認してください。

関連クラス

  • net.minecraft.item.Items:バニラのアイテムが記述されています。
  • net.minecraft.item.ItemGroup:バニラのクリエイティブタブが記述されています。

リンク


前:環境構築

次:ブロックの追加

13件のコメント

  1. titanium_ingotのtextureに透明な部分があるpngファイルを使用したところ、以下のエラーが出て反映されません。
    全ての色を塗り透明な部分をなくすと反映されます
    [Worker-Main-11/ERROR] [minecraft/AtlasTexture]: Using missing texture, unable to load titaniummod:textures/item/titanium_ingot.png : java.io.IOException: Could not read info from the PNG file net.minecraft.resources.SimpleResource@bd8bad29 Image not of any known type, or corrupt

    • 赤砂蛇 凪浜

      こちらでは正常に動作しているので、画像ファイルの問題だと思われます。記事内の画像がWebP形式に自動変換されていたため、pngファイルをダウンロードできるよう更新しました。改めて画像をダウンロードし、透過pngが読み込めるかご確認ください。

  2. テクスチャのところでassetsがないのですが原因は何でしょうか?

    • 赤砂蛇 凪浜

      正しい状態です。assetsaluminiummodなど指定された名前のフォルダを新しく作り、aluminium.jsonなどのファイルを新しく作って配置してください。

  3. マイクラでMODの勉強をしている者です。
    この記事のコードを全コピーして実際にrunCilentしてみたところ、
    アイテム名やブロック名(日本語と英語両方)、テクスチャが反映されませんでした。
    ファイル名は確認しましたが異常はあり原因は何田消化?原因は何でしょうか?

    • 赤砂蛇 凪浜

      実行ログの起動処理の部分にリソースが見つからなかったというエラーが出ているはずなので、「titanium」で検索し、そこに表示されているファイル名とパスを確認してください。
      環境構築の記事の手順にあるmods.tomlmodIdや、JSONファイルなどを配置するフォルダの階層、ファイル名についてもう一度確認してください。
      解決しなければ、TitaniumMod/build/resources/main/assets/にJSONファイルなどが自動でコピーされているかどうかお知らせください。

      • 違う人なのですが、JSONファイルがコピーされているのにテクスチャが反映されません。
        なんででしょうか?

        • 赤砂蛇 凪浜

          ゲームが正常に起動してアイテムの追加を確認できているなら、ファイルの配置や名前に間違いがある可能性が高いでしょう。

          ログ(IntelliJ IDEAのRun Tool WindowかTitaniumMod/run/logs/latest.log)をtitaniumWARNERRORなどで検索し、関連する出力を探してください。Unable to load modelUsing missing textureなどの記述があれば、該当するファイルが読み込まれていないので、ファイル名やフォルダの構成を確認してください。

          アイテム名の翻訳も反映されていないなら、上位フォルダの構成が間違っていないか確認してください。

          解決しなかったら、ログとスクリーンショットの個人情報に注意して、以下についてお知らせください。

          • modeltextureのどちらが読み込まれていないか
          • 翻訳が反映されているか
          • ログの関連部分か全文
          • IntelliJ IDEAのProject Tool Windowのスクリーンショット(resources内のフォルダ構成がわかるもの)
          • minecraft:textures/item/titanium_ingot.png : java.io.FileNotFoundException: minecraft:textures/item/titanium_ingot.png
            というエラーを発見しました。
            modelとtextureのどちらが読み込まれていないか⇛textureが読み込まれていないです。
            翻訳が反映されているか⇛反映されています。
            ログの関連部分か全文⇛エラーは全文ではなく一行だけです。
            画像の貼り方がわからないのでGoogleドライブの機能を使わせていただきます。

          • titaniummodではなくzisakumodになっていますが気にしないでください。(わかりづらくてすいません)

          • 赤砂蛇 凪浜

            エラーのminecraft:textures/item/titanium_ingot.pngは、titaniummodzisakumodではなくminecraftのリソースでテクスチャを探していることを示しています。モデルファイル内の"layer0": "titaniummod:item/titanium_ingot"の行で正しくMOD IDを指定していることを確認してください。

            また、パッケージ名に脱字があるようです。mods.tomlZisakuMod.java、各リソースファイルの内容について、誤字脱字がないかもう一度確認してください。

            解決しなければ、MOD名やMOD IDまで完全に記事にしたがってみてください。

            スクリーンショットはこちらで差し替えました。Googleドライブの共有は相手にアカウント名が見えるのでご注意ください。

          • 解決しました!ありがとうございます!!!!!!

佐田技屋 土産 へ返信するコメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください