← マイクラMODメモ トップ

マイクラのスクリプト作成方法

最終更新: 2026-09-26 / 対象: Java版・統合版(バージョンにより細部が変わります)

マイクラで「スクリプト」と呼ばれるものは、実は1種類ではありません。 遊び方(バニラ/MODパック/プラグインサーバー/統合版)によって使う仕組みがまったく違います。 このページでは代表的な4種類の違いと、それぞれの最初の1本の書き方をまとめます。

1. まずどれを選ぶか

種類向いている環境書く言語できること
データパックJava版(MODなしでOK)コマンド(.mcfunction)+JSONレシピ・進捗・独自の仕組み。配布しやすい
KubeJSMODパック(NeoForge / Fabric)JavaScriptレシピ変更、独自アイテム・ブロック追加、イベント処理
SkriptPaper / Spigot サーバー英語に近い独自の文法独自コマンド、参加時の処理、簡単なミニゲーム
Script API統合版(Bedrock)JavaScriptアドオンの動き、UI、イベント処理
迷ったら、「自分が遊んでいる環境」で決めるのが一番です。 MODパックで遊んでいるなら KubeJS、友達と Paper サーバーを立てているなら Skript、 MODなしのJava版ならデータパック、スマホやSwitchと遊ぶなら統合版の Script API です。

2. データパック(バニラのJava版)

厳密にはスクリプト言語ではありませんが、コマンドを並べたファイル(function)を自動で動かせるので、 Java版で「スクリプト的なこと」をするならまずここからです。MODを入れなくても動き、ワールドごと配布できます。

最小構成

ワールドフォルダ/datapacks/my_pack/
├─ pack.mcmeta
└─ data/
   ├─ my_pack/function/
   │   ├─ load.mcfunction
   │   └─ tick.mcfunction
   └─ minecraft/tags/function/
       ├─ load.json
       └─ tick.json

例:data/minecraft/tags/function/load.json

{ "values": ["my_pack:load"] }

例:data/my_pack/function/load.mcfunction

tellraw @a {"text":"データパックを読み込みました","color":"green"}
scoreboard objectives add jumps minecraft.custom:minecraft.jump

保存したら、ゲーム内で /reload を実行すると反映されます。 コマンドの作り方をもっと詳しく知りたい場合は コマンド作成方法 を参照してください。

昔の解説記事では、フォルダ名が functions(複数形)になっていることがあります。 1.21 以降は function(単数形)です。フォルダ名が違うと、エラーも出ずに何も起きないので注意してください。

3. KubeJS(MODパック向け)

KubeJS は、JavaScript でMODパックをカスタマイズできるMODです。 「このMODのアイテムのレシピを変えたい」「パック専用の素材アイテムを追加したい」といった、MODパック作りの定番作業に使われます。 CurseForge などで配布されている大型MODパックの多くも、裏で KubeJS を使っています。

始め方

  1. MODパック(または自分のインスタンス)に KubeJS と、前提MOD(Rhino など、配布ページで指定されたもの)を入れる
  2. 一度ゲームを起動すると、インスタンスのフォルダに kubejs/ フォルダが作られる
  3. 用途に合わせて、次のフォルダに .js ファイルを置く
フォルダ用途反映方法
kubejs/server_scripts/レシピ、ルートテーブル、タグ、サーバー側のイベント/reload
kubejs/startup_scripts/アイテム・ブロックの追加(登録)ゲームの再起動が必要
kubejs/client_scripts/ツールチップ、JEI/EMI の表示など見た目F3+T など

例:レシピを追加・削除する(kubejs/server_scripts/recipes.js)

ServerEvents.recipes(event => {
  // 土9個でダイヤモンド(テスト用)
  event.shaped('minecraft:diamond', [
    'AAA',
    'AAA',
    'AAA'
  ], {
    A: 'minecraft:dirt'
  })

  // 棒のレシピをすべて消す
  event.remove({ output: 'minecraft:stick' })
})

例:独自アイテムを追加する(kubejs/startup_scripts/items.js)

StartupEvents.registry('item', event => {
  event.create('ruby')   // kubejs:ruby というアイテムができる
})

名前は kubejs/assets/kubejs/lang/ja_jp.json に {"item.kubejs.ruby": "ルビー"} のように書き、 テクスチャは kubejs/assets/kubejs/textures/item/ruby.png(16×16 の PNG)に置きます。

KubeJS は Minecraft のバージョンごとに書き方が少しずつ変わります(特にメジャーアップデートの前後)。 ネットの古いサンプルが動かないときは、使っている KubeJS のバージョンの公式ドキュメントを確認してください。

4. Skript(プラグインサーバー向け)

Skript は Paper / Spigot サーバー用のプラグインで、英語の文章に近い書き方でサーバーに機能を足せます。 Java でプラグインを作るより手軽で、サーバーを止めずに書き換えられるのが強みです。

始め方

  1. サーバーの plugins/ に Skript の jar を入れて、サーバーを起動する
  2. plugins/Skript/scripts/ に .sk ファイルを作る
  3. ゲーム内(OP)で /sk reload ファイル名 を実行して反映

例:plugins/Skript/scripts/hello.sk

on join:
    send "ようこそ、%player%さん!" to player

command /hello:
    trigger:
        send "こんにちは!" to player
        give player 1 bread
Skript は字下げ(インデント)が文法の一部です。スペースとタブを混ぜるとエラーになります。 エディタの設定で「タブをスペース4つに変換」にしておくと安全です。

処理が重くなってきたり、細かい制御が必要になったりしたら、Java でのプラグイン開発に進むのが次の段階です (MOD作成方法 の「プラグインとの違い」も参照)。

5. 統合版の Script API

統合版(Bedrock)では、ビヘイビアーパックの中に JavaScript を入れて、ゲームの動きを変えられます。 Java版のデータパックと違い、イベント(プレイヤーの参加、ブロックの破壊など)に反応するプログラムを書けます。

最小構成

my_behavior_pack/
├─ manifest.json
└─ scripts/
    └─ main.js

manifest.json の modules に、スクリプトの入口を書きます(抜粋)。

"modules": [
  {
    "type": "script",
    "language": "javascript",
    "uuid": "(自分で生成したUUID)",
    "entry": "scripts/main.js",
    "version": [1, 0, 0]
  }
],
"dependencies": [
  { "module_name": "@minecraft/server", "version": "(対応するバージョン)" }
]

例:scripts/main.js

import { world } from "@minecraft/server";

world.afterEvents.playerSpawn.subscribe((event) => {
  if (event.initialSpawn) {
    event.player.sendMessage("ようこそ!");
  }
});

6. つまずきやすい点

症状よくある原因
何も起きない(エラーも出ない)フォルダ名・ファイル名の間違い(データパックの function と functions など)
書き換えても変わらない反映の方法が違う(KubeJS の startup は再起動が必要、Skript は /sk reload)
ネットのサンプルが動かないバージョン違い。書かれた時期と対象バージョンを必ず確認
日本語が文字化けするファイルの文字コードを UTF-8 で保存していない
サーバーが重くなった毎tick動く処理(tick.json、every tick など)の書きすぎ
どの種類でも、エディタは Visual Studio Code がおすすめです。 データパック・KubeJS・Skript・統合版アドオンのどれにも、色分けや入力補完をしてくれる拡張機能があります。

7. 次のステップ

トップ · 自作データ置き場 · 更新履歴 · お問い合わせ