AIツール活用 応用編

【2026年】Claude CodeでマイクラMod開発【応用編】カスタムMob・ワールド生成・公開方法

読了時間: 約20分

マイクラMod開発シリーズ

第1弾: 入門編(環境構築・基本) 第2弾: 応用編(本記事)

第1弾の入門編では、Claude Codeを使った環境構築から基本的なアイテム・ブロックの追加までを解説しました。

この応用編では、さらに一歩進んでカスタムMob(敵モブ・動物)の作成ワールド生成への鉱石追加ツール・防具の実装、そして完成したModをCurseForgeやModrinthに公開する方法まで解説します。

Claude Codeの力を借りて、本格的なMod開発に挑戦しましょう。

1. はじめに: 応用編で学ぶこと

この記事で作成するもの

カスタムMob「ルビーゴーレム」

プレイヤーを守る友好的なゴーレム。ルビーブロックで召喚可能。

ルビー鉱石のワールド生成

地下深くに生成されるルビー鉱石。Y=-64〜0に生成。

ルビーツールセット

剣、ツルハシ、斧、シャベル、クワの5種類。

ルビー防具セット

ヘルメット、チェストプレート、レギンス、ブーツの4種類。

前提条件

この記事は入門編で環境構築が完了していることを前提としています。まだの方は入門編から始めてください。

2. カスタムMob(エンティティ)の作成

カスタムMobの作成は、Mod開発の中でも最も難易度が高い部分の一つです。しかし、Claude Codeを活用すれば、複雑なコードも効率的に生成できます。

2.1 エンティティの基本構造

Minecraftのエンティティは、以下のコンポーネントで構成されています。

Entity クラス

エンティティの動作、属性、AIを定義するメインクラス

Renderer クラス

エンティティの見た目(描画方法)を定義

Model クラス

エンティティの3Dモデル(体のパーツ構成)を定義

テクスチャ

エンティティの外見(PNG画像)

2.2 Claude Codeでエンティティを生成

Claude Codeへの指示例

# ルビーゴーレムのエンティティを作成
> 「ルビーゴーレム」という新しいMobを作成してください。
>
> 仕様:
> - 友好的なゴーレム(アイアンゴーレムと同様の動作)
> - HP: 100、攻撃力: 15
> - プレイヤーを攻撃するモンスターを自動で攻撃
> - エンティティID: ruby_golem
> - 高さ: 2.7ブロック、幅: 1.4ブロック
>
> 以下のファイルを全て作成してください:
> 1. Entityクラス(RubyGolemEntity.java)
> 2. Rendererクラス(RubyGolemRenderer.java)
> 3. Modelクラス(RubyGolemModel.java)
> 4. エンティティ登録クラス(ModEntities.java)
> 5. 言語ファイルへの追加

Claude Codeが生成する主要なコード:

// RubyGolemEntity.java(抜粋)

public class RubyGolemEntity extends IronGolem {
    public RubyGolemEntity(EntityType<? extends IronGolem> type, Level level) {
        super(type, level);
    }

    public static AttributeSupplier.Builder createAttributes() {
        return Mob.createMobAttributes()
            .add(Attributes.MAX_HEALTH, 100.0D)
            .add(Attributes.MOVEMENT_SPEED, 0.25D)
            .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D)
            .add(Attributes.ATTACK_DAMAGE, 15.0D);
    }

    @Override
    protected void registerGoals() {
        this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true));
        this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F));
        this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F));
        this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));

        this.targetSelector.addGoal(1, new HurtByTargetGoal(this));
        this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(
            this, Mob.class, 5, false, false,
            (entity) -> entity instanceof Enemy
        ));
    }
}

2.3 Blockbenchでモデル作成

Blockbenchとは

Blockbenchは、Minecraft向けの無料3Dモデリングツールです。エンティティのモデル作成に最適で、NeoForge/Forge形式に直接エクスポートできます。

  1. 1 Blockbenchを起動し、「Modded Entity」を選択
  2. 2 キューブを追加してゴーレムの体を作成(頭、胴体、腕、脚)
  3. 3 テクスチャを作成・適用
  4. 4 「Export」から「Export Java Entity」を選択
  5. 5 生成されたJavaコードをModに組み込む

Claude Codeとの連携

Blockbenchがエクスポートしたコードをそのままプロジェクトに追加し、Claude Codeに「このモデルをRubyGolemModelとして統合してください」と指示すると、既存のコードと整合性を取りながら統合してくれます。

2.4 エンティティの登録

// ModEntities.java

public class ModEntities {
    public static final DeferredRegister<EntityType<?>> ENTITIES =
        DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, MOD_ID);

    public static final RegistryObject<EntityType<RubyGolemEntity>> RUBY_GOLEM =
        ENTITIES.register("ruby_golem",
            () -> EntityType.Builder.of(RubyGolemEntity::new, MobCategory.MISC)
                .sized(1.4F, 2.7F)
                .clientTrackingRange(10)
                .build("ruby_golem"));
}

よくあるエラー: エンティティが表示されない

原因: Rendererが登録されていない、またはモデルのレイヤー定義が不足

解決: クライアント側のイベントハンドラでEntityRenderers.register()を呼び出しているか確認

3. ワールド生成: 鉱石の追加

入門編で作成した「ルビー」を、ワールド生成時に自然生成される鉱石として追加します。NeoForgeではデータパック形式でワールド生成を定義するのが主流です。

3.1 鉱石ブロックの作成

Claude Codeへの指示例

# ルビー鉱石ブロックとワールド生成を追加
> 「ルビー鉱石」ブロックを作成し、ワールド生成に追加してください。
>
> 仕様:
> - 通常鉱石(ruby_ore)と深層岩版(deepslate_ruby_ore)
> - 硬さ・耐性はダイヤモンド鉱石と同等
> - 鉄以上のツルハシで採掘可能
> - ドロップ: ルビー1-3個(幸運エンチャント対応)
> - 生成高度: Y=-64 〜 Y=16
> - 1チャンクあたり3-5個の鉱脈
> - 1鉱脈あたり3-8個のブロック
>
> 必要なファイルを全て作成してください。

3.2 データパックでの鉱石生成定義

NeoForge 1.21.x以降では、JSONファイルでワールド生成を定義します。

// configured_feature/ruby_ore.json

{
  "type": "minecraft:ore",
  "config": {
    "size": 8,
    "discard_chance_on_air_exposure": 0,
    "targets": [
      {
        "target": {
          "predicate_type": "minecraft:tag_match",
          "tag": "minecraft:stone_ore_replaceables"
        },
        "state": {
          "Name": "mymod:ruby_ore"
        }
      },
      {
        "target": {
          "predicate_type": "minecraft:tag_match",
          "tag": "minecraft:deepslate_ore_replaceables"
        },
        "state": {
          "Name": "mymod:deepslate_ruby_ore"
        }
      }
    ]
  }
}

// placed_feature/ruby_ore.json

{
  "feature": "mymod:ruby_ore",
  "placement": [
    {
      "type": "minecraft:count",
      "count": 4
    },
    {
      "type": "minecraft:in_square"
    },
    {
      "type": "minecraft:height_range",
      "height": {
        "type": "minecraft:trapezoid",
        "min_inclusive": {"absolute": -64},
        "max_inclusive": {"absolute": 16}
      }
    },
    {
      "type": "minecraft:biome"
    }
  ]
}

3.3 Biome Modifierで生成を有効化

// biome_modifier/add_ruby_ore.json

{
  "type": "neoforge:add_features",
  "biomes": "#minecraft:is_overworld",
  "features": "mymod:ruby_ore",
  "step": "underground_ores"
}

ファイル配置

src/main/resources/data/mymod/
├── worldgen/
│   ├── configured_feature/
│   │   └── ruby_ore.json
│   └── placed_feature/
│       └── ruby_ore.json
└── neoforge/
    └── biome_modifier/
        └── add_ruby_ore.json

4. カスタムツール・防具の作成

ルビーを使ったツールセットと防具セットを作成します。NeoForgeではTier(ツール素材)とArmorMaterial(防具素材)を定義します。

4.1 ツール素材(Tier)の定義

Claude Codeへの指示例

> ルビーツールセット(剣、ツルハシ、斧、シャベル、クワ)を作成してください。
>
> 性能はダイヤモンドと同等、ただし以下の特徴を追加:
> - 耐久値: 1800(ダイヤの1561より高い)
> - 採掘速度: 9.0(ダイヤの8.0より速い)
> - 攻撃力ボーナス: +4
> - エンチャント適性: 12(ダイヤの10より高い)

// ModToolTiers.java(NeoForge 1.21.x対応)

public class ModToolTiers {
    public static final Tier RUBY = new Tier() {
        @Override
        public int getUses() { return 1800; }

        @Override
        public float getSpeed() { return 9.0F; }

        @Override
        public float getAttackDamageBonus() { return 4.0F; }

        @Override
        public TagKey<Block> getIncorrectBlocksForDrops() {
            return BlockTags.INCORRECT_FOR_DIAMOND_TOOL;
        }

        @Override
        public int getEnchantmentValue() { return 12; }

        @Override
        public Ingredient getRepairIngredient() {
            return Ingredient.of(ModItems.RUBY.get());
        }
    };
}

4.2 ツールアイテムの登録

// ModItems.java(ツール部分)

// ルビーツール
public static final RegistryObject<Item> RUBY_SWORD = ITEMS.register("ruby_sword",
    () -> new SwordItem(ModToolTiers.RUBY, 3, -2.4F,
        new Item.Properties()));

public static final RegistryObject<Item> RUBY_PICKAXE = ITEMS.register("ruby_pickaxe",
    () -> new PickaxeItem(ModToolTiers.RUBY, 1, -2.8F,
        new Item.Properties()));

public static final RegistryObject<Item> RUBY_AXE = ITEMS.register("ruby_axe",
    () -> new AxeItem(ModToolTiers.RUBY, 5.0F, -3.0F,
        new Item.Properties()));

public static final RegistryObject<Item> RUBY_SHOVEL = ITEMS.register("ruby_shovel",
    () -> new ShovelItem(ModToolTiers.RUBY, 1.5F, -3.0F,
        new Item.Properties()));

public static final RegistryObject<Item> RUBY_HOE = ITEMS.register("ruby_hoe",
    () -> new HoeItem(ModToolTiers.RUBY, -3, 0.0F,
        new Item.Properties()));

4.3 防具素材(ArmorMaterial)の定義

// ModArmorMaterials.java

public class ModArmorMaterials {
    public static final Holder<ArmorMaterial> RUBY = register("ruby",
        Map.of(
            ArmorItem.Type.HELMET, 3,
            ArmorItem.Type.CHESTPLATE, 8,
            ArmorItem.Type.LEGGINGS, 6,
            ArmorItem.Type.BOOTS, 3
        ),
        25,  // エンチャント適性
        SoundEvents.ARMOR_EQUIP_DIAMOND,
        2.0F,  // 防御力ボーナス
        0.1F,  // ノックバック耐性
        () -> Ingredient.of(ModItems.RUBY.get())
    );

    private static Holder<ArmorMaterial> register(String name,
            Map<ArmorItem.Type, Integer> defense, int enchantability,
            Holder<SoundEvent> equipSound, float toughness,
            float knockbackResistance, Supplier<Ingredient> repairIngredient) {
        // 登録処理...
    }
}
素材 耐久値 防御力合計 特殊効果
ダイヤモンド 33 20 -
ネザライト 37 20 ノックバック耐性
ルビー(作成) 35 20 高エンチャント適性

5. Modの公開方法(CurseForge・Modrinth)

完成したModを世界中のプレイヤーに届けるため、CurseForgeModrinthに公開しましょう。両方に公開することで、より多くのユーザーにリーチできます。

5.1 公開前の準備

必要なもの

  • 1. ビルド済みJARファイル: ./gradlew buildで生成
  • 2. Modアイコン: 400x400px以上の正方形PNG
  • 3. 説明文: Mod の機能、インストール方法、対応バージョン
  • 4. スクリーンショット: 3-5枚程度(推奨)
  • 5. ライセンス: MIT、GPL、ARRなど

5.2 CurseForgeへの公開手順

  1. 1

    アカウント作成

    CurseForgeでアカウントを作成し、Author登録を完了

  2. 2

    プロジェクト作成

    「Create Project」から新規プロジェクトを作成。Name、Summary、Descriptionを入力

  3. 3

    カテゴリ・ライセンス設定

    Primary Category(メインカテゴリ)、Secondary Categories(最大4つ)、Licenseを選択

  4. 4

    ファイルアップロード

    JARファイルをアップロード。対応Minecraftバージョン、Mod Loader(NeoForge/Forge)を選択

  5. 5

    審査待ち

    Submit後、5分〜1時間程度で審査完了。承認されると公開

5.3 Modrinthへの公開手順

  1. 1

    アカウント作成

    ModrinthでGitHubまたはメールでアカウント作成

  2. 2

    プロジェクト作成

    「Create a project」からMod情報を入力。UIがシンプルで直感的

  3. 3

    バージョンアップロード

    「Versions」タブからJARファイルをアップロード。SemVer形式でバージョン番号を設定

  4. 4

    公開

    審査は自動化されており、数分で公開される場合が多い

5.4 Gradleからの自動アップロード(上級者向け)

CurseForgeGradleやMinotaurプラグインを使えば、GradleからCI/CDパイプラインで自動アップロードが可能です。

# Modrinthへのアップロード(Minotaur)
./gradlew modrinth

# CurseForgeへのアップロード
./gradlew curseforge

詳細はFabric Wiki - MinotaurCurseForge API Documentationを参照してください。

項目 CurseForge Modrinth
ユーザー数 非常に多い 成長中
UI/UX 機能的 モダン・洗練
審査速度 5分〜1時間 数分
収益プログラム あり(Reward Program) あり
おすすめ 両方に公開がベスト

6. Claude Code活用の実践Tips

コンテキストを保持する

CLAUDE.mdにプロジェクト構造、命名規則、使用しているNeoForgeバージョンを記載しておくと、Claude Codeが一貫したコードを生成します。

既存コードを参照させる

「ModItems.javaを参考にして、同じスタイルでModBlocks.javaを作成して」と指示すると、既存コードと整合性のあるコードが生成されます。

段階的に実装する

「まずEntityクラスだけ作成して」「次にRendererを作成して」と段階的に指示することで、エラーを早期に発見できます。

エラーをそのまま共有

ビルドエラーやクラッシュログをそのまま貼り付けて「このエラーを解決して」と依頼すると、的確な修正案が得られます。

効果的なプロンプトテンプレート

# 新機能追加時
> [機能名]を実装してください。
>
> 仕様:
> - [具体的な動作1]
> - [具体的な動作2]
> - [具体的な動作3]
>
> 参考: 既存の[類似クラス名].javaのスタイルに合わせてください。
> 対象バージョン: NeoForge 1.21.4
>
> 必要なファイルを全て作成してください。

7. よくある質問

Q. カスタムMobを作るにはどんな知識が必要ですか?

基本的なJavaの知識に加え、エンティティのライフサイクル、AIシステム(Goal)、レンダリングの概念理解が役立ちます。Claude Codeがコード生成をサポートしますが、動作の微調整には理解があると便利です。

Q. Blockbenchは必須ですか?

カスタムMobやブロックの独自モデルを作成する場合、Blockbenchは非常に便利です。無料で使え、Minecraft形式に直接エクスポートできるため、事実上の標準ツールとなっています。既存のバニラモデルを流用する場合は不要です。

Q. CurseForgeとModrinthどちらで公開すべきですか?

両方に公開するのがおすすめです。CurseForgeはユーザー数が多く、Modrinthは UIが洗練されていて成長中。両方に公開することで、より多くのユーザーにリーチできます。CI/CDで自動化すれば手間もかかりません。

Q. Modの収益化は可能ですか?

CurseForgeにはReward Programがあり、ダウンロード数に応じて収益を得られます。Modrinthも同様のプログラムを提供しています。ただし、一定のダウンロード数が必要で、大きな収益を得るには人気Modになる必要があります。

Q. AIが生成したコードのライセンスは?

Claude Codeが生成したコードはあなたのものとして自由に使用・公開できます。ただし、参考にした既存Modのコードがある場合は、そのModのライセンスを確認し、適切に対応してください。

8. まとめ

この記事のポイント

  • カスタムMob: Entity、Renderer、Modelの3つで構成。Blockbenchでモデル作成が効率的
  • ワールド生成: NeoForgeではデータパック形式(JSON)で定義。Biome Modifierで有効化
  • ツール・防具: TierとArmorMaterialを定義し、各アイテムクラスで使用
  • Mod公開: CurseForgeとModrinthの両方に公開がベスト。Gradle自動化も可能
  • Claude Code活用: コンテキスト保持、段階的実装、エラー共有がポイント

応用編では、より複雑なMod開発に挑戦しました。カスタムMobの作成やワールド生成は難易度が高いですが、Claude Codeを活用すれば効率的に開発を進められます。

完成したModをCurseForgeやModrinthに公開して、世界中のマインクラフターに届けましょう。

次のステップとして、GUIの実装ネットワーク通信他Modとの連携などに挑戦してみてください。AIと一緒に、あなただけのオリジナルModを進化させていきましょう。

関連記事

この記事に関連するおすすめ書籍

ChatGPT最強の仕事術

ビジネスでのAI活用を実践的に学ぶ

ChatGPTを業務で最大限活用するための具体的なテクニックとプロンプト例を豊富に収録した実践ガイド。

Amazonで詳細を見る

この一冊で全部わかる ChatGPT & Copilotの教科書

生成AIツールを使いこなす

ChatGPTとCopilotの基本から応用まで、ビジネスパーソン向けに分かりやすく解説した入門書。

Amazonで詳細を見る

※ 上記はAmazonアソシエイトリンクです