目次
概要
特殊な機能を持たないアイテムを追加します。このページでは、翻訳やテクスチャなどのリソースは実装せず、追加操作のみを確認します。
動作確認
2023年06月23日
- Minecraft 1.19.4
- Forge 45.1.0
解説
ExampleTNT.java
ExampleTNT/src/main/java/com/tntmodders/exampletnt/ExampleTNT.java
package com.tntmodders.exampletnt;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@Mod(ExampleTNT.MOD_ID)
public class ExampleTNT {
public static final String MOD_ID = "exampletnt";
public ExampleTNT() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
ExampleTNTItems.register(modEventBus);
}
}
MODのプログラムをJavaで記述します。このクラスはMODの最初に読み込まれるものであり、各種処理をこのクラスより下の階層のクラスに割り振る役割を果たします。
MOD_ID
はmods.toml
に記載したものと一致する必要があります。すべて小文字にしてください。
ExampleTNTItems.java
ExampleTNT/src/main/java/com/tntmodders/exampletnt/ExampleTNTItems.java
package com.tntmodders.exampletnt;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Rarity;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ExampleTNTItems {
private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ExampleTNT.MOD_ID);
public static final RegistryObject<Item> SMALL_TNT = ITEMS.register("small_tnt", () -> new Item(new Item.Properties().rarity(Rarity.EPIC)));
public static void register(IEventBus eventBus) {
ITEMS.register(eventBus);
}
}
ExampleTNTItems.register(modEventBus);
でアイテムの追加処理をしています。DeferredRegister<Item> ITEMS
で作成したリストを、メソッドpublic static void register(IEventBus eventBus)
でまとめて登録しています。
ITEMS.register("small_tnt" ...
でITEMSに任意のアイテムを追加することができます。Itemクラスの代わりに独自のItem継承クラスを登録することで、アイテムに機能をもたせることができます。
また、アイテムごとの一般的な性質はItem.Properties
で設定しています。今回はEPICの装飾を施しています。
ExampleTNTEvents.java
ExampleTNT/src/main/java/com/tntmodders/exampletnt/ExampleTNTEvents.java
package com.tntmodders.exampletnt;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraftforge.event.CreativeModeTabEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(modid = ExampleTNT.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ExampleTNTEvents {
@SubscribeEvent
public static void creativeTabsBuildEvent(CreativeModeTabEvent.BuildContents event) {
if (event.getTab() == CreativeModeTabs.TOOLS_AND_UTILITIES) {
event.accept(ExampleTNTItems.SMALL_TNT.get());
}
}
}
@Mod.EventBusSubscriber(modid = ...
でアノテーションされたクラス内のメソッドは、@SubscribeEvent
をアノテーションしイベントの引数を入れることで該当のイベントが呼ばれた際に動作します。今回は、クリエイティブタブのアイテム登録をイベントとし、CreativeModeTabs.TOOLS_AND_UTILITIES
にアイテムを登録しています。
関連クラス
net.minecraft.item.Items
:バニラのアイテムが記述されています。
リンク
前:環境構築