サーバー/サーバーラッパー/CraftBukkit,Spigot/プラグイン/YAMLファイル
このページでは、Spigotプラグインでよく用いられるYAMLファイルの書き方について解説します。
YAMLファイルについて[編集 | ソースを編集]
Bukkitプラグインの設定ファイルはYAML形式(拡張子.ymlのファイル)で作られていることがかなり多いです。 各プラグインの解説ページに毎回解説を書くわけにもいきませんので、ここで一括して説明します。
また、YAMLファイルはテキストエディタで開いて編集します。 Windowsの場合メモ帳でもかまいませんが、文字コードの関係上Bukkitの設定をする際は常にTeraPadなどのUTF-8対応エディタで開くことをお勧めします。 Macの方は標準のテキストエディットでも問題ありません。
注意点[編集 | ソースを編集]
- タブ文字は使用しない事。
- 字下げは全て半角スペースで行う事。(半角スペース2つ以上であれば、スペースの個数はいくつでも構いませんが、一般的に「スペース2つ」を使うことが多いのでそれに合わせることをお勧めします。)
- 各項目を設定する設定名と:(コロン)の後に値を入力しますが、必ず:(コロン)の後には1つ以上のスペースを置く事
基本的な書き方[編集 | ソースを編集]
まず、次のような例を見てみましょう。
# この行はコメントになります。 name: steve description: '彼はマインクラフトのアイドル的存在だ。' amount: 5 isAlive: true
1行目は、コメント行です。このように、最初に半角のシャープ「#」を入れることで、コメント行にすることが可能です。設定には反映されません。
2行目は、nameというキー名で、steveという文字列値を割り当てしています。
3行目も同様に、descriptionというキー名で文字列を割り当てていますが、このようにシングルクォート「'」で囲むこともできます。
この場合の値は「彼はマインクラフトのアイドル的存在だ。」のような文字列が割り当てされます。
マルチバイト文字(全角文字)や、「&」などYamlにとって特殊な意味を持つ文字を文字列値の中に使いたいときは、必ずシングルクォーテーョンで囲むようにしてください。
4行目は、amountというキー名で、5という数字を割り当てしています。
5行目は、isAliveというキー名で、trueという真偽値を割り当てしています。
リストの書き方[編集 | ソースを編集]
次に、文字列リストの書き方を見てみましょう。書き方は2種類あります。
items: - IRON_SWORD - GRILLED_PORK - BREAD armors: [LEATHER_BOOTS, LEATHER_LEGGINGS, LEATHER_CHESTPLATE, LEATHER_HELMET]
最初のitemsキーの方のリストは、ブロック形式でリストを指定しています。
itemsキーに、IRON_SWORD、GRILLED_PORK、BREAD という3つの文字列を配列としてまとめて設定しています。
1つの要素ごとに、ハイフンと半角空白「- 」ではじめて、改行を入れる必要が有ることに注意してください。
次のarmorsキーの方のリストは、インライン形式(フロー形式とも呼ばれます)でリストを指定しています。
armorsキーに、LEATHER_BOOTS、LEATHER_LEGGINGS、LEATHER_CHESTPLATE、LEATHER_HELMET という4つの文字列を配列としてまとめて設定しています。
要素ごとに、コロン「,」で分けてください。また、全体を中カッコ「[」と「]」で囲む必要があります。
ブロック形式でも、インライン形式でも、どちらも文字列リストになりますので、どちらの形式を使っても構いません。
また、繰り返しになりますが、マルチバイト文字や「&」を文字列の中に使いたいときは、シングルクォート「'」で囲むことを忘れないで下さい。
シングルクォートで囲んだ例:
items: - 'IRON_SWORD' - 'GRILLED_PORK' - 'BREAD' armors: ['LEATHER_BOOTS', 'LEATHER_LEGGINGS', 'LEATHER_CHESTPLATE', 'LEATHER_HELMET']
ハッシュの書き方[編集 | ソースを編集]
次に、ハッシュの書き方を見てみましょう。こちらも同様に、ブロック形式とインライン形式があり、どちらでも書けます。
effects: SPEED: 1 INCREASE_DAMAGE: 2 JUMP: 3 enchants: [ARROW_DAMAGE: 4, ARROW_KNOCKBACK: 5]
effectsキーの中にSPEEDキーがあり、その数値が1であることを示しています。
同様に、effectsの中のINCREASE_DAMAGEキーが2、effectsの中のJUMPキーが3であることを示しています。
ブロック形式で書くときは、子供の要素は、スペース2つで始めて(厳密には、2つ以上入れれば良い)、最後に改行を入れてください。
下の例では、enchantsの中のARROW_DAMAGEキーが4、enchantsの中のARROW_KNOCKBACKキーが5であることを示しています。
区切り文字のコロン「,」を入れ忘れないように注意してください。
複数行文字列の書き方[編集 | ソースを編集]
複数行に渡る文字列を指定したいとき(文字列値の中に改行を含めたいとき)の例を見てみましょう。
data: | There was a young fellow of Warwick Who had reason for feeling euphoric For he could, by election Have triune erection Ionic, Corinthian, and Doric
この例では、dataというキーに
There was a young fellow of Warwick Who had reason for feeling euphoric For he could, by election Have triune erection Ionic, Corinthian, and Doric
という文字列値を割り当てています。
キーを指定した後に、パイプ「|」を指定して、改行した後、スペース2つから始めて改行し、連続して要素を書き込めば、改行付きの文字列値として認識されます。
ハッシュの入れ子の書き方[編集 | ソースを編集]
今までの内容の総復習として、ハッシュの入れ子を使った複雑な書き方を示します。
items: sword: material: IRON_SWORD display_name: '伝説の剣エクスカリパー' lores: | この剣は、伝説の剣 その名も、エクスカリパーである。 enchants: DAMAGE_ALL: 5 KNOCKBACK: 5 durability: 1 pork: material: GRILLED_PORK amount: 15 bricks_slab: [material: STEP, amount: 64, data: 4]
ここで注意して欲しいところは、キー&値のセットと、ハッシュを、混ぜて使用しないようにすることです。
例えば、次の例は誤ったYAML形式です。
items: sword: '剣です!' material: IRON_SWORD display_name: '伝説の剣エクスカリパー'
sword は、ハッシュとしての子要素 material、display_name が存在しているにもかかわらず、sword に対して文字列値が与えられています。
そのため、sword は文字列のデータを示すのか、ハッシュのデータを示すのか、曖昧であり、YAMLを読み込むとエラーになってしまいます。
YAMLファイルのエラー[編集 | ソースを編集]
ERROR: while scanning for the next token found character '\t' that cannot start any token in "<unicode string>", line 3, column 1: default: true ^
プラグインが読み込まれる時に上記のようなエラーがあればそれはYAMLファイルの構文に失敗しているということです。このエラーは'\t'の部分にTAB文字があるというエラーです。
PermissionEx等のプラグインはこのようなエラーが起こると読み込まないものもあるため注意が必要です。
注意点や出力されたエラーログを読んで、何が間違っているのかを確認しましょう。
その他[編集 | ソースを編集]
Bukkitを利用する上で知っておくべきYAMLの基礎知識は、上記で十分でしょう。
しかし、YAMLの記法はもっと複雑なところまで定義されており、このページでは全てを解説することは難しいです。
もっと複雑な仕様まで理解したいのであれば、下記のリンクを参照してみてください。
- YAML:http://www.yaml.org/
このページはBukkit Japan Wiki(運営停止)から許可を得て使わさせていただいております。