マイクラの言語ファイルの中身を見る

英語以外の言語ファイルは一体どこにあるのか

いつもの.minecraft/versions/<バージョン>.jarの中にあるのかと思ったら、存在しなかった。 で、よくよく調べてみると以下にあるとのことだった。

  • .minecraft/assets/indexes/<バージョン>.jsonを開く
  • 中に以下のような記述がある場所を探す (日本語の例)
:
"minecraft/lang/ja_jp.json": {
  "hash": "efd2cd466ec340e9a33980e4429cf02152c2c6bb",
  "size": 474708
},
:
  • hashの内容を覚える(どこかにメモする)
  • .minecraft/assets/objects/を開く
  • フォルダがいっぱいあるので、hashの先頭2文字(上の場合はef)のフォルダを開く
  • hashと同じファイル名を「テキストファイル」として開く (中身はJSON)

日本語の言語ファイルはUnicodeで書かれている

ファイルを開くと大量の\u7171みたいな文字がいっぱい並んでます。

なので、読める形に変換しましょう。

私はここのサイトを使ってます。

Unicode Escape Sequence | KWONLINE.ORG

1.15.2の日本語の言語ファイルの中身

どういうものがあるのか。

こんな感じになってます。長いので、適当に省略します。

{
    "addServer.add": "完了",
    "addServer.enterIp": "サーバーアドレス",
    "addServer.enterName": "サーバー名",
    "addServer.hideAddress": "アドレスを隠す",
    "addServer.resourcePack": "サーバーリソースパック",
    "addServer.resourcePack.disabled": "無効",
    "addServer.resourcePack.enabled": "有効",
    :
    "advancements.story.upgrade_tools.description": "より良いツルハシをつくる",
    "advancements.story.upgrade_tools.title": "アップグレード",
    "advancements.toast.challenge": "挑戦完了!",
    "advancements.toast.goal": "目標達成!",
    "advancements.toast.task": "進捗達成!",
    "argument.anchor.invalid": "無効なエンティティのアンカー位置 %s です",
    "argument.block.id.invalid": "「%s」は不明なブロックの種類です",
    :
    "commands.scoreboard.players.set.success.single": "%2$s の %1$s を %3$s に設定しました",
    "commands.seed.success": "シード値:%s",
    "commands.setblock.failed": "ブロックを設置できませんでした",
    "commands.setblock.success": "%s, %s, %s におけるブロックを変更しました",
    :
    "subtitles.entity.dolphin.ambient": "イルカが鳴く",
    "subtitles.entity.dolphin.ambient_water": "イルカが鳴く",
    "subtitles.entity.dolphin.attack": "イルカが攻撃をする",
    "subtitles.entity.dolphin.death": "イルカが死ぬ",
    "subtitles.entity.dolphin.eat": "イルカが食べる",
    "subtitles.entity.dolphin.hurt": "イルカがダメージを受ける",
    "subtitles.entity.dolphin.jump": "イルカがジャンプをする",
    "subtitles.entity.dolphin.play": "イルカが遊ぶ",
    "subtitles.entity.dolphin.splash": "イルカが飛び込む",
    "subtitles.entity.dolphin.swim": "イルカが泳ぐ",
    :
    "title.singleplayer": "シングルプレイ",
    "translation.test.args": "%s %s",
    "translation.test.complex": "Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!",
    "translation.test.escape": "%%s %%%s %%%%s %%%%%s",
    "translation.test.invalid": "hi %",
    "translation.test.invalid2": "hi %s",
    "translation.test.none": "Hello, world!",
    "translation.test.world": "world",
    :
}

%s とか %1$s とかってなによ?

これは、言語ファイルで決められないパラメータが入ります。

例えばcommands.seed.successシード値 : %sですが、実際に表示されるものは%sのところに別の値が入って表示されます。

%1$sも似たようなもので、1番目のパラメータを使いますよってことです。

どうやって使うのか

tellrawで表示させたい場合は、こんな感じで使います。

tellraw @p {"translate":"title.singleplayer"}

もしも%sになにか指定したいなら

tellraw @p {"translate":"commands.seed.success","with":["この辺"]}

とかで指定できます。

%sが複数ある場合も

tellraw @p {"translate":"commands.setblock.success","with":["0","60","15"]}

と書くと、頭から順番に使われます。 何番目っていうのかこういう書き方をした時に、指定するやつですね。

言語ファイルを変更して反映させるには

リソースパックに入れましょう。

<リソースパック名>/assets/minecraft/lang/<言語名>.jsonに配置すればOKです。

全部書かなくても一部だけ変更でもOKです。

<言語名>のところは日本語ならja_jpですね。