LoginSignup
1
0

More than 3 years have passed since last update.

[Java]MinecraftのModを作成しよう 1.14.4【3. クリエイティブタブの追加】

Last updated at Posted at 2020-08-03

(この記事は一連の解説記事の一つになります)

先頭記事:入門編
前の記事:2. ブロックの追加
次の記事:4. ツールの追加

クリエイティブタブの追加

ここまでアイテムとブロックを追加してきましたが、クリエイティブにおいてバニラ1 のアイテムとおなじタブに表示されるのは少し変な気がします。 それに、追加アイテムは独自のタブにまとまっていた方が何かと便利です。ここでは自分のMod用のクリエイティブタブを追加します。

\src\main\java\jp\koteko\example_mod\
   ├ ExampleItemGroup.java
   ├ ExampleMod.java
   └ lists
ExampleItemGroup.java
package jp.koteko.example_mod;

import jp.koteko.example_mod.lists.ItemList;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

public class ExampleItemGroup extends ItemGroup {
    public static final ExampleItemGroup DEFAULT = new ExampleItemGroup();

    public ExampleItemGroup() {
        super("example_mod");
    }

    @Override
    @OnlyIn(Dist.CLIENT)
    public ItemStack createIcon() {
        return new ItemStack(ItemList.ExampleIngot);
    }
}

ItemGroupを継承した独自のクラスを定義します。createIconでタブのアイコンを設定します(このメソッドは必須です)。なお、ここで指定した"example_mod"はModIDではなく、このItemGroupの内部IDです。

このタブを使うように、既存の追加アイテムの設定を変更します。

ItemList.java
// ...
import jp.koteko.example_mod.ExampleItemGroup; // 追加
//import net.minecraft.item.ItemGroup; // 削除
// ...
@Mod.EventBusSubscriber(modid = ExampleMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ItemList {
    // groupの引数を変更
    public static Item ExampleIngot = new Item(new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_ingot"));
    // ...
}

BlockList.java
// ...
import jp.koteko.example_mod.ExampleItemGroup; // 追加
//import net.minecraft.item.ItemGroup; // 削除
// ...
@Mod.EventBusSubscriber(modid = ExampleMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class BlockList {
    // ...
    // groupの引数を変更
    @SubscribeEvent
    public static void registerBlockItems(RegistryEvent.Register<Item> event) {
        event.getRegistry().registerAll(
                new BlockItem(ExampleBlock, new Item.Properties().group(ExampleItemGroup.DEFAULT))
                        .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_block"))
        );
    }
}

続いて、このままだと表示名が設定されていないので、langファイルに追加します。

en_us.json
{
  "itemGroup.example_mod": "Example Mod",
  "item.example_mod.example_ingot": "Example Ingot",
  "block.example_mod.example_block": "Example Block"
}
ja_jp.json
{
  "itemGroup.example_mod": "例Mod",
  "item.example_mod.example_ingot": "例インゴット",
  "block.example_mod.example_block": "例ブロック"
}

ゲームを起動します。
キャプチャ.PNG
自分のModだけの新しいタブが追加できました。

参考

Minecraft 1.14.4 Forge Modの作成 その5 【クリエイティブタブの追加】

次の記事

4. ツールの追加


  1. Modが入っていない素のマイクラのこと 

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0