事前説明
こんにちは、さば2号です。
ScriptAPIを使った簡単なアドオンの作り方を解説していきます。
注意事項
・この記事は2024/03/19時点のものです。
・投稿者は素人です。間違えることがあります。
ScriptAPIって何?
JavaScriptで作られたアドオンです。
minecraft/server Module | Microsoft Learn
必要なもの
・Minecraft (統合版)
・テキストエディタ(プログラムを書くアプリ)
ios → LiquidLogic / GoCoEdit
Windows → Visual Studio Code
最悪メモ帳などテキストを書き換えられるものなら何でもOKです。
作り方①~⑤
①アドオンのフォルダを用意しよう
「com.mojang」の「development_behavior_packs」の中に、「sample」というフォルダを作ります。
「development_behavior..」フォルダ内にアドオンフォルダを作ると、入れ直す必要なく中身の書き換えが行えます。
com.mojang の場所
iOS → このiPhone内 > Minecraft > games > com.mojang
Windows → 「win + R」で開いたウィンドウに次を入力
%localappdata%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang
②必要なファイルとフォルダを作成しよう
先ほど作ったフォルダに必要なファイルを作成していきます。
iOSの場合、純正の「ファイル」アプリではテキストファイルを作成できません。
そのためLiquidLogicなどのテキストエディターで新規作成し、「このiPhone内」に保存しましょう。
③manifest.jsonを設定しよう
先ほど作ったmanifest.jsonに次のコードをコピペしてください。
{
"format_version": 2,
"header": {
"description": "ScriptAPIを使ったアドオンです",
"name": "サンプルアドオン",
"uuid": "3b8a5ff4-6ee8-4a80-8b5e-88b5ac9ed265",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 19, 60 ]
},
"modules": [
{
"description": "",
"type": "script",
"language": "javascript",
"uuid": "2082fcd2-a5a9-411a-abfb-400585f069cc",
"version": [ 1, 0, 0 ],
"entry": "scripts/main.js"
}
],
"dependencies": [
{
"module_name": "@minecraft/server",
"version": "1.11.0-beta"
},
{
"module_name": "@minecraft/server-ui",
"version": "1.2.0-beta"
}
]
}
・uuid
アドオンを識別しているものです。この値が違うと別のアドオンとして認識されます。
もし自作でアドオンで作るときは、次のようなサイトでuuidを生成して使ってください。
UUID生成|ランダムGUID生成 – 無料ツールサイト
・module_name, version
scriptAPIのバージョンを指定しているものです。現在(v1.20.70)は1.10.0-betaと1.2.0-betaが最新バージョンです。
大型アップデート毎にこの値が変更され、動かなくなるため気を付けましょう。
バージョン履歴
v1.20.70 > 1.10.0-beta , 1.2.0-beta
v1.20.80 > 1.11.0-beta , 1.2.0-beta
この時点でアドオンが生成されているか確認してみましょう。
④プログラムを書いてみよう
次はプログラム本体を書いていきます。
今回は「プレイヤーが攻撃したとき、メッセージを送信する」アドオンを作ります。
次のコードをmain.jsにコピペしてください。
// worldクラスをインポート
import { world } from "@minecraft/server"
// エンティティがダメージを与えたときに起動するイベント
world.afterEvents.entityHurt.subscribe(ev => {
// ダメージを与えたエンティティを定数「entity」に代入
const entity = ev.damageSource.damagingEntity
// もし「entity」の種族がプレイヤーなら
if (entity.typeId === "minecraft:player") {
// ダメージ量のメッセージを送信する
entity.sendMessage(ev.damage + "ダメージをあたえた!");
}
});
⑤完成!
ワールドに作ったアドオンを入れて動かしてみましょう。
【重要】実験のベータAPIを必ずオンにしましょう。
「〇ダメージをあたえた!」と出たら成功です。
さいごに
今回はScriptAPIを使ったアドオンを作ってきました。
さらに作ってみたいという方は次を参考にしてみてください。
公式リファレンス
minecraft/server Module | Microsoft Learn
ディスコードサーバー
Script API 開発初心者コミュニティ
参考にしたサイト
マイクラの泉
コメント