意外と知られていないマイクラリソパのアップデートを作るときの注意事項
※2020/10/16から自分の個人サイトのブログ(現在メンテ中)で公開していた記事を一部加筆修正したものです。当時のブログは内容がとても短かったので、今回は短めです。
バージョンを設定しよう
マイクラのリソースパックを1度作って何回か使ってるうちに入れ忘れたテクスチャとかに気付いてあとから追加したいって思うことはありませんか?
でも、マルチプレイとかで使ってたりするとそのままワールドにテクスチャとか追加しても上手く反応しないことがあるんです!
例えば、マルチプレイで入ってきたプレイヤーには追加したアイテムとかが反映されてなかったり…
そんなことを避けるためには、マイクラの方がリソースのアップデートを認識できるようになる必要があるんです!
1.14.0
皆さんはこんな感じの表記見たことありませんか?
これはマイクラのようなゲームでバージョンを表すのに使う表記です。
内部の内容を変更したときにどのアップデートかをわかりやすくするためのものですね。
それはさておき、本題はと言うと、リソースパックにもバージョンを表記できるエリアがあるんです!
リソースパックのmanifest.jsonの中に
"version" [0, 0, 0]
と書いてあるのを見たことがあると思いますが、これはパックのバージョンをマイクラ側に認識させるために書くものなんです!
だから、バージョン0,0,0で出したパックに新しくアイテムを後から追加しようと思ったらバージョンを0,0,1にしてマイクラ側がアップデートを認識できるようにしましょう!
そうすれば、UUIDを変えなくてもパックのアップデートが可能です!
逆に、UUIDを変えてしまうとマイクラ側はそのパックを違うパックだと認識してしまいます。
それでもいいじゃないかという人もいるかもしれませんが、それは管理する側が困る場合が多いです。
特に、パックをワールドデータに入れる作業を他人に任せる場合は注意しましょう。
ビヘイビアパックはいいの?
おそらくアドオンを作ったことのある方ならビヘイビアパックはいいの?と思うかもしれません。
先程の話のように他人が管理する場合はビヘイビアパックのバージョンも変えましょう。
ただし、自分でワールドに入れるぜという場合はビヘイビアは変えなくても正常に動きますし、マルチプレイにも影響しません。
ここで下記の記事で書いた話が少し関わってきます。
この記事でリソースパックはアプリ側で処理するパックで、ビヘイビアパックはサーバー側で処理するパックだという話をしましたね。
ここで、これが生きてくるんです。
ビヘイビアパックの内容はあくまでサーバー側(サーバーを使わないマルチプレイの場合ワールドを建てているホスト側のアプリ)で処理されるため、バージョンとかを変えていなくても、自分のところでちゃんと設定されればなんの問題もないんです。
逆にリソースパックはアプリ側、つまり参加者側で処理します。
一見話を聞くと一緒に見えるかもしれませんが、参加者側の場合、昔処理したパックは基本的にそのデータを保管しています。
そして、ここが曲者で、参加者側で昔処理したパックから同じパックを使用していると判断された場合、たとえ保管しておいたデータから内容が修正されていたとしても、自分のところで保管してるデータを使ってしまうんです。(専門用語ではキャッシュを使用すると表現します)
では、同じパックを使用しているかどうかはどうやって判断するのか。
それが、UUIDとバージョンなのです。
UUIDとバージョンが同じなら同じパックで、しかも保管してるデータから変更がないものとして判断されます。
逆にバージョンが違えば変わっているものとして最新のものをサーバー側にもらいに行きます。(アプリで言うところのアップデートを行うわけです。)
UUIDが違えば、そもそも変更後のパックは初めましてのパックなので、最新のものをサーバー側にもらいに行きます。
参考
JSONがわかる人向けですが、マイクラのワールドデータ上でのパック管理データはこのような形式です。
[
{
"pack_id": "a9bc5b5c-9b58-49b0-9a5b-92167f02a5e6",
"version": [ 0, 0, 0 ]
},
{
"pack_id": "8a52f77b-0001-45af-9eb6-7834a61508d9",
"version": [ 0, 0, 0 ]
}
]
pack_idの項目にはパックにmanifest.jsonで設定したUUIDが入ります。(バージョンは言わずもがなmanifest.jsonのバージョンです。)つまりUUIDとバージョンが命ということです。
正直に言うとmanifest.jsonの名前などを変えて反応する可能性がないとは言いません。(試したことない)
ただ、せっかくバージョンと言う設定項目があるのだからそれを変更するのが一番です。特に他人に管理を任せている場合は。
余談ですが…
このバージョンというのは,で分けて3つになっています。1つ目がとても大きいアプデ、2つ目がそこそこ大きいアプデ、3つ目はちょっとしたバグ修正とかの小さなアプデで数字を上げるものです。
数字の桁と同じで、「,」で分けた3つの数字のうち、1つ目がより大きければ、2つ目、3つ目は小さくても大きいとみなします。
1,1,5よりも2,0,0の方が大きいわけです。
この場合はパックのテーマとか変えるレベルの大きな変更があったということになりますね。
1,1,5から1,2,0にアプデしたということはイベントとかで数個アイテムを変えたとかそういう感じでしょう。
1,1,5から1,1,6にアプデする場合はちょっと入れてたアイテムのイラスト間違えてたとかそういう軽度な場合ですね。
まぁ、3つのうちどれを上げるかは自由ですが、基本的に上げた数字より右の数字は一度0にリセットすることをお勧めします。(単純に一般的なバージョン管理はそうなっているから。)
ちなみに、3つの数字で増える順番さえ気をつけていればいいので、単純に年月日とかでもいいんですよ。(24,12,31みたいにね)
ただ、何かしらの法則は決めておかないとアプデの時に混乱するので注意。
まとめ
アプデした場合は必ずバージョンを変更しましょう。ってゆーか、他人に管理を任せるのにバージョン変えずにUUID変えてくるとかマジあり得ないんですけどぉおふざけは置いといて、僕とかはパック管理をする際、参考のところで書いたパックの管理用のファイルをいじって管理してます。(最近は自動化ツールを自作しようとしてるけど)
つまり、UUIDが変えられると全部のパックのmanifest.json調べて抜けたUUID探して、その項目削除してもう一回新規扱いで登録すると言う作業が発生します。文章で見てもわかる通り、めっちゃめんどいです。(これでも簡略化して書いてるんだからね)
なので、内容変えてもUUIDは変えるな。バージョンは変えろ。
以上、現場のはやぶでした〜。
いいなと思ったら応援しよう!
