Minecraft BE でリソースパックをつくってみよう!

この記事で紹介したように、Minecraft BE 版(統合版)でもアドオン(Mod開発)ができるようになりました。

blog.takunology.jp

個人的に気になったので、アドオン開発をやってみたいと思います。参考リンクはこちらから。

docs.microsoft.com

1. ファイル構成

統合版は C:\Users\<ユーザ名>\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang というディレクトリにてリソースパックやスキンなどが保存されます。

f:id:takunology:20211017145408p:plain

今回はリソースパックのアドオンをつくるので、development_resource_packs ディレクトリ内にて作業を行います。

2. Visual Studio Code拡張機能

開発するにあたって、便利な拡張機能を入れておきます。

Bedrock Definitions 拡張機能は統合版のソースコード参照が行える機能です。

marketplace.visualstudio.com

Blockception's Minecraft Bedrock Development 拡張機能は統合版のソースコードを書くときのシンタックスハイライトと、補完機能をサポートしてくれます。

marketplace.visualstudio.com

3. マニフェストファイルの作成

こちらの手順を参考に作ります。

docs.microsoft.com

development_resource_packs ディレクトリ内に、適当な名前のディレクトリを作っておきます。

f:id:takunology:20211017151055p:plain

このディレクトリに移動し、manifest.json ファイルを作成します。これはマニフェストファイルといい、リソースパックに関する情報を定義します。ファイルの中には下記のように、リソースパックの名称や対応バージョン、説明などを書きます。

また、UUID (Universally Unique Identifier) の記入が必要なので、こちらのサイトから生成して、uuid 要素に書き込んでください。

www.uuidgenerator.net

{
    "format_version": 2,
    "header": {
      "description": "なんかすごいりそーすぱっく",
      "name": "TakunologyRP",
      "uuid":"",
      "version": [1, 0, 0],
      "min_engine_version": [1, 16, 0]
    },
    "modules": [
      {
        "description": "なんかすごいりそーすぱっく",
        "type": "resources",
        "uuid": "",
        "version": [1, 0, 0]
      }
    ]
}

記述できたら保存しましょう。

4. テクスチャの作成

土ブロックをオリジナルのテクスチャに変更してみます。

manifest.json と同じディレクトリに textures ディレクトリを作り、その中に blocks ディレクトリを作ります。

ペイントで16×16のドット絵を作ります。これを dirt.png という名前にして、blocks ディレクトリに保存します。(必ずPNG形式にしてください。)

f:id:takunology:20211017153354p:plain

5. 動かしてみる

できたらマイクラ(統合版)を起動して、リソースパックが認識しているか確かめてみましょう。

「設定」→ 「グローバルリソース」→「マイパック」から確認できます。

f:id:takunology:20211017155521p:plain

ワールド生成時に、「有効化」を行うとリソースパックが適用されて、土ブロックが先程描いたテクスチャに変更されます。

f:id:takunology:20211017155620p:plain

f:id:takunology:20211017155809p:plain

うわぁ...気持ち悪い土ブロックだぁw

Java版 (Forge) のMod開発よりも楽にできるので、だいぶマイクラMod開発のハードルが下がったかと思います。

エラーになってしまう場合

f:id:takunology:20211017153812p:plain

すでにバツ印になってしまっており、

f:id:takunology:20211017153703p:plain

「指定された UUID '/header/uuid' エレメントは、既にパックマニフェストに存在します。」というエラーが出ます。

これは UUID が重複しているためです。ヘッダに定義した uuidmodules 要素内の uuid が同じだとこのようなエラーが表示されて読み込まれません。必ず2つの UUID を生成して、それぞれ別の値を使用してください。

{
    "format_version": 2,
    "header": {
      "description": "なんかすごいりそーすぱっく",
      "name": "TakunologyRP",
      "uuid":"1つ目のUUID",
      "version": [1, 0, 0],
      "min_engine_version": [1, 16, 0]
    },
    "modules": [
      {
        "description": "なんかすごいりそーすぱっく",
        "type": "resources",
        "uuid": "2つ目のUUID(1つ目とは別にする)",
        "version": [1, 0, 0]
      }
    ]
}

補足

JSONの各要素について

Header 要素

  • header : リソースパックの名称、説明などの情報を記述する箇所
  • description : 説明文章(名称の下に表示されるので1~2行程度でまとめるのを推奨している)
  • name : リソースパックの名称(必須項目)
  • uuid : 他のリソースパックと区別するためのユニークID
  • version : リソースパックのバージョン(メジャー、マイナー、リビジョン)
  • min_engine_version : 利用できる Minecraft の最小バージョン

Modules 要素

  • modules : コンテンツの種類に関する情報を記述する箇所
  • description : モジュールに関する説明(現在はあまり意味は持たないらしい)
  • type : モジュールの種類 (resource, data など使い分ける)
  • uuid : モジュールのUUID (モジュールごとにユニークである必要がある)
  • version : 以前に導入されたことがあるモジュールを導入するためのバージョン(よくわからん)

イベントのお知らせ

2021年10月31日(日曜日)に、MS Tech Camp 1周年記念イベントを行います!

MS Tech Camp シリーズのイベントでは、Microsoft Azure や Github, Minecraft などを用いたハンズオンを行ってきました。今回はゲスト登壇や、MS Tech Camp でやってきた内容の総まとめライブコーディングなどを行う予定です。学生の方だけでなく社会人の方も、お気軽にご参加ください!

当日は Youtube Live での配信予定です。

mspjp.connpass.com