mcpField
M
minecraft-world-generation

minecraft-world-generation

github.com/jahrome907開発192154 回インストール2 週間前に更新
リポジトリ

minecraft-world-generation について

Minecraft の Mod やデータパック開発者向けに、バイオーム、ディメンション、フィーチャー、構造物のワールド生成を扱うスキルです。バージョンやローダーに応じた実装方法と、JSON および参照関係の検証手順を案内します。

主な機能

  1. 01ワールド生成データと登録の案内
  2. 02バージョン別スキーマの選択
  3. 03NeoForge と Fabric の注入方法
  4. 04JSON と参照関係の検証
  5. 05ゲーム内テスト手順

活用シーン

  1. 01バイオームやディメンションの追加・調整
  2. 02既存バイオームへのフィーチャー追加
  3. 03構造物とテンプレートプール参照の構築
  4. 04ワールド生成 JSON の参照エラー調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jahrome907/minecraft-agent-skills --skill minecraft-world-generation

インストール後、Claude Code で/minecraft-world-generationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
legacy-1.21-worldgen-json.md
scripts/
jq-shim.mjs
validate-worldgen-json.sh

詳細

Minecraft ワールド生成

バイオーム、ディメンション、フィーチャー、構造のデータとその登録を扱う場合は、このスキルを使用します。ワールド生成以外のデータには minecraft-datapack を、ワールド生成以外のゲームプレイコードには minecraft-modding を使用してください。

振り分けの境界

  • 使用する場合:ワールド生成データ、登録、またはインジェクションを変更するタスク。
  • 使用しない場合:ワールド生成以外のデータパック作業(minecraft-datapack)。
  • 使用しない場合:ワールド生成以外の MOD システム(minecraft-modding)。

提供方法を選択する

方法最適な用途プラットフォーム
データパック JSONパックが提供するデータを変更するVanilla、任意のサーバー
Mod + Datagen新しいバイオーム/ディメンションをコードで登録するNeoForge / Fabric
バイオームモディファイア(NeoForge)既存のバイオームにフィーチャー/スポーンを追加するNeoForge
BiomeModification API(Fabric)既存のバイオームにフィーチャー/スポーンを追加するFabric

ワールド生成レジストリはデータパックレジストリです。ファイルはワールドの読み込み時に読み込まれ、レジストリパスによってデータパスが決まります。MOD 固有のレジストリパスを選ぶ前に、NeoForge レジストリガイドをお読みください。

バージョンの境界

新規作業には Minecraft 26.x を使用してください。Java 25 を使用し、各 JSON スキーマは対象バージョンのバニラデータまたは生成された出力を基にしてください。JSON として解析できるというだけで、1.21 の形式を 26.x のパックにコピーしないでください。

既存の 1.21.x プロジェクトは、アップグレードがタスクに明示的に含まれていない限り、Java 21 と対応するスキーマを維持してください。例はプロジェクトのバージョンに合わせてください。

26.1 移行ガイドでは、minecraft:random_patch と minecraft:no_bonemeal_flower が削除されています。ランダムパッチのパターンは、個別の minecraft:simple_block 設定済みフィーチャーと、回数、ランダムオフセット、ブロック述語フィルタリングのための配置に置き換えられます。コードまたはデータを移行する前に、該当するガイドのセクションを確認してください。

プロジェクトがそのバージョンを対象とする場合に限り、レガシー 1.21 JSON パターンをお読みください。これらの例は 26.x のリリース成果物ではありません。


データ配置と参照グラフ

data/<namespace>/
├── worldgen/
│   ├── biome/
│   │   └── my_biome.json
│   ├── configured_feature/
│   │   └── my_ore.json
│   ├── placed_feature/
│   │   └── my_ore_placed.json
│   ├── noise_settings/
│   │   └── my_dimension_noise.json
│   ├── structure/
│   │   └── my_structure.json
│   ├── structure_set/
│   │   └── my_structures.json
│   ├── processor_list/
│   │   └── my_processors.json
│   ├── template_pool/
│   │   └── my_pool.json
│   └── carver/
│       └── my_carver.json
├── dimension/
│   └── my_dimension.json
├── dimension_type/
│   └── my_type.json
├── tags/
│   └── worldgen/
│       └── biome/
│           └── is_forest.json
└── neoforge/
    └── biome_modifier/      (NeoForge mod only)
        └── add_ores.json

グラフは末端から上に向かって構築し、レビューしてください。

  1. 設定済みフィーチャーを定義し、次に配置済みフィーチャーを定義します。
  2. バイオームまたはバイオームモディファイアから、意図した装飾ステップで配置済みフィーチャーを参照します。
  3. 構造を定義し、次に構造セットを定義します。ジグソー構造には、テンプレートプール、プロセッサーリスト、構造テンプレートも必要です。
  4. ディメンションタイプとノイズ設定を定義してから、それらを参照するディメンションを定義します。

名前空間をまたぐ場合は、完全修飾識別子を使用してください。外部の minecraft: または依存関係への参照は、その依存関係がレジストリエントリを提供する場合に有効です。静的チェックを通すためだけにローカルコピーを作成しないでください。同じパックにその外部名前空間とレジストリディレクトリが含まれている場合は、ローカルとして扱い、対象が存在することを確認してください。


バイオームとディメンション

26.x のバイオームおよびディメンションデータには、スキーマの参照元として対象バージョンのバニラデータまたは Datagen の出力を使用してください。古い effects フィールドやディメンションタイプのフィールドでは、新しい環境動作を表現できません。11 個の装飾ステップは引き続き配置済みフィーチャーを分類します。意味的に適切なステップを選び、鉱石の配置には underground_ores を使用してください。

バージョンを明記した 1.21.5 のバイオームおよびディメンションの例は、レガシー 1.21 JSON パターンにあります。

26.x のフィーチャーパターン

単純なランダムパッチの 26.1 での置き換えについては、移行ガイドに simple_block 設定済みフィーチャーと、回数、ランダムオフセット、ブロック述語フィルターを含む配置済みフィーチャーが示されています。値とブロック状態は、対象リリースの生成データに合わせて調整してください。

data/<namespace>/worldgen/configured_feature/my_plant.json の場合:

{
  "type": "minecraft:simple_block",
  "config": {
    "to_place": {
      "type": "minecraft:simple_state_provider",
      "state": { "Name": "minecraft:sweet_berry_bush", "Properties": { "age": "3" } }
    }
  }
}

data/<namespace>/worldgen/placed_feature/my_plant.json の場合:

{
  "feature": "<namespace>:my_plant",
  "placement": [
    { "type": "minecraft:count", "count": 96 },
    {
      "type": "minecraft:random_offset",
      "xz_spread": { "type": "minecraft:trapezoid", "min": -7, "max": 7, "plateau": 0 },
      "y_spread": { "type": "minecraft:trapezoid", "min": -3, "max": 3, "plateau": 0 }
    },
    {
      "type": "minecraft:block_predicate_filter",
      "predicate": {
        "type": "minecraft:all_of",
        "predicates": [
          { "type": "minecraft:matching_block_tag", "tag": "minecraft:air" },
          { "type": "minecraft:matching_blocks", "blocks": "minecraft:grass_block", "offset": [0, -1, 0] }
        ]
      }
    }
  ]
}

NeoForge のバイオームモディファイアー

バイオームモディファイアーは data/<modid>/neoforge/biome_modifier/<path>.json から読み込まれます。バイオーム ID またはタグを対象にし、配置済みフィーチャーの追加や削除などを行えます。現在の バイオームモディファイアーガイド では、スキーマ、装飾ステップ、データ生成について説明しています。

neoforge:add_features の場合、features には配置済みフィーチャーの ID、リスト、または タグを指定できます。バニラの配置済みフィーチャーはバイオーム JSON から参照するか、 モディファイアーで追加できますが、フィーチャー順序の循環によってワールドの読み込みが クラッシュする可能性があるため、NeoForge は両方を行わないよう注意を促しています。 バニラのフィーチャーを注入するとそのリスクが生じる場合は、mod の名前空間にコピーを 作成することを推奨します。

オプションの依存関係にあるバイオームを対象にする場合は、required: false を指定した バイオームタグエントリーに対象を設定し、そのタグをモディファイアーで使用します。 これにより、依存関係が存在しない場合でもパックを読み込めます。


構造物とディメンション

現在のリリースでは、構造物、テンプレートプール、ディメンション、ディメンションタイプの JSON は、そのリリースのバニラデータまたはデータ生成の出力を基に作成してください。 テストワールドを起動する前に、参照関係を確認してください。

  • structure_set は structure を参照します。
  • ジグソーの start_pool は template_pool を参照します。各シングルプール要素は、その構造物テンプレートとプロセッサーリストを参照します。
  • dimension.type は dimension_type を参照します。ノイズジェネレーターの文字列 settings は worldgen/noise_settings を参照します。

Fabric の登録や mod のデータ生成では、1.21 のコードを 26.x のプロジェクトにコピーするのではなく、 正確なローダーと API のバージョンに対応するドキュメントを使用してください。

1.21 の構造物とディメンションに関する詳しい例は、 1.21 の旧式 JSON パターンにあります。


開発ワークフロー

  1. data/<namespace>/worldgen/(または同等の mod リソースパス)にワールド生成用 JSON ファイルを作成または編集します。
  2. 読み込む前に、同梱のバリデーターを実行して JSON と相互参照のエラーを検出します。
    ./scripts/validate-worldgen-json.sh --root /path/to/datapack-or-mod-resources
    # Strict mode treats warnings as failures:
    ./scripts/validate-worldgen-json.sh --root /path/to/datapack-or-mod-resources --strict
    
  3. 報告されたエラーを修正し、エラーがなくなるまで再検証します。バリデーターは次を確認します。
    • worldgen/** および neoforge/biome_modifier/** の JSON の妥当性
    • placed_feature -> configured_feature の相互参照の整合性
    • structure_set -> structure と、バイオーム/biome_modifier のフィーチャー対象の相互参照の整合性
    • jigsaw structure -> start_pool および template_pool -> structure template / processor_list の相互参照の整合性
  4. ゲーム内テストの前に、バイオームとディメンションタイプの JSON を、正確な対象バージョンのバニラのレジストリ構造と照合します。このヘルパーは Mojang の codec を実行しません。JSON が有効でローカル参照に問題がなくても、carvers、effects、ディメンション設定などのフィールドがそのリリースのスキーマに合っているとは限りません。
  5. ゲーム内でバイオームと構造物をテストします。
    /locate structure <namespace>:my_structure
    /locate biome <namespace>:my_biome
    /place feature <namespace>:my_ore
    
    place feature には、配置済みフィーチャーのラッパーではなく、設定済みフィーチャーの ID を指定します。 Mojang の1.19 リリースノートにある place コマンドのリファレンスを参照してください。
  6. ディメンションのテストには /execute in を使用します(ディメンションはワールドの読み込み時に存在している必要があり、/reload では追加されません)。
    execute in <namespace>:my_dimension run tp @s 0 100 0
    
  7. latest.log でワールド生成エラー(バイオーム参照の欠落、ノイズ設定の形式不正など)を確認します。
  8. 注意:/reload でデータパックの JSON は再読み込みされますが、生成済みのチャンクは再生成されません。新しいワールド、または新たに生成されたチャンクでワールド生成をテストしてください。既存のテストワールドを使う場合は、使い捨てのコピーと、目的に合わせたチャンクのリセット/再生成手順を使用してください。/fill はブロックを置き換えるだけで、ワールド生成の代わりにはなりません。

参考資料

コメント