Mod作成を始めたばかりなので
まだまだ知識は得ていない
記事を書いた理由は "クリエイティブタブのグループ作成" で物凄く沼ったから。
今後いろいろと作るうえで覚えたことを追記する予定
開発環境
- minecraft - 1.20.4
- fabric - 0.96.11+1.20.4
- VSCode
- Java (Kotlinは理解不足なので使わない)
バージョン等は今後変わる可能性あり
プロジェクトの作成
- テンプレートの作成
- grableの読み込みが終わった後コンソールで
gradlew vscode
の実行
gitからzipでダウンロードする方だとクラス名やディレクトリ構成の変更が面倒だったので、上記テンプレートからダウンロードする方が楽
アイテムの追加
ModName.java
public static final Item CUSTOM_ITEM = Registry.register(
Registries.ITEM,
new Identifier("mod-id", "item-id"),
new Item(new FabricItemSettings()) // コマンドでしか取り出せない
// new Item.Settings().group(ItemGroup.MISC) で既存グループへ登録
);
item-id.json
{
"parent": "item/generated",
"textures": {
"layer0": "mod-id:item/item-id"
}
}
アイテム表示名
ja_jp.json
{
"item.mod-id.item-id": "カスタムアイテム"
}
階層
main/java/[package-name]/
ModName.java
resources/assets/[mod-id]
models/item/item-id.json
textures/item/item-id.png
lang/ja_jp.json
en_us.json
package-nameまでの階層は各自変わる可能性がある
アイテムを使ったりするにはアイテムクラスを継承して登録するみたいだが
まだ試していない
クリエイティブタブのグループ作成
ModName.java
// グループの追加
private static final ItemGroup CUSTOM_GROUP = FabricItemGroup.builder()
.icon(() -> new ItemStack(
// アイコンにしたいアイテムを指定
CUSTOM_ITEM
))
.displayName(Text.translatable("タブの表示名"))
.entries((context, entries) -> {
// グループに登録したいアイテムを書く
entries.add(CUSTOM_ITEM);
})
.build();
// ~~~~~~~~~~~~~~~~~~~
@Override
public void onInitialize() {
// グループを登録
Registry.register(
Registries.ITEM_GROUP,
// "main_group"の部分の説明は見たことがないので不明。適当に名前を付けているが動く
new Identifier("mod-id", "main_group"),
CUSTOM_GROUP
);
}
build();
を実行しない方法をjp wikiで見た気がするが、古いバージョンだったはずなので動くかどうかは検証していない。
バージョンの違うコードはエラー地獄になること必然なので試したくない