【統合版】ScriptAPIでアドオンを作ってみよう #1 ダメージメッセージ

スポンサーリンク

事前説明

こんにちは、さば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..」フォルダ内にアドオンフォルダを作ると、入れ直す必要なく中身の書き換えが行えます。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-19-210650-2.png

com.mojang の場所
iOS → このiPhone内 > Minecraft > games >  com.mojang
Windows → 「win + R」で開いたウィンドウに次を入力

%localappdata%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang

②必要なファイルとフォルダを作成しよう

先ほど作ったフォルダに必要なファイルを作成していきます。

iOSの場合、純正の「ファイル」アプリではテキストファイルを作成できません。
そのためLiquidLogicなどのテキストエディターで新規作成し、「このiPhone内」に保存しましょう。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-19-211009-1.png

③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

この時点でアドオンが生成されているか確認してみましょう。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-19-221348.png

④プログラムを書いてみよう

次はプログラム本体を書いていきます。

今回は「プレイヤーが攻撃したとき、メッセージを送信する」アドオンを作ります。

次のコードを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を必ずオンにしましょう。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-19-230206.png
%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-19-230358.png

「〇ダメージをあたえた!」と出たら成功です。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-19-230552.png

さいごに

今回はScriptAPIを使ったアドオンを作ってきました。
さらに作ってみたいという方は次を参考にしてみてください。

公式リファレンス
minecraft/server Module | Microsoft Learn

ディスコードサーバー
Script API 開発初心者コミュニティ

参考にしたサイト
マイクラの泉

備忘録ブログ
さば2号のgametest(scriptAPI)備忘録

※投稿記事に含まれるファイルやリンクにより発生した被害についてクラフターズコロニーは責任を取りません
投稿通報

コメント

コメント通報