導入
皆さんはMinecraftというゲームをご存じでしょうか。まぁあんな神ゲーをご存じないという方、そうそういないかと思います。
さて、この記事では、MinecraftBEのバージョンを1.19.40から1.19.50にバージョンアップしたときにGametestが動かなくなり、どうすれば動くようになるのか手こずったので、今後同じような事態に陥った人のために、解決までの過程を記していきたいと思います。
解決方法
結論としてはmanifest.jsonの"dependencies"の値のうち、"module_name"が"@minecraft/server"である要素の"version"を"1.0.0-beta"から"1.1.0-beta"に変更することで再び動作するようになります。
問題解決までの過程
以下、問題解決の最終的な方法だけでなく、その過程も知りたいという方のための部分です。その前にこの時の私の環境で問題の発生したビヘイビアパックのmanifest.jsonの中身を上げておきます。
{
"format_version": 2,
"header":
{
"name": "hoge",
"description" : "a",
"uuid": "uuid",
"version": [0,1,0],
"min_engine_version": [1,19,40]
},
"modules":
[
{
"description": "^^;",
"type": "script",
"language": "javascript",
"uuid": "uuid",
"version":[0,1,0],
"entry": "scripts/main.js"
}
],
"dependencies":
[
{
"module_name": "@minecraft/server",
"version": "1.0.0-beta"
},
{
"module_name": "@minecraft/server-ui",
"version": "1.0.0-beta"
}
]
}
さて、問題が発生したらすぐに 設定>>クリエイター>>コンテンツログの有効化&コンテンツGUIの有効化 二つのトグルを両方ONにしてどこに問題があったのか調べてみます。すると次のようなログが現れました。
[Scripting][error]-Plugin [forMovie] - module [forMovie - 1.0.0] requesting invalid module version [@minecraft/server - 1.0.0-beta].
Available versions:
@minecraft/server - 0.1.0
@minecraft/server - 1.0.0
@minecraft/server - 1.1.0-beta
[Scripting][error]-Plugin [forMovie] - version conflict for [@minecraft/server] - [forMovie - 1.0.0] requested [@minecraft/server - 1.0.0-beta] but [@minecraft/server-ui - 1.0.0-beta] requested [@minecraft/server - 1.1.0-beta]
このログを頼りにすれば、どこに問題があるのか、そしてどうすれば解決するのか簡単にわかります。英語が苦手な方、大丈夫です。DeepL翻訳等の翻訳サービスで日本語に翻訳すればいいのです。ログを翻訳すると
[スクリプト][エラー]-プラグイン [forMovie] - モジュール [forMovie - 1.0.0] が無効なモジュールバージョン [@minecraft/server - 1.0.0-beta] を要求しています。
利用可能なバージョン
minecraft/server - 0.1.0
Minecraft/server - 1.0.0
minecraft/server - 1.1.0-beta (英語)
[スクリプト][エラー]-プラグイン [forMovie] - [@minecraft/server] のバージョンの競合 - [forMovie - 1.0.0] は [@minecraft/server - 1.0.0-beta] を要求しましたが [@minecraft/server-ui - 1.0.0-beta] は [@minecraft/server - 1.1.0-beta] を要求しています。
はい、二つ目のログがすべてを語っていますね。「@minecraft/server-uiの1.0.0-betaを使いたかったら@minecraft/serverは1.1.0-betaを使ってね!」と言っています。はい、そういうことです。
公式のアップデート情報を読むのも有効です。リンク先のマップ工場も@minecraft/server API を引き続き使用する場合は、manifest.json 参照を 1.1.0-beta に更新する必要があります
注意
manifest.jsonの変更は、reloadコマンドを使っても更新されないようです。"version"を適切に変更してもエラーを吐かれるという方はワールドに一度入りなおしてみてください。
最後に
minecraftのgametestは、今現在も開発中の機能ということもあり、アップデートによって仕様が少しずつ変わってきます。1.19.40へのアップデートの時には、かなり破壊的な変更がなされたりもしたようです。gametestで遊ぶ際は、保守性の高い設計をすることを意識したほうがよさそうです。
それでは、この記事が一人でも多くのgametestを勉強する人の助けになりますように。