マイクラのスクリプト作成方法
マイクラで「スクリプト」と呼ばれるものは、実は1種類ではありません。 遊び方(バニラ/MODパック/プラグインサーバー/統合版)によって使う仕組みがまったく違います。 このページでは代表的な4種類の違いと、それぞれの最初の1本の書き方をまとめます。
1. まずどれを選ぶか
| 種類 | 向いている環境 | 書く言語 | できること |
|---|---|---|---|
| データパック | Java版(MODなしでOK) | コマンド(.mcfunction)+JSON | レシピ・進捗・独自の仕組み。配布しやすい |
| KubeJS | MODパック(NeoForge / Fabric) | JavaScript | レシピ変更、独自アイテム・ブロック追加、イベント処理 |
| Skript | Paper / Spigot サーバー | 英語に近い独自の文法 | 独自コマンド、参加時の処理、簡単なミニゲーム |
| Script API | 統合版(Bedrock) | JavaScript | アドオンの動き、UI、イベント処理 |
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
pack.mcmeta… パックの名前と対応バージョン(pack_formatなど)を書きます。数値はバージョンごとに変わるので、Minecraft Wiki の Pack format で確認してくださいload.json… ワールド読み込み時(/reload時も)に動かす function を指定tick.json… 毎tick(1秒に20回)動かす function を指定
例: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 を使っています。
始め方
- MODパック(または自分のインスタンス)に KubeJS と、前提MOD(Rhino など、配布ページで指定されたもの)を入れる
- 一度ゲームを起動すると、インスタンスのフォルダに
kubejs/フォルダが作られる - 用途に合わせて、次のフォルダに
.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)に置きます。
4. Skript(プラグインサーバー向け)
Skript は Paper / Spigot サーバー用のプラグインで、英語の文章に近い書き方でサーバーに機能を足せます。 Java でプラグインを作るより手軽で、サーバーを止めずに書き換えられるのが強みです。
始め方
- サーバーの
plugins/に Skript の jar を入れて、サーバーを起動する plugins/Skript/scripts/に.skファイルを作る- ゲーム内(OP)で
/sk reload ファイル名を実行して反映
例:plugins/Skript/scripts/hello.sk
on join:
send "ようこそ、%player%さん!" to player
command /hello:
trigger:
send "こんにちは!" to player
give player 1 bread
処理が重くなってきたり、細かい制御が必要になったりしたら、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("ようこそ!");
}
});
uuidはパックごとに別の値が必要です(UUID生成サイトなどで作成)@minecraft/serverの対応バージョンは、ゲームのバージョンによって変わります。Microsoft の公式ドキュメントで確認してください- ワールドの設定で、そのビヘイビアーパックを有効にして使います
6. つまずきやすい点
| 症状 | よくある原因 |
|---|---|
| 何も起きない(エラーも出ない) | フォルダ名・ファイル名の間違い(データパックの function と functions など) |
| 書き換えても変わらない | 反映の方法が違う(KubeJS の startup は再起動が必要、Skript は /sk reload) |
| ネットのサンプルが動かない | バージョン違い。書かれた時期と対象バージョンを必ず確認 |
| 日本語が文字化けする | ファイルの文字コードを UTF-8 で保存していない |
| サーバーが重くなった | 毎tick動く処理(tick.json、every tick など)の書きすぎ |
7. 次のステップ
- コマンドで仕組みを作りたい → コマンド作成方法
- アイテムや機能を本格的に追加したい → MOD作成方法
- 見た目を自分好みにしたい → スキン作成方法
- コマンドの種類を知りたい → マイクラコマンド一覧