📝
Minecraft Modでお城生成コマンドを作ってみた【Fabric 1.21 + Claude活用】
※ 本記事の大部分はAIが執筆しました。
はじめに
Minecraft Modの学習を目的として、コマンド一つでお城を生成できるModを作ってみました。
開発環境
今回使用した技術スタック:
- Minecraft: 1.21
- Modding Framework: Fabric Mod
- Java: 21
- 開発環境: Cursor(AI統合エディタ)
- AI支援: Claude 4 Sonnet
環境構築
Java 21のインストールが必要だったので、Homebrewで導入:
brew install openjdk@21
プロジェクトの初期化は、Fabricの公式テンプレートをクローン:
git clone https://github.com/FabricMC/fabric-example-mod.git castle-mod
Cloning into 'castle-mod'...
remote: Enumerating objects: 930, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 930 (delta 33), reused 17 (delta 17), pack-reused 883 (from 3)
Receiving objects: 100% (930/930), 588.77 KiB | 10.51 MiB/s, done.
Resolving deltas: 100% (404/404), done.
その後、Cursorで開発環境を起動:
cd castle-mod
cursor .
お城の設計
以下のような指示で、claude-4-sonnet
にお願いしました。
西洋風のお城を作るコマンドを追加したい
- 石造りの厚い壁
- 塔(タワー)
- 城壁
- 跳ね橋や門
- 窓は小さめ
- バトルメント(城壁の凹凸)
- より四角い構造
実装方法
配列で設計図を作成
手動でブロックを配置するのではなく、配列を使って設計図を作りました:
// 0=空気, 1=石垣, 2=木材, 3=白い壁, 4=金装飾, 5=瓦屋根, 6=窓, 7=入口...
private static final int[][][] CASTLE_BLUEPRINT = {
createLayer1(), // 29x29の基礎
createLayer2(), // 27x27の2層目
// ...
};
ブロックの配置
数字に応じて実際のブロックを配置:
switch (blockType) {
case 1: // 石垣
world.setBlockState(pos, Blocks.COBBLESTONE.getDefaultState());
break;
case 6: // 窓
world.setBlockState(pos, Blocks.GLASS_PANE.getDefaultState());
break;
// ...
}
使い方
- Modを導入
./gradlew runClient
- ゲーム内で
/western-castle
コマンドを実行
- プレイヤーの位置にお城が生成される
開発環境でMinecraftを起動してコマンドを実行してみると...
[Server thread/INFO] [Player:城が生成されました!]
無事に城が生成されました!
まとめ
AIツールとの組み合わせにより、簡単に動作確認を済ませることができました。
今回の経験を活かして、今度は他の建築物や、より高度な機能を持つModにも挑戦してみたいと思います!
Discussion