メインコンテンツまでスキップ

設定ファイルガイド

MagmaCore の共通設定ローダーは、継承された設定も含め、読み取り不能または不正な YAML を既定値の適用前に拒否します。共通の保存処理は一時ファイルを書き込んでディスクに同期してから保存先を置き換え、対応環境ではアトミックな置換を使います。保存エラーは呼び出し元に通知されるため、ファイルの問題を修正してから再試行してください。

このページでは、.yml(.yaml)ファイルを正しく編集する方法を説明します。Nightbreak のプラグインは .yml 設定ファイルを使います。不正な YAML や未対応の値があるとファイルを読み込めなくなることがあり、一部の設定は既定値に戻ります。バックアップを取り、再読み込み後にコンソールを確認してください。

以下では、設定エントリーのすべての型と、値を変更する際にどのような書式にすべきかを紹介します。

.yml ファイルの編集方法​

ファイルは .yml 形式で保存されており、設定作業には Notepad++ の使用を推奨します。もちろん、お好みの他のテキストエディターを使っても構いません。

廃止された設定ファイル​

プラグインの更新で設定形式が廃止されると、MagmaCore は該当するファイルを plugins/MagmaCore/outdated files/<PluginName>/<archive batch>/ へ移し、内容と相対パスを維持します。保存先はコンソールに表示されます。この処理はコンテンツのインポート前後にも実行されるため、古いパッケージが廃止済みファイルを黙って有効な場所へ戻すことはできません。

代替の同梱既定ファイルがある場合、プラグインはそれを再生成します。廃止された DLC ファイルには更新済みコンテンツパッケージが必要です。独自ファイルは現在の形式で書き直してください。アーカイブ内のファイルと該当リファレンスを比較し、意図した設定を移します。アーカイブしたファイルを変更せず戻すと、再びアーカイブされる場合があります。

アーカイブの判定には所有元プラグインが提供する個別のルールを使います。不明な設定や壊れたファイルというだけで、廃止形式と判定されるわけではありません。通常の読み込みエラーについてもコンソールを確認してください。

形式ではなく、古い同梱既定ファイルを廃止するルールもあります。ルールは、古いメニュースロットやクエストリストなど、古い既定ファイルにしか含まれない値を正確に指定でき、その値がまだ残っていればファイル全体がアーカイブされます。同梱 Lua スクリプト用のルールは、改行コードの CR を無視したファイルの SHA-256 チェックサムを、そのスクリプトの過去の同梱バージョンと比較します。一致するのは未編集のコピーだけなので、変更したスクリプトはそのまま残ります。その後、プラグインは現在の既定ファイルを書き出します。

たとえば BetterStructures は旧 Valid worlds を Valid worlds v2 に置き換えます。EliteMobs は一部の古い同梱アイテム、旧ギルド歓迎クエスト、過去に同梱された Lua パワーとエンチャントスクリプトの未編集コピーをアーカイブします。FreeMinecraftModels も、廃止済みと認識できる装備アイテム Lua スクリプトをアーカイブします。現在のプロップスクリプトとエンチャント効果は、それぞれ対応する独自の仕様を使います。

重複したファイル名​

MagmaCore を通じてコンテンツを読み込むプラグインは、サブフォルダー内のファイルも含め、各コンテンツファイルをファイル名で識別します。同じコンテンツフォルダー内の2つのファイルが同じファイル名を持つ場合、大文字・小文字を区別せずにフルパスで並べて最初になるファイルだけが読み込まれます。コンソールには、読み込まれたパスとスキップされたパスを示す警告が出ます。コピーが同一である場合、または YAML ファイルでスキップされたコピーのすべての値が読み込まれたファイルと一致する場合は警告が出ません。これは2つのコンテンツパッケージが同じ共有ファイルを同梱している場合に起こります。別々に読み込むべきファイルには一意のファイル名を付けてください。より厳格なフォルダーもあります。BetterStructures の modules フォルダー内でスキマティックのファイル名が重複すると、モジュールの読み込みが停止します。

Boolean​

Boolean の値は true または false です。次のような見た目になります。

value1: true
value2: false

Boolean は true か false のいずれかの値しか受け付けません。通常は特定の機能をオン・オフするために使われます。

String​

String の値は通常、単なるテキストです。String の値は次の形式に従って引用符で囲むことを強く推奨します。

value: "String"

カラーコードを含む文字列、特に先頭が & の文字列は引用符で囲んでください。対応するテキストフィールドでは "&aTest" が緑色の文字になります。色付きテキストの利用可否は設定項目によって異なります。カラーコードはこのページを参照してください。

Details

なぜ必要なのですか? 設定の文字列は & などの特殊文字を含められます。value: "&aString" のように特殊文字が先頭にある場合、String を引用符で囲まないと、YAML が & を通常の文字ではなくアンカーとして解釈することがあります。解析エラーや意図しない値を避けるため、文字列全体を引用符で囲んでください。

Serialized Location​

Serialized Location は次のような見た目をした特殊な型の String です。

location: world,1.0,2.0,3.0,4.0,5.0

これは位置情報を保存・設定するために使われます。形式は worldName,X,Y,Z,YAW,PITCH です。ヨーとピッチはプレイヤーの視線方向を決め、Minecraft の位置情報と同じ値を使います。

Multiplier​

Multiplier の値は、プラグインの値をその数値で乗算します。これらの値は絶対に引用符で囲まないでください。例を示します。

damageMultiplier: 1.0

この場合、ダメージ倍率は 1 倍されるため、デフォルト値から変化しません。Multiplier が 2.0 であれば値は 2.0 倍されます。0.5 であれば 0.5 倍されます。

0.5 を掛けることは 2 で割ることと同じです。有効範囲は設定項目ごとに決まります。ゼロ、負数、大きな倍率を使う前に、その項目のリファレンスを確認してください。

Integer​

Integer の値は単なる整数です。例:

value: 10

~ を使えるのは、スクリプトの文書で数値範囲への対応が明記されたフィールドだけです。これはその機能が解析する文字列であり、YAML の数値や一般的な設定機能ではありません。例:

value: 1~10

Integer の値で重要なのは、整数でなければならないという点です。つまり 10.1 は無効です。

Double​

Double は小数部を持てる十進数です。例:

value: 10.01

~ を使えるのは、スクリプトの文書で数値範囲への対応が明記されたフィールドだけです。これはその機能が解析する文字列であり、YAML の数値や一般的な設定機能ではありません。例:

value: 1.0~10.01

Double は 10.0 のように整数になることもあり、10 と表記されることもあります。

Float​

Float は 32 ビットの十進数で、Double より精度が低くなります。例:

value: 10.42452

~ を使えるのは、スクリプトの文書で数値範囲への対応が明記されたフィールドだけです。これはその機能が解析する文字列であり、YAML の数値や一般的な設定機能ではありません。例:

value: 1.0~10.42452

Float も 10.0 のように整数になることがあり、10 と表記されることもあります。

String List​

String List は String の値のリストです。非常に厳密な設定形式が求められるため、設定が最も難しい値になりがちです。

valuesList:
- "value,1"
- "value,2"
- "value,3"

String と同様に、値は引用符で囲むことを推奨します。String List はそれぞれ独自の形式を持つため、編集対象が要求する具体的な形式を確認する必要がありますが、全体的な形式は上記のようになります。

Map List​

Map List は複数のマッピング要素を含むリストです。この YAML 例では、名前付きマップの下に各値を入れています。実際のキーは設定項目によって異なります。

parentMap:
- Map1:
key: value
- Map2:
key: value
keyForList:
- "value1"
- "value2"

ご覧のとおり、Map List の内部にはあらゆる形式を含められますが、スクリプティングで使う場合は、それぞれの Map で有効なキーと値をドキュメントで確認する必要があります。

Color Codes​

次の修飾子を使って、色を指定したりテキストを太字にしたりすることもできます。

コード色例
&4暗い赤
&4暗い赤の例。
&c赤
&c赤の例。
&6オレンジ
&6オレンジの例。
&e黄色
&e黄色の例。
&2暗い緑
&2暗い緑の例。
&a緑
&a緑の例。
&bアクア
&bアクアの例。
&3暗いアクア
&3暗いアクアの例。
&1暗い青
&1暗い青の例。
&9青
&9青の例。
&d明るい紫
&d明るい紫の例。
&5暗い紫
&5暗い紫の例。
&f白
&f白の例。
&7灰色
&7灰色の例。
&8暗い灰色
&8暗い灰色の例。
&0黒
&0黒の例。
&r色のリセット&rリセットの例。
&l太字&l太字の例。
&o斜体&o斜体の例。
&n下線&n下線の例。
&m打ち消し線&m打ち消し線の例。
&kランダム&k
&fの例。

例からわかるとおり、修飾子は通常の Minecraft の構文に従いますが、EliteMobs で使う場合は § が & に置き換わります。これを使って、モブ名、クエストテキスト、ダンジョン名など、EliteMobs のほとんどのテキストを装飾できます。

正しく機能している場合、修飾子そのものはテキストに表示されない点に注意してください。ここで表示しているのはあくまで説明のためです。

色と他のテキスト修飾子を組み合わせることも可能です。たとえば、次のようにできます。

&a&oこうすると斜体の緑色テキストになります。

カスタムモブに見栄えのするカラフルな名前を付けたい場合は、次のようにします。

name: "$normalBossLevel &aScary &dDragon"

EliteMobs 10 以降では、次の例のように、あらゆる EliteMobs テキストでカラーグラデーションも使用できます。

name: "&cNormal Red Text <gradient:#FF6B00:#FFD700:#FFFF00> Cool Gradient Text </gradient>"

この例では、

  • &c はグラデーション前のテキストを標準の赤色にします。
  • <gradient:...> はグラデーション定義を開始します。
  • #FF6B00、#FFD700、#FFFF00 はグラデーションに使う色です。
  • Cool Gradient Text がグラデーションの対象テキストです。
  • </gradient> はグラデーション部分を終了します。

影響を受けるのはグラデーションタグの内側のテキストのみで、タグの外側の書式は変更されません。

グラデーションは EliteMobs 専用ではありません。テキストパーサーは MagmaCore にあるため、それを同梱する各プラグインの対応テキストフィールドで同じ記法を使えます。ほかの MiniMessage タグ(<rainbow>、<#RRGGBB>、<red> のような名前付き色、<bold> のような装飾など)も利用できます。

Material​

Material の値は、IRON_CHESTPLATE のような MineCraft に存在するマテリアルです。有効な Material の一覧はこのページを参照してください。

helmet: IRON_HELMET

Material は、モブの装備、戦利品のドロップ、クエスト報酬など、いくつかの設定で値として使われます。

Filename​

Filename の値は、MagmaGuy のプラグインで使えるように書式化された .yml 設定ファイルです。アイテムからクエストまで、あらゆるものが該当します。

uniqueLootList:
- filename: magmaguys_toothpick.yml

ワールドのトリミング​

WorldBorder などの互換ツールで不要な地形を切り詰め、配布するワールドを小さくできます。使用するサーバーの正確なバージョンへの対応を確認し、バックアップのコピーで作業してください。古い互換性表だけでは、新しいワールド形式への対応は確認できません。

Details

ヒント 初めて行う場合は、万が一に備えてワールドのバックアップを作成しておくとよいでしょう。

プラグインをインストールしたら、ワールドの中央、またはトリミングしたい特定のエリアへ移動します。その後、/wb set x コマンドを実行します。ここで x はそのエリアに設定したいおおよその半径サイズです。

Details

ヒント /wb が動作しない場合は、/worldborder:wb を試してください。

このコマンドを実行したら、ワールドの端まで飛んでいき、ワールドボーダーが正しく設定され、意図したサイズをカバーしていることを確認します。ワールドボーダーの端に到達すると押し戻され、チャットにメッセージが表示されるのでわかります。

trim_pic_1.jpg

上の画像では、紫のブロックの周囲だけを数チャンク残してワールドをトリミングすることを目指しています。これを行うには、紫のエリアの中央にある赤い四角の上に立ち、/wb set 50 を実行して、紫のエリアのすぐ外側にワールドボーダーを設定します。

次に /wb trim [freq] [pad] を使います。余白の単位はブロックで、頻度は 1 秒に確認するチャンク数です。/wb trim 200 20 は毎秒最大 200 チャンクを確認し、境界の外側に 20 ブロックを残します。/wb trim confirm で確定する前に余白を確認し、必要なら大きくしてください。単位は WorldBorder の trim コマンドで定義されています。

そのワールドに立って /wb clear を実行すると、そのワールドのプラグイン境界を削除できます。そのまま残しても構いません。

ワールドフォルダーのトリミング​

サーバーを停止し、バックアップのコピーで作業してください。region、raids.dat、level.dat 以外をすべて削除しないでください。地形、エンティティ、POI、ディメンションのデータが必要な場合があります。サーバーとプラグインが実際に使用するディレクトリ構造を保持してください。

古い Vanilla ワールドではネザーが DIM-1、エンドが DIM1 を使用します。Vanilla 26.1 では標準ディメンションが dimensions/minecraft/overworld、dimensions/minecraft/the_nether、dimensions/minecraft/the_end に移動し、region、entities、poi もそこに保存されます。必要な構造はサーバーソフトウェアとバージョンによって異なります。配布前に別のサーバーへコピーをインポートし、ワールドを確認してください。

Minecraft 26.1 · Paper