ここでは、MCPitanLib でアイテムを追加するための基本的な手順を説明します。
例として、ExampleMod.java の実装を参照します。
MODを識別するために使用するMOD_IDを定義し、MCPitanLibのレジストリ(CompatRegistryV2)を取得します。
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;
}
// ...
}
追加したいアイテムID を CompatIdentifier で作成します。
形式は MOD_ID:アイテムID となります。
public class ExampleMod extends CommonModInitializer {
// ... (上記のコード) ...
// アイテムIDを定義
public static CompatIdentifier EXAMPLE_ITEM_ID = _id("example_item"); // "examplemod:example_item" となる
// ...
}
追加するアイテムのインスタンスを作成します。
MCPitanLib では、CompatItem クラスと CompatibleItemSettings を使います。
// 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) // 材料のクリエイティブタブに追加
)
);
// ...
}
詳細
細かい処理があるアイテムを作成するのであれば、CompatItem を継承したクラスを作成します。
// 例: 右クリックしたときにメッセージが送られるアイテム
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
)
);
// ...
MCPitanLibで簡単に複数バージョン対応のアイテムを追加できます。
もっと細かい設定や動作は、MCPitanLibのAPIや ExampleMod.java、ExampleGuiItem を参照してください。