【Minecraft】特殊な本や看板で使う『JSON』をマスターしよう!その⑤
みなさん、こんにちは!
赤石大好き!赤石愛です。
それでは続きをやっていきましょう。
エスケープシーケンス
以前、文字列(""で囲われたもの)の中には「"」や「\」を使えないので「\"」や「\\」のように書くという話をしましたね。
それら「そのままでは使えない文字(ここでは")を使うために用意されている組み合わせ」を「エスケープシーケンス」といいました。
「"」や「\」には特別な役割があるためそのままでは使えなかったわけですが、「改行」などそのままでは表示できないために使えない文字もありますね。
そういったものにもエスケープシーケンスが用意されています。
改行のエスケープシーケンスは「\n」です。
このコマンドを実行すると
改行されて表示されましたね。
なお、改行が反映されるのはtellrawまたは本の場合だけで、titleや看板は改行できません。
Unicode(ユニコード)
Unicodeという、16進数で文字を表す方法があります。
→https://ja.wikipedia.org/wiki/Unicode
→https://ja.wikipedia.org/wiki/UTF-8
ここではUnicodeの解説ではなく、JSONでのUnicodeの使い方を解説します。
tellrawやtitleでは連続した半角スペースは1つとみなされます。
/tellraw @p {"text":"間に沢山 挟んでも 1つしか 表示されません。"}
半角スペースはそれぞれ1つ分しか表示されていません。
また、全角スペースは記号で表示されてしまいます。
連続した半角スペースを表示するには、Unicode(を指定できるエスケープシーケンス)を使って半角スペースを指定します。(テキストを分割して表示させることもできますが…)
半角スペースのUnicodeは「\u0020」です。
また、マインクラフトでは「§」は装飾コードとして使用されていて、入力はできません。
装飾コードについてはここでは解説しません。
チャット欄に入力自体ができません。
「§」の入力は非推奨となっています。この後の解説では、「環境によって、あるいは記述ミスによってクラッシュする可能性のあるコマンド」が含まれていますので、自己責任で行って下さい。
「§」のUnicodeは「\u00a7」です。
「§⇦」が装飾コードとして認識され、存在しないコードなので消えてしまいました。
「§b」や「§d」は装飾コードとして存在するので、文字が装飾がされました。
ただし、JSONのテキストは装飾を指定できるため、装飾コードは使わないで下さい。
「§」は装飾を使えないテキストを装飾するために用います。
アイテム名の装飾にはJSONによる指定ができないため、装飾コードを使うことになります。
しかし、§は入力できないので、この通りにコマンドを実行させることができません。
そのため、JSON内でUnicodeから変換させれば良さそうです。
次のようなコマンドで§に変換して実行できますが、このコマンドは実行してはいけません。
クリックした途端、クラッシュやフリーズする可能性が非常に高いです。
良くてエラーで落とされます。
チャット入力欄にて「§」を含むテキストの発言・コマンドの実行は禁止されています。
tellrawや本のclickEventはチャット入力欄を使った時と同じ動作となるため、不正な入力とみなされます。
看板のclickEvent(但しバニラの場合)やコマンドブロックによる実行ではチャット入力欄は関係ないため、禁止されていません。
では、tellrawから看板に変えてみましょう。
看板のNBTは1行目はText1、2行目はText2…となっていて、それぞれ本のpagesの時のように、JSONを""で囲んだ文字列で指定します。
コマンドブロックの上に看板を設置し、次のコマンドを実行します。
すると以下のように、看板の2行目が設定されましたね。
この看板を右クリックすると……
アイテム名が装飾されたアイテムを手に入れることができました。
では今度は、次の3つのコマンドを実行してみましょう。
そのままでは入力できませんよ?
/scoreboard objectives add BluePoint dummy §9§l青
/scoreboard objectives add YellowPoint dummy §e§l黄
今回は似たようなコマンドが3つなので、まずは次のようなコマンドが入ったコマンドブロックを用意してみましょう。
このコマンドが入ったコマンドブロックを設置するコマンドは…
まだ§が残っているので入力できません。
このコマンドがclickEventのrun_commandで実行されるJSONを作ってみましょう。
§をなくせたので、これなら入力できますね。これを看板に設定するコマンドを作りましょう。
ではこれを、看板が上に設置されたコマンドブロックで実行して…
右クリックすると…
目的のコマンドブロックができました。
今回はこれが3つ必要なので、Ctrl+ホイールクリックして3つ用意しましょう。(プラグイン鯖などCtrl+ホイールクリックが出来ない環境では、先程の手順を3回繰り返して3つ用意します。)
3つ用意出来たら、それぞれのコマンドを変えていきます。
コマンドブロック内で装飾コードが反映されてしまっていて分かりづらいですが、慎重にカーソルを移動して変更します。
ColorをRedに。
§aを§cに。装飾コードは間にカーソルを持って行くと確認できます。
色を赤に。
そしてこれを実行します。
何かスコアをセットしてサイドバーに表示してみましょう。
/scoreboard objectives setdisplay sidebar RedPoint
上記2つを実行すると…
スコアボードの表示名に装飾をつけることが出来ました。
残り2つも同じようにできますね。
お疲れ様でした!
ここまで分かれば、あなたはもうマインクラフトのJSONをマスターしています!
次回はおまけとして、本や看板での使用例を少し紹介します。
→おまけへ進む