前回に引き続き、MinecraftのNeoForge向けMod作成について、となります。
今回はブロック追加編として、「謎のブロック」を追加してみたいと思います。ブロックですので配置と破壊くらいしかできませんが、今後「謎の原石」を追加し、謎のブロックを破壊した時に謎の原石をドロップするようにしたいと思います。
もちろんその後はかまどで原石を「謎のインゴット」にできるようにして・・・と続けていくつもりですので、楽しみにしていてください。
今回の対象バージョンは前回に引き続きMinecraft:1.21.4、NeoForge:21.1.114-betaです。なお、ブログ記事中に出てくるパスに「mod_id」などが含まれている場合がありますので必要に応じて適宜読み替えてください。
例:src/main/java/com/hashibiro/kamomod → src/main/java/com/test/samplemod
前回のブログ記事は「MinecraftのNeoForge向けMod作成:最新開発環境DL&設定編」です。
ソースの変更
IntelliJ IDEAでソースを変更します。「src/main/java/com/hashibiro/kamomod」配下にある「Config」を右クリック→「削除...」を選択して削除します。
続いて同じ階層にある「ExampleMod」を変更します。右クリック→「名前の変更」を選択して、ファイル名を変更してください。中核となるファイルとしてわかりやすい名前が良いと思います。本ブログ記事では「KamoMod」とします。続いてファイルの内容を下記に書き換えます。
@Mod(KamoMod.MODID)
public class KamoMod
{
// 参照用MOD ID
public static final String MODID = "kamomod";
// 登録用
public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID);
public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID);
// ブロック追加と、追加ブロックをもとにしたアイテムの追加
public static final DeferredBlock<block> MYSTERY_BLOCK = BLOCKS.registerSimpleBlock("mystery_block",
BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GRAY));
public static final DeferredItem<blockitem> MYSTERY_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("mystery_block", MYSTERY_BLOCK);
// クリエイティブモードのタブ登録用
public static final DeferredRegister<creativemodetab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);
// 設定と、タブに追加アイテムを登録
public static final DeferredHolder<creativemodetab creativemodetab=""> EXAMPLE_TAB = CREATIVE_MODE_TABS.register("kamomod_tab",
() -> CreativeModeTab.builder()
.title(Component.translatable("itemGroup.kamomod"))
.withTabsBefore(CreativeModeTabs.COMBAT)
.icon(() -> MYSTERY_BLOCK_ITEM.get().getDefaultInstance())
.displayItems((parameters, output) -> {
output.accept(MYSTERY_BLOCK_ITEM.get());
}).build());
// コンストラクタ
public KamoMod(IEventBus modEventBus, ModContainer modContainer) {
// IEventBusに登録
BLOCKS.register(modEventBus);
ITEMS.register(modEventBus);
CREATIVE_MODE_TABS.register(modEventBus);
}
}
内容は「謎のブロック」を「ブロック」と「アイテム」に追加するコードと、クリエイティブモードのタブを追加するコードとなっています。
5、19、21行目などの「kamomod」としている文字列は、設定したMOD IDに置き換えてください。
画像の追加
謎のブロック用の画像(テクスチャ)を追加し、マイクラ内で表示されるようにします。
今回は以下の画像を用意しました。解像度は256×256ピクセルとしています。ひとまずこの解像度で好きな柄のpng画像を用意してみましょう。
用意した画像を「src/main/resources/assets/kamomod/textures/block」配下にソース上の名称と同じファイル名で格納します。今回は「mystery_block.png」です。
モデルなどの追加
謎のブロックは「ブロック」として追加するのと共に「アイテム」としても追加するため、以降では両方のデータを追加します。
「src/main/resources/assets/kamomod/blockstates」配下に「mystery_block.json」というファイルを新規作成し、中身を下記の通りとします。
{
"variants": {
"": [
{
"model": "kamomod:block/mystery_block"
},
{
"model": "kamomod:block/mystery_block",
"y": 90
},
{
"model": "kamomod:block/mystery_block",
"y": 180
},
{
"model": "kamomod:block/mystery_block",
"y": 270
}
]
}
}
次に「src/main/resources/assets/kamomod/models/block」配下に「mystery_block.json」というファイルを新規作成し、中身を下記の通りとします。
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "kamomod:block/mystery_block"
}
}
以上でブロックとしての追加は完了です。続けてアイテムとしての追加を行います。
「src/main/resources/assets/kamomod/items」配下に「mystery_block.json」というファイルを新規作成し、中身を下記の通りとします。
{
"model": {
"type": "minecraft:model",
"model": "kamomod:block/mystery_block"
}
}
以上でアイテムとしての追加も完了です。同じファイル名で作業しますので、中身と格納先を間違えないよう十分注意して作業してください。
なお、各ファイル中の「kamomod」としている文字列は、設定したMOD IDに置き換えてください。また各ファイルの中身の詳細については「Minecraft Wiki:モデル」を参照ください。
言語ファイルの追加
最後にマイクラを日本語環境で動かした際の名称を登録します。
「src/main/resources/assets/kamomod/lang」配下に「ja_jp.json」というファイルを新規作成し、中身を下記の通りとします。
{
"itemGroup.kamomod": "KamoModタブ",
"block.kamomod.mystery_block": "謎のブロック"
}
以上ですべて完了です。なお、ファイル中の「kamomod」としている文字列は、設定したMOD IDに置き換えてください。
お疲れさまでした。
念のため、各ファイルの配置例を載せておきます。
動作確認
まずタブが追加されていること、追加した画像の見た目のアイテムが追加されていることを確認しましょう。
続けてブロックを手に持ち、ワールドに配置してみましょう。
最後に
今回はMinecraftのNeoForge向けMod作成のブロック追加編として「謎のブロック」を追加しました。
ブロック自体に新しい機能などはありませんが、好きな画像のブロックを追加でき、見た目もわかりやすいので、「作っている感」はあったのではないでしょうか。
少しでも参考になれば幸いです。次回は原石を追加したいと思います。




0件のコメント: