WikiChree.COM 新規   編集   添付   管理  



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'' を参照してください。
  編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS