【1.20.1対応】KubeJSブロック制作・応用編!AIの「限界」を突破して向き・回転を制御する

KubeJS

目次

導入

【重要】当サイトの動作確認環境

  1. AIの「死角」を補って完璧なブロックを作ろう!
  1. コピペで解決!AIの限界を補う「正解スクリプト」
  1. 【超重要】JSONファイルの手作業(ここからがプロの領域!)
  1. 必要な画像(テクスチャ)を用意しよう!

まとめ:続く「自然生成編」に向けて!

導入

前回の記事では、AIを活用してハーフブロックや階段などをサクッと追加する方法を解説しました

しかし、オリジナルのブロックを作り込んでいると、必ずこんな壁にぶつかります。

「かまどのような、プレイヤーの方を向く(正面がある)ブロックを作りたい!」

「原木のように、設置する面によって横向きにも置けるブロックを作りたい!」

「今回もAIにプロンプトを投げて一発解決!」……と言いたいところなのですが、実はこれ、AIに「KubeJSのスクリプトを書いて」とお願いするだけでは絶対に実現できません。AIはもっともらしいコードを出力しますが、そのまま使うとマイクラがクラッシュしてしまいます。

そこで今回の【応用編】では、AIの限界(ハルシネーション)を突破し、KubeJSのスクリプトと「JSONファイル(Blockstates)」の手作業を組み合わせて、ブロックの向きを完全にコントロールする上級テクニックを解説します。

少しだけ地味な手作業が増えますが、コピペで動く完全なテンプレートを用意しているので安心してください!

【重要】当サイトの動作確認環境

  • Minecraftバージョン: 1.20.1
  • 前提Mod: Forge
  • 使用Mod: KubeJS
  • 環境: ConoHa VPS

1. AIの「死角」を補ってブロックを作ろう!

実は、AI(ChatGPTやGeminiなど)に「原木のように横置きできる柱や、かまどを作って」とお願いすると、多くの場合、以下のようなコードを出力してきます。

  • event.create('maple_log', 'pillar') // タイプをpillarにする
  • event.create('custom_furnace').horizontalBlock() // 水平方向の設定にする

一見正しそうに見えますが、これをそのまま読み込ませると……

このように、「そんなタイプは存在しません」「そんな機能はありません」というエラーでマイクラがクラッシュしてしまいます。

実は最新のKubeJSでは、原木(柱)のタイプ指定や、かまどの向きを一発で指定するショートカット機能は標準で用意されていません。

AIはとても優秀ですが、マイクラの最新の内部仕様までは完璧に把握しきれていないことがあります。本当の意味で「思い通りのMod環境」を作るためには、AIに全部任せっきりにするのではなく、スクリプトで内部データ(軸や方角)を指定した上で、手作業でJSONファイルを作って少しだけ補ってあげることが重要になります。

今回は、

  1. 「オリジナル炉(かまど)」(プレイヤーの方を向く)
  2. 「モミジの原木」(横置きできる)
    以上2つを作りながら、その仕組みをマスターしていきましょう!

💡 まだ「モミジの木」を作っていない方へ! 本記事は応用編となります。「そもそもモミジの原木や葉っぱを追加する方法が分からない!」という方は、まずは以下の【基本編】の記事でベースとなるブロックを追加してから、こちらの応用編に挑戦してみてくださいね👇

【1.20.1対応】コピペで動く!AIでKubeJSスクリプトを自動生成(ハーフ・階段・モミジの木追加編)
導入前回の「オリジナルブロック追加編」では、ゲーム内に自分だけの鉱石やブロックを登録する方法を解説しました。しかし、「建築で使いやすいハーフブロックや階段も作りたい!」「原木のように色々な面があるブロックを作りたい!」と思った方も多いのでは…

2. スクリプトの記述

まずはブロックを登録するためのスクリプトを書きます。

kubejs/startup_scripts/ フォルダ内にあるブロック追加用の .js ファイルに、以下のコードをコピペしてください。

▼コピペするコード▼

JavaScript

// マイクラ内部の「ブロックの状態(プロパティ)」を扱うための準備
const BlockStateProperties = Java.loadClass('net.minecraft.world.level.block.state.properties.BlockStateProperties');

StartupEvents.registry('block', event => {

    // 1. オリジナル炉(正面があるブロック)
    event.create('custom_furnace')
         .displayName('オリジナル炉')
         .hardness(3.0)
         .property(BlockStateProperties.HORIZONTAL_FACING) // ブロックに「東西南北」の状態を持たせる
         .placementState(state => state.set(BlockStateProperties.HORIZONTAL_FACING, state.horizontalDirection.opposite)); // 置いた時にプレイヤーの正面を向かせる

    // 2. モミジの原木(横置きできる柱ブロック)
    event.create('maple_log')
         .displayName('モミジの原木')
         .hardness(2.0)
         .property(BlockStateProperties.AXIS) // ブロックに「X/Y/Z軸」の状態を持たせる
         .placementState(state => state.set(BlockStateProperties.AXIS, state.clickedFace.axis)); // クリックした面に合わせて軸を決める
});

💡 小技:テクスチャ指定は絶対に書かない!

ここで「あれ? .texture() を書かなくていいの?」と思った方は非常に鋭いです!

実はこの後のステップで**「手作業で作るJSONファイル」の中で直接画像を指定する**ため、スクリプト側ではあえて書きません。ここに書いてしまうと、KubeJSが勝手に普通の四角いブロックとしてデータを自動生成してしまい、後で作る設定とケンカしてバグの原因になります。

3. 【超重要】JSONファイルの手作業

ここからが地味ですが、Mod開発において一番重要な作業です!

ブロックが横を向いた時に、画像や形も一緒に回転してくれるように手動で設定します。

今回は「オリジナル炉」と「モミジの原木」の2つ分のファイルを作ります。

① Blockstates(ブロックの回転状態)ファイルを作る

自分のPC側で kubejs/assets/kubejs/blockstates というフォルダを開いてください。(※フォルダが無い場合は新しく作成します)

⚠️ 初心者の方へ注意!「さっきと同じ名前のファイル?」 ここで、「あれ?さっきも同じ名前のファイルを作らなかった?上書きされちゃうの?」と不安になった方、非常に鋭いです!
実はマイクラの仕様上、「回転状態(blockstates)」のファイルと、「見た目(models)」のファイルは、別々のフォルダに【全く同じ名前】で作るという決まりになっています。 場所(フォルダ)が違うため上書きされることはなく、それぞれ別の役割を持った必須ファイルですので、安心して同じ名前で作成してくださいね!
その中に custom_furnace.jsonmaple_log.json という2つのファイルを作り、以下のコードをコピペして保存します。

▼ custom_furnace.json(オリジナル炉用)▼

JSON

{
  "variants": {
    "facing=north": { "model": "kubejs:block/custom_furnace" },
    "facing=east":  { "model": "kubejs:block/custom_furnace", "y": 90 },
    "facing=south": { "model": "kubejs:block/custom_furnace", "y": 180 },
    "facing=west":  { "model": "kubejs:block/custom_furnace", "y": 270 }
  }
}

▼ maple_log.json(モミジの原木用)▼

JSON

{
  "variants": {
    "axis=x": { "model": "kubejs:block/maple_log", "x": 90, "y": 90 },
    "axis=y": { "model": "kubejs:block/maple_log" },
    "axis=z": { "model": "kubejs:block/maple_log", "x": 90 }
  }
}

💡解説:設置された方角や軸に合わせて、モデルを90度ずつ回転させるという指示を書いています。

② Models(ブロックの形と画像)ファイルを作る

次は kubejs/assets/kubejs/models/block というフォルダを開きます。

ここにも同じく custom_furnace.jsonmaple_log.json を作り、以下のコードをコピペして保存します。

▼ custom_furnace.json(オリジナル炉用)▼

JSON

{
  "parent": "minecraft:block/orientable",
  "textures": {
    "top": "kubejs:block/custom_furnace_top",
    "bottom": "kubejs:block/custom_furnace_top",
    "side": "kubejs:block/custom_furnace_side",
    "front": "kubejs:block/custom_furnace_front"
  }
}

▼ maple_log.json(モミジの原木用)▼

JSON

{
  "parent": "minecraft:block/cube_column",
  "textures": {
    "end": "kubejs:block/maple_log_top",
    "side": "kubejs:block/maple_log"
  }
}

💡解説:バニラのかまど(orientable)や原木(cube_column)と同じ形を親として使い、各面に自作の画像を割り当てています。

4. 必要な画像(テクスチャ)を用意しよう!

最後に、指定した画像を所定の場所に置きます。

kubejs/assets/kubejs/textures/block フォルダに以下の画像を用意しましょう。

  1. custom_furnace_front.png (オリジナル炉の正面用)
  2. custom_furnace_side.png (オリジナル炉の側面用)
  3. custom_furnace_top.png (オリジナル炉の上面・底面用)
  4. maple_log.png (モミジ原木の側面用 ※前回作成済み)
  5. maple_log_top.png (モミジ原木の断面用 ※前回作成済み)

すべて配置し終わったら、一度マイクラを完全に再起動(クライアントとサーバーの両方を再起動)してください。

⚠️ 注意! ブロックを追加する startup_scripts を書き換えた場合は、ゲーム内の /reload コマンドでは反映されません。必ずマイクラ自体を再起動してください。 (※ちなみに、JSONファイルや画像の差し替えだけであれば、ゲーム内で F3 + T キーを同時押しすると、再起動せずにリソースパックだけを再読み込みできます!)

かまどのように正面を向くブロックと、壁にくっつけるとちゃんと横を向く「本物のモミジの原木」が完成しているはずです!

まとめ:続く「自然生成編」に向けて!

お疲れ様でした!今回は、AIの限界を補い「スクリプトとJSONを組み合わせてブロックの向きを完全制御する」という、かなり本格的な技術にステップアップしました。

AIに丸投げするだけでは絶対にたどり着けない、KubeJSの深い部分(リソースパックの仕様)をコントロールするこの知識は、今後MOD環境を構築していく上で一生モノの武器になります。

そして次回の上級編②では、今回学んだ「データ(JSONファイル)を作る」という知識をフル活用し、「自作鉱石を洞窟に追加する」「フィールドにモミジの木を生やす」といった、データパックを使った【自然生成】の魔改造に挑戦します

ここから一気に「自分だけの世界」が出来上がっていくので、ぜひ楽しみにお待ちください!

コメント

タイトルとURLをコピーしました