MC Toolkit

ガイド / コマンドとデータ

同じ赤文字がJavaとBedrockで壊れる理由

あるプラグインでは完璧に表示されるカラーコードが、別のプラグインではアンパサンドがそのまま表示される。原因はプラグインではなくフォーマットにある。§、&、MiniMessage、JSONなど5つの方言があり、統合版でも扱いが異なる。

§ コードと MiniMessage タグは同じ色を表現していても、同じサーバーに拒否されることがあります。サーバーの色付きテキストは単一のフォーマットではなく、少なくとも5種類が存在し、どの形式を受け入れるかはプラグインごとに異なります。

5つの方言

方言見た目通用する場所
レガシーセクション§cHelloバニラチャット、古いプラグイン
アンパサンドレガシー&cHelloコンフィグファイル、多くのプラグイン
BungeeCord hex&x&f&f&0&0&0&0プロキシプラグイン、一部のチャット
MiniMessage<red>Hello</red>モダンなPaperプラグイン
JSONコンポーネント{"text":"Hello","color":"red"}バニラコマンド、/tellraw

アンパサンド形式は、何かが変換してくれるまではカラーコードですらありません。MiniMessage を期待するプラグインに &c を貼り付けると、プレイヤーにはそのままの文字が表示されます。

レガシーコードは色が足りない

セクション記号のシステムには、固定された色文字と書式設定のトグルしかありません。任意の色を表現する方法は存在しません。hex は後から登場し、BungeeCord 形式では1文字ずつエンコードします——&x の後に & を前置した6桁の hex 数字が続くため、あんなに長く見えるのです。

MiniMessage は #ff0000 を直接受け取ります。JSON は同じ hex を文字列値として受け取ります。

JavaとBedrockは一致しない

Bedrock もセクション記号を使いますが、その色セットと書式リセットの扱いは Java とは異なります。Java サーバーで正しく表示される文字列が、Bedrock クライアントでは余計な文字として表示されることがあり、クロスプレイプロキシはテキストをそのまま通すのではなく、しばしば両者間で変換を行います。サーバーが Bedrock プレイヤーを受け入れるなら、両方で出力をテストしてください。

ネストの罠

レガシーコードはステートフルです。カラーコードは書式をリセットするため、§c§lBold は赤かつ太字ですが、§l§cBold は赤のみです——太字の後のカラーコードがそれを消してしまいます。色を先に、書式を後に。MiniMessage はツリー構造であり、<red><bold>text</bold></red> はきれいに閉じます。ネストされた MiniMessage 文字列をレガシーコードに変換すると構造が失われます。レガシーには閉じタグが存在しないからです。

エスケープ

MiniMessage は < を構文として扱います。<Steve> という名前のプレイヤーは、その名前をコンポーネントとしてパースするあらゆるプラグインを壊します。レガシーフォーマットも & で同じ問題を抱えており、そのため多くのプラグインは && やエスケープ用のコンフィグフラグを要求します。

テキストは一度書いて、プラグインが実際にパースする方言を選び、Server Text Studio から正確な文字列をコピーしましょう。

サーバーテキスト スタジオ →

その他のガイド

すべて見る →