dev/MCPitanLib/Item Addition の変更点
#author("2025-09-12T13:38:18+09:00","default:pitan76","pitan76")
* MCPitanLib でのアイテム追加方法 [#s77b0f77]
ここでは、MCPitanLib でアイテムを追加するための基本的な手順を説明します。
例として、''ExampleMod.java'' の実装を参照します。
** 前提条件 [#m56fc419]
- MCPitanLib がGradle依存関係としてプロジェクトに追加されていること
- MODのメインクラス (例: ''ExampleMod'') が ''CommonModInitializer'' を継承していること
** 手順 [#f2f2c61c]
*** 1. MOD IDとレジストリの準備 [#w4592bef]
MODを識別するために使用するMOD_IDを定義し、MCPitanLibのレジストリ(CompatRegistryV2)を取得します。
#gcode(java){{
public class ExampleMod extends CommonModInitializer {
public static final String MOD_ID = "examplemod"; // ここは使いたいmod idに置き換えてください
public static CompatRegistryV2 registry;
@Override
public void init() {
registry = super.registry; // CommonModInitializer から registry を取得
// ...
}
// MOD_IDでCompatIdentifierを作成するためのメソッド
public static CompatIdentifier _id(String path) {
return CompatIdentifier.of(MOD_ID, path);
}
@Override
public String getId() {
return MOD_ID;
}
// ...
}
}}
***2. アイテム ID の定義 [#r968820e]
追加したいアイテムID を ''CompatIdentifier'' で作成します。
形式は ''MOD_ID:アイテムID'' となります。
#gcode(java){{
public class ExampleMod extends CommonModInitializer {
// ... (上記のコード) ...
// アイテムIDを定義
public static CompatIdentifier EXAMPLE_ITEM_ID = _id("example_item"); // "examplemod:example_item" となる
// ...
}
}}
*** 3. アイテムインスタンスと設定の準備 [#g3e1a1ad]
追加するアイテムのインスタンスを作成します。
MCPitanLib では、''CompatItem'' クラスと ''CompatibleItemSettings'' を使います。
- '''''CompatibleItemSettings.of()''''': アイテムの基本的な設定 (スタック数、クリエイティブタブなど) を設定
- '''''CompatItem''''': アイテムクラスで''CompatibleItemSettings'' を引数として使います
#gcode(java){{
// ExampleMod.java内のinitメソッドかアイテム登録用のstatic変数として定義します
// アイテムの登録結果を保持する変数 (RegistryResult型)
public static RegistryResult<Item> EXAMPLE_ITEM;
// initメソッドでアイテムを登録
@Override
public void init() {
// ...
registry = super.registry;
// ...
// アイテム登録
EXAMPLE_ITEM = registry.registerItem(EXAMPLE_ITEM_ID, () ->
new CompatItem(CompatibleItemSettings.of(EXAMPLE_ITEM_ID) // Settingsを渡す
// .maxCount(16) // 例えば、最大スタック数を16にするなら
.addGroup(ItemGroups.INGREDIENTS) // 材料のクリエイティブタブに追加
)
);
// ...
}
}}
'''詳細'''
- ''CompatibleItemSettings.of(CompatIdentifier id)'':アイテムID を引数に渡すことで、それぞれのバージョンに適したSettingsインスタンスが生成されます。
- ''.addGroup(ItemGroups.INGREDIENTS)'':作成したアイテムをクリエイティブモードのインベントリにあるタブ (ここでは材料) に追加します。''ItemGroups'' クラスには、他のタブも定義されています。
- ''() -> new CompatItem(...)'':アイテムのインスタンスを提供するラムダ式 (Supplier) を渡します。これで初期化を遅延させます。
*** 4. 独自のアイテムクラスを作成 (任意) [#s75f9236]
細かい処理があるアイテムを作成するのであれば、''CompatItem'' を継承したクラスを作成します。
#gcode(java){{
// 例: 右クリックしたときにメッセージが送られるアイテム
public class MyCustomItem extends CompatItem {
public MyCustomItem(CompatibleItemSettings settings) {
super(settings);
}
@Override
public public StackActionResult onRightClick(ItemUseEvent e) {
// Action on right-click
if (!e.isClient())
e.player.sendMessage(TextUtil.literal("Custom item was used!"));
return e.success();
}
}
// ExampleMod.javaでの登録
// ...
public static RegistryResult<Item> MY_CUSTOM_ITEM;
public static CompatIdentifier MY_CUSTOM_ITEM_ID = _id("my_custom_item");
// ...
// init()メソッド内
MY_CUSTOM_ITEM = registry.registerItem(MY_CUSTOM_ITEM_ID, () ->
new MyCustomItem(CompatibleItemSettings.of(MY_CUSTOM_ITEM_ID)
.addGroup(ItemGroups.TOOLS) // Add to the "Tools" tab
)
);
// ...
}}
*** まとめ [#s127d82e]
MCPitanLibで簡単に複数バージョン対応のアイテムを追加できます。
- ''CompatRegistryV2#registerItem(CompatIdentifier id, Supplier<Item> itemSupplier)''
- ''CompatIdentifier#of(String modId, String path)''
- ''CompatItem''
- ''CompatibleItemSettings#of(CompatIdentifier id)''
もっと細かい設定や動作は、MCPitanLibのAPIや ''ExampleMod.java''、''ExampleGuiItem'' を参照してください。