サーバーMOD > CraftBukkit > Bukkitプラグイン > 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の記法はもっと複雑なところまで定義されており、このページでは全てを解説することは難しいです。

もっと複雑な仕様まで理解したいのであれば、下記のリンクを参照してみてください。

このページはBukkit Japan Wiki(運営停止)から許可を得て使わさせていただいております。