この記事は Minecraft Command Advent Calendar 2025 1 日目の記事1です![]()
はじめに
リソースパックを同封するデータパックやマップの配布において、リソースパックが正しく導入できていないユーザーというのは常に悩みの種です。
ユーザーにリソースパックを正しく導入してもらえないと、せっかくのデータパックや配布マップが台無しになってしまうこともありますし、その状態で配信されたりスクリーンショットが撮られたりすると、作者の意図しない形で作品が伝わってしまうこともあります。
本記事では、そのような悲しい出来事を防ぐために 「リソースパックを正しく導入できていないユーザーを生まないための簡単な警告表示の方法」 をご紹介します。
なお、本記事の方法は Minecraft Java Edition 1.20.4 にて動作確認を行っていますが、理論上 1.13 以降の全てのバージョンで動作するとは思います。
どうやって警告を出すの?
さて、リソースパックを正しく導入できていないユーザーに対して警告を出すのは、実はとても簡単に実装することができます。
データパック側でやることは、警告を出したいタイミングで 「警告の文字列を "text" の代わりに "translate" で表示する」 だけです。
例えばこんな感じ:
tellraw @s {"translate": "リソースパックが正しく導入できていません!", "color": "red"}
そして正しく導入できていなければ警告したいリソースパック側にて、「assets/minecraft/lang/en_us.json にデータパック側に記載した警告文を翻訳キーとした空文字を定義する」 だけです。
例えばこんな感じ:
{
"リソースパックが正しく導入できていません!": ""
}
これだけで、リソースパックを正しく導入できている人には何も表示されず2、正しく導入できていない人にのみ警告文を出すことができます。
なんでこれでできるの?
仕組みは以下の通りです。
今回 tellraw に指定した "translate" というキーは、本来 「指定した翻訳キーに対応する翻訳文を表示する」 ための仕組みです。
例えば、{"translate": "item.minecraft.diamond_sword"} を tellraw で流すと、表示された各ユーザーの言語設定に応じて 「Diamond Sword」 や 「Épée en diamant」 「ダイヤモンドの剣」 のように表示を切り替えることができます。
しかし、リソースパックにて該当の翻訳キーが定義されていない場合、その翻訳キーに対応する翻訳文が存在しないため、翻訳キーそのものが表示されます。
本記事の方法は、この仕組みを応用して 「リソースパックが正しく導入できていれば空文字に上書きされて何も出ないが、リソースパックが正しく導入できていなければ翻訳キーがそのまま出る」 という挙動を作り上げたものです。
おわり
以上、"translate" の素朴な挙動を応用することで、リソースパックを正しく導入できていない人への警告を簡単に表示できる仕組みの解説でした。
この記事では空文字に上書きする方法をご紹介しましたが、例えばリソースパックを正しく導入できているユーザーに対してのみ別のメッセージを表示したい場合など、応用も可能です。3
簡単な仕組みなので、ぜひ皆さんのデータパックや配布マップでも活用して、少しでも悲しい出来事を防ぐ手助けになれば幸いです。
-
初日から大遅刻した馬鹿野郎が居るみたいですね?まぁそもそも、本 Advent Calender は一つでも多くのコマンドに関する知見が共有されれば良いなと思って企画しているので、結果的に 「こんな記事でも良いんだ」 「これくらい雑でも良いんだ」 と思ってもらい、参加のハードルが下がれば良いなと思います。(言い訳) ↩
-
より正確には、空行が出力されるのですが、まぁ正直ほとんどの人は気づかないか、気づいても気にしないと思います。 ↩
-
リソースパックが正しく導入できている際に別のメッセージを表示したい場合に、データパック側の警告文に色を付けていると、別のメッセージの色も同じ色になってしまうという問題があります。この場合、やや古の技術感はありますが、lang の方で
§を使った文字色設定を行うことで回避できるので、試してみてください。 ↩