環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

【Minecraftのアドオンを作る】#1 はじめてのアドオン リソースパック

【Minecraftのアドオンを作る】#1 はじめてのアドオン リソースパック

はじめに

マインクラフトのアドオンとは?

マインクラフトの世界を改造するためのプログラムをユーザー各々で利用することが出来る機能があります。Java版ではMODと呼ばれ、統合版ではアドオンと呼ばれているようです。(テックマインブログさん)

今回のターゲットは?

この企画は複数回のシリーズ記事になる予定です。このシリーズの目標としては、わたくし個人が持っているAlmaLinux上に立てているリモートサーバー(統合版)にアドオンを適用させること。マイクラ内にオリジナルルールの世界(ゲーム等?)を作成することを目指します。ちょっとまだ統合版で出来る事の範囲が分かってないので、ふわっとした目標ではありますが、お付き合いください。

さて、何から始めたら良いのか、正直さっぱりです。色々と検索したりしてみましたが、公式のドキュメントから学んでいきたいと思います。Minecraft: Bedrock Edition クリエイター ドキュメント

VSCodeのインストールと拡張機能のインストール

わたしの場合はVSCodeはインストール済みなので、拡張機能「Bedrock Definitions」「Blockception’s Minecraft Bedrock Development」をインストールしました。VSCodeを開き、「拡張機能」タブを選択し、それぞれの拡張機能名で検索して「インストール」ボタンを押すのみです。

参考 : https://learn.microsoft.com/ja-jp/minecraft/creator/documents/gettingstarted

あとは、他のサイトで紹介されていた、拡張機能「UUID Generator」も導入しました。

はじめてのアドオン

今回はチュートリアルに習い、リソース パックを作成してみます。

参考 : https://learn.microsoft.com/ja-jp/minecraft/creator/documents/resourcepack

リソースパックの作成

ディレクトリ作成

リソースパックのディレクトリを作成します。今回は「my_dirt_block」という名前としました。さらに、「my_dirt_block」の中に、「textures」ディレクトリを作成し、さらにその中に「blocks」ディレkつ折りを作成します。

manifest.json作成

「my_dirt_block」直下に、manifest.jsonという名前のファイルを作成します。

{
 "format_version": 2,
 "header": {
   "description": "My dirt resource pack Add-On!",
   "name": "My Resource Pack",
   "uuid":"",
   "version": [1, 0, 0],
   "min_engine_version": [1, 16, 0]
  },
 "modules": [
   {
     "description": "My First Add-On!",
     "type": "resources",
     "uuid": "",
     "version": [1, 0, 0]
   }
 ]
}

↑2箇所にUUIDを入力する箇所がありますので、生成して入力します。公式では、WEBサイトhttps://www.uuidgenerator.net/にアクセスしてUUIDを生成する方法が紹介されています。

わたしの環境では、拡張機能「UUID Generator」をインストールしているので、manifest.jsonを開き、入力したい箇所にカーソルを合わせ、右クリック→「Generate UUID At Cursor」を選択すると生成してくれます。2箇所にはそれぞれ別のUUIDを入れてください。↓のようになります。

{
 "format_version": 2,
 "header": {
   "description": "My dirt resource pack Add-On!",
   "name": "My Resource Pack",
   "uuid":"7d575e77-5598-4ca7-bc51-473a113cefc8",
   "version": [1, 0, 0],
   "min_engine_version": [1, 16, 0]
  },
 "modules": [
   {
     "description": "My First Add-On!",
     "type": "resources",
     "uuid": "66a9dd12-9e5e-416e-b35a-b8fd710f450e",
     "version": [1, 0, 0]
   }
 ]
}

dirt.pngを配置

公式にサンプル画像があるので、ダウンロードします。

https://learn.microsoft.com/ja-jp/minecraft/creator/documents/media/resourcepack/dirt.png

次にダウンロードしたファイル(32×32)を16×16に変換してあげます。私の環境はmacなので、プレビューで開いて50%にリサイズして再保存しました。サイズ調整が終わったら、「blocks」ディレクトリに配置します。

全体のファイルはこんな感じ。

これでファイルの準備は終わりです。

リソースパックの配置

いよいよ配置していきます。リモートサーバーに作成したファイルを配置します。

my_dirt_blockを配置

わたしのリモート環境のマイクラサーバーのbedrock-serverディレクトリは以下のような感じになっています。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ls -la /usr/local/games/minecraft/bedrock-server/
drwxr-xr-x 14 root root 4096 Jun 15 21:56 .
drwxr-xr-x 6 root root 70 Jun 15 09:21 ..
-rw-r--r-- 1 root root 0 Jun 15 23:51 Dedicated_Server.txt
-rw-rw-r-- 1 root root 76 Jun 15 09:24 allowlist.json
-rwxrwxr-x 1 root root 179365928 Jun 5 03:02 bedrock_server
-rw-rw-r-- 1 root root 28195 Jun 5 02:49 bedrock_server_how_to.html
drwxrwxr-x 59 root root 4096 Jun 5 03:02 behavior_packs
drwxrwxr-x 3 root root 21 Jun 5 03:02 config
drwxrwxr-x 8 root root 116 Jun 5 03:02 definitions
drwxr-xr-x 2 root root 6 Jun 15 09:24 development_behavior_packs
drwxr-xr-x 3 root root 30 Jun 15 21:35 development_resource_packs
drwxr-xr-x 2 root root 6 Jun 15 09:24 development_skin_packs
drwxr-xr-x 2 root root 6 Jun 15 22:08 minecraftpe
-rw-r--r-- 1 root root 5946 Jun 15 21:56 packet-statistics.txt
-rw-rw-r-- 1 root root 89 Jun 15 09:24 permissions.json
drwxr-xr-x 2 root root 6 Jun 15 09:24 premium_cache
-rw-rw-r-- 1 root root 8548 Jun 5 02:52 profanity_filter.wlist
-rw-rw-r-- 1 root root 398 Jun 5 02:49 release-notes.txt
drwxrwxr-x 5 root root 52 Jun 5 03:02 resource_packs
-rw-rw-r-- 1 root root 1112 Jun 15 21:56 server.properties
-rw-r--r-- 1 root root 1086 Jun 15 09:23 server.properties.org
drwxr-xr-x 3 root root 30 Jun 15 09:24 treatments
drwxr-xr-x 2 root root 6 Jun 15 09:24 world_templates
drwxr-xr-x 5 root root 46 Jun 15 09:51 worlds
$ ls -la /usr/local/games/minecraft/bedrock-server/ drwxr-xr-x 14 root root 4096 Jun 15 21:56 . drwxr-xr-x 6 root root 70 Jun 15 09:21 .. -rw-r--r-- 1 root root 0 Jun 15 23:51 Dedicated_Server.txt -rw-rw-r-- 1 root root 76 Jun 15 09:24 allowlist.json -rwxrwxr-x 1 root root 179365928 Jun 5 03:02 bedrock_server -rw-rw-r-- 1 root root 28195 Jun 5 02:49 bedrock_server_how_to.html drwxrwxr-x 59 root root 4096 Jun 5 03:02 behavior_packs drwxrwxr-x 3 root root 21 Jun 5 03:02 config drwxrwxr-x 8 root root 116 Jun 5 03:02 definitions drwxr-xr-x 2 root root 6 Jun 15 09:24 development_behavior_packs drwxr-xr-x 3 root root 30 Jun 15 21:35 development_resource_packs drwxr-xr-x 2 root root 6 Jun 15 09:24 development_skin_packs drwxr-xr-x 2 root root 6 Jun 15 22:08 minecraftpe -rw-r--r-- 1 root root 5946 Jun 15 21:56 packet-statistics.txt -rw-rw-r-- 1 root root 89 Jun 15 09:24 permissions.json drwxr-xr-x 2 root root 6 Jun 15 09:24 premium_cache -rw-rw-r-- 1 root root 8548 Jun 5 02:52 profanity_filter.wlist -rw-rw-r-- 1 root root 398 Jun 5 02:49 release-notes.txt drwxrwxr-x 5 root root 52 Jun 5 03:02 resource_packs -rw-rw-r-- 1 root root 1112 Jun 15 21:56 server.properties -rw-r--r-- 1 root root 1086 Jun 15 09:23 server.properties.org drwxr-xr-x 3 root root 30 Jun 15 09:24 treatments drwxr-xr-x 2 root root 6 Jun 15 09:24 world_templates drwxr-xr-x 5 root root 46 Jun 15 09:51 worlds
$ ls -la /usr/local/games/minecraft/bedrock-server/

drwxr-xr-x 14 root root      4096 Jun 15 21:56 .
drwxr-xr-x  6 root root        70 Jun 15 09:21 ..
-rw-r--r--  1 root root         0 Jun 15 23:51 Dedicated_Server.txt
-rw-rw-r--  1 root root        76 Jun 15 09:24 allowlist.json
-rwxrwxr-x  1 root root 179365928 Jun  5 03:02 bedrock_server
-rw-rw-r--  1 root root     28195 Jun  5 02:49 bedrock_server_how_to.html
drwxrwxr-x 59 root root      4096 Jun  5 03:02 behavior_packs
drwxrwxr-x  3 root root        21 Jun  5 03:02 config
drwxrwxr-x  8 root root       116 Jun  5 03:02 definitions
drwxr-xr-x  2 root root         6 Jun 15 09:24 development_behavior_packs
drwxr-xr-x  3 root root        30 Jun 15 21:35 development_resource_packs
drwxr-xr-x  2 root root         6 Jun 15 09:24 development_skin_packs
drwxr-xr-x  2 root root         6 Jun 15 22:08 minecraftpe
-rw-r--r--  1 root root      5946 Jun 15 21:56 packet-statistics.txt
-rw-rw-r--  1 root root        89 Jun 15 09:24 permissions.json
drwxr-xr-x  2 root root         6 Jun 15 09:24 premium_cache
-rw-rw-r--  1 root root      8548 Jun  5 02:52 profanity_filter.wlist
-rw-rw-r--  1 root root       398 Jun  5 02:49 release-notes.txt
drwxrwxr-x  5 root root        52 Jun  5 03:02 resource_packs
-rw-rw-r--  1 root root      1112 Jun 15 21:56 server.properties
-rw-r--r--  1 root root      1086 Jun 15 09:23 server.properties.org
drwxr-xr-x  3 root root        30 Jun 15 09:24 treatments
drwxr-xr-x  2 root root         6 Jun 15 09:24 world_templates
drwxr-xr-x  5 root root        46 Jun 15 09:51 worlds

ここにある、「development_resource_packs」ディレクトリの下に今回作成したファイルを配置します。以下のような感じで、ディレクトリごと配置します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ls -la development_resource_packs
drwxr-xr-x 3 root root 27 Jun 16 00:04 .
drwxr-xr-x 14 root root 4096 Jun 15 21:56 ..
drwxr-xr-x 3 root root 43 Jun 15 21:35 my_dirt_block
$ ls -la development_resource_packs drwxr-xr-x 3 root root 27 Jun 16 00:04 . drwxr-xr-x 14 root root 4096 Jun 15 21:56 .. drwxr-xr-x 3 root root 43 Jun 15 21:35 my_dirt_block
$ ls -la development_resource_packs

drwxr-xr-x  3 root root   27 Jun 16 00:04 .
drwxr-xr-x 14 root root 4096 Jun 15 21:56 ..
drwxr-xr-x  3 root root   43 Jun 15 21:35 my_dirt_block


world_resource_packs.jsonを作成

worldsディレクトリには、マイクラのワールドデータが入っていますが、このリソースパックを適用したいワールドのディレクトリに、world_resource_packs.jsonというファイルを配置し、リソースパックを適用させます。

以下のようにワールドデータが存在する場所にファイルを配置します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
drwxr-xr-x 2 root root 80 Jun 16 00:04 db
-rw-r--r-- 1 root root 2929 Jun 16 00:05 level.dat
-rw-r--r-- 1 root root 2929 Jun 16 00:05 level.dat_old
-rw-r--r-- 1 root root 5 Jun 16 00:05 levelname.txt
-rw-r--r-- 1 root root 134 Jun 15 21:55 world_resource_packs.json
drwxr-xr-x 2 root root 80 Jun 16 00:04 db -rw-r--r-- 1 root root 2929 Jun 16 00:05 level.dat -rw-r--r-- 1 root root 2929 Jun 16 00:05 level.dat_old -rw-r--r-- 1 root root 5 Jun 16 00:05 levelname.txt -rw-r--r-- 1 root root 134 Jun 15 21:55 world_resource_packs.json
drwxr-xr-x 2 root root   80 Jun 16 00:04 db
-rw-r--r-- 1 root root 2929 Jun 16 00:05 level.dat
-rw-r--r-- 1 root root 2929 Jun 16 00:05 level.dat_old
-rw-r--r-- 1 root root    5 Jun 16 00:05 levelname.txt
-rw-r--r-- 1 root root  134 Jun 15 21:55 world_resource_packs.json

ファイルの中身には、manifest.jsonの「header」項目で記述した、uuidとversionを記載します。

[
         {
                 "pack_id" : "7d575e77-5598-4ca7-bc51-473a113cefc8",
                 "version" : [1, 0, 0]
         }
]

マイクラを再起動する

マイクラのサーバーを再起動します。そしてログインしてみます。果たして適用されているでしょうか。

サーバーにログインする際に、ダウンロードの確認が入りました。適用されているっぽぃ!ログインしてみます。

うぉおー!土ブロックの見た目が変更されてるぅ。草ブロックは今回の対応外なので、草が生えていない純粋な土ブロックのみ色が無事に変わってます。なるほど、リモートサーバーでも、このような手順で適用できるんですね。ふむふむ。

まとめ

無事にリソースを適用させることができました。見た目が変化するのは、それなりにインパクトがありますねw

今回からちょっとだけ本気でアドオンの勉強をしていきたいと思うので、長くなる可能性がありますが、お付き合いください。

ソースコード

https://github.com/supilog/minecraft_addons/tree/main/resources/my_dirt_block