コンテンツの作成
ビルドの作成
地形への適合とリソース使用量を考え、まずは100x100x100ブロック未満を目安にしてください。これは推奨値であり、厳密なサイズ制限ではありません。大きな構造物には多くのメモリと配置処理が必要で、ワールドの高さ制限内に適した場所も必要です。
特殊ブロック
BetterStructuresには2つの特殊ブロックがあります:バリアと岩盤です。WorldEditが貼り付けられる他のブロックは通常通り貼り付けられますが、バリアと岩盤のブロックは例外です。
| ブロック | 挙動 | 使用例 |
|---|---|---|
| バリア | その場所にブロックを配置しない - 元の地形を保持 | 貼り付けの端を丸める、洞窟に合わせて壁を成形、自然な統合 |
| 岩盤 | 既存の固体ブロックを保持し、それ以外にはペデスタルの素材を配置 | 既存の固体地形を置き換えずにレール用の床を作る |
スポーンサイン
BetterStructuresは特定のテキストを持つサインを使用して、EliteMobsやMythicMobsのモブやボスを特定の場所にスポーンさせたり、別のプラグインにマーカーを渡したりできます。
スポーンサインは最初に貼り付けられ、ブロックの貼り付け完了後、スポーンを試みる直前に削除されます。貼り付け中には見える場合があり、削除されたことはスポーン成功の証明にはなりません。不明なタグ、無効なバニラエンティティ型、MythicMobs IDの未指定は普通の看板を残します。EliteMobsやMythicMobsが未導入なら、そのタグを使うスキマティック全体が構造物の登録から除外されます。
ブロックの貼り付け後、BetterStructuresは次の順序で構造物の仕上げを行います:ペデスタル、地表構造物の上に残った木の除去、戦利品コンテナ、[spawn]のモブ、[elitemobs]のボス、[mythicmobs]のモブ、スキマティックに保存されたエンティティ、最後に[custom]マーカー。モブやボスのスポーンに失敗すると残りの手順はスキップされ、BuildPasteCompleteEventは発行されず、新しい建物のメッセージも送信されません。
| サインタイプ | 1行目 | 2-4行目 | 必要なプラグイン |
|---|---|---|---|
| バニラモブ | [spawn] | 2行目にEntity type | なし |
| EliteMobs | [elitemobs] | ボスのファイル名(2〜4行目にまたがって記述) | EliteMobs |
| MythicMobs | [mythicmobs] | 2行目にモブ名、3行目に任意でレベル | MythicMobs |
| その他のプラグイン | [custom] | マーカーID(2〜4行目にまたがって記述) | BuildCustomMarkerEventをリッスンするプラグイン |
立て看板、壁掛け看板、吊り看板は、Bukkitの素材名が_SIGNで終わることで認識されます。固定の木材リストは使いません。現行の看板は裏面ではなくfront_textを読むため、タグは表面に書いてください。ゲーム内で入力した行、JSONテキスト、プラグインが書き込んだテキストコンポーネントは、いずれもプレーンテキストとして読み取られます。タグの大文字と小文字は区別しません。エンティティIDとファイル名は正確に記載し、余分な空白を入れないでください。
MythicMobsのレベル行は任意です。3行目が空ならレベル1です。1未満の数値は1になります。数値でないレベルや、MythicMobsが認識しないモブIDを指定するとスポーンが失敗し、その構造物の残りの仕上げ手順はスキップされます。
スポーンサインの例
バニラモブ
[spawn]
ZOMBIE
看板ブロックの水平方向の中心に、永続的なゾンビをスポーンさせます。アーマースタンドやエンドクリスタルなど、スポーン可能なSpigot EntityTypeを使ってください。列挙型にはワールドが直接生成できない型も含まれるため、名前が受理されても成功は保証されません。ワールドがスポーンを拒否した場合、その構造物の残りの仕上げ手順はスキップされます。
EliteMobs
[elitemobs]
test_boss_with
_a_long_name
.yml
長いファイル名は2〜4行目に分けられ、区切り文字なしで結合されます。protectEliteMobsRegionsが有効でEliteMobsとWorldGuardが導入されている場合、アリーナ内のブロック破壊と設置が保護されます。生成した各リージョナルボスにリージョンを作ります。死亡時に削除するのはremoveAfterDeath: trueのボスだけなので、再出現するボスでは保護が残る場合があります。どのボスにも一致しないファイル名など、EliteMobsのスポーンが失敗した場合は、その構造物の残りの仕上げ手順がスキップされます。
MythicMobs
[mythicmobs]
SkeletalKnight
10
レベル10のSkeletalKnightをスポーンさせます。
カスタムマーカー
[custom]
Zombie_Plus
BetterStructures自体はIDに対して何も行いません。構造物のブロック、戦利品、モブ、エンティティが貼り付けられた後、看板を削除し、IDと看板の位置を含むBuildCustomMarkerEventを発行します。これにより、別のプラグインがその場所に独自のモブをスポーンさせたり、ブロックを配置したり、その他任意の処理を実行したりできます。2〜4行目はEliteMobsのファイル名と同様に区切り文字なしで結合され、各行を個別に取得することもできます。リッスンするプラグインがなければ、マーカーは単に消えます。2〜4行目が空の[custom]看板は普通の看板として残り、警告がログに記録されます。カスタムマーカーは通常の構造物で機能し、モジュラーダンジョンでは機能しません。
スキマティック
スキマティックは、WorldEditまたはFastAsyncWorldEditによって生成されるファイルで、BetterStructuresが使用するビルドのブロックが含まれています。 BetterStructuresは.schemファイル形式(最新のWorldEdit標準)を使用します。スキマティックは、レガシーの.schematic形式ではなく、必ず.schem形式で保存してください。
コピーと保存はWorldEditのクリップボードガイドを参照してください。基本手順は次のとおりです。
- ビルドの角を選び、
//pos1コマンドを使用します - 対角線上の反対側の角を選び、
//pos2コマンドを使用します //copyコマンドを使用します- 希望するファイル名で
//schem save <schematicname>を実行します。 - 生成した
.schemをエディターのスキマティックフォルダーからplugins/BetterStructures/schematicsへコピーし、BetterStructuresをリロードします。WorldEditの標準フォルダーはplugins/WorldEdit/schematicsです。
ポイント1で//pos1、ポイント2で//pos2コマンドを必ず実行してください!
アンカーポイント
アンカーポイントは、スキマティックに対して//copyコマンドを実行する位置です。これらは、ワールドに配置された際の構造物の原点を決定します。
| ビルドタイプ | 推奨アンカー位置 | 理由 |
|---|---|---|
| 地表 | 床の最低点 | 適切な地面との位置合わせを保証 |
| 地下 | ビルドの上部 | 正しい埋没深度の決定を可能にする |
| 液体 | 水面上 | 適切な水面配置 |
| 空中/上空 | ビルドの上部 | 正しい高度位置決め |
コピー位置は意図して選んでください。そのオフセットはスキマティックに保存され、配置と回転に影響します。ビルドの近くなら、この関係を確認しやすくなります。距離だけで保存した選択範囲のブロック数が増えることはありません。
スキマティック設定
すべてのスキマティックファイルにはスキマティック設定があります。スキマティックファイルがサーバーに追加されたばかりの場合、設定はサーバー再起動または/betterstructures reloadの後に生成されます。
.ymlは**.schemと同じフォルダー**に生成されます。plugins/BetterStructures/schematicsは再帰的に走査するため、サブフォルダーのスキマティックにも同じ場所に設定を作ります。schematics全体でファイル名を一意にしてください。構造物の名前が重複した場合は、安定した絶対パス順で最初のファイルを選び、選択したパスと無視したパスを記録します。バイト単位で同一の重複ファイルはどちらを選んでも同じ構造物になるため、警告なしでスキップされます。ファイルは削除せず、選択したファイルが壊れていても無視した重複ファイルに切り替えません。モジュールの名前の重複は引き続き初期化を妨げます。
対応する.schemがない.ymlは構造物を作りません。ローダーは検出したスキマティックファイルを起点にします。選択したスキマティックを1つでも読めない場合、部分的な登録を受け入れず初期化に失敗します。その設定で無効化する予定のファイルでも同じです。
これらの設定では、スキマティックの貼り付けに関する以下の設定を構成できます:
| キー | デフォルト | 必須 | 説明 |
|---|---|---|---|
isEnabled | true | ❌ | スキマティックが有効かどうか。無効の場合、どこにも配置されません。 |
weight | 1.0 | ❌ | 候補となるスキマティック間の相対ウェイト。有限の正の値を使います。2.0は1.0の2倍の重みです。負の値や有限でない値は警告をログに記録して0になり、重みが0の構造物は選ばれません。無効化にはisEnabled: falseを使ってください。 |
pedestalMaterial | 環境別の代替素材 | ❌ | ペデスタルの代替素材。Spigot Material名を使います。地形から採取した素材候補があれば、そちらが優先されます。 |
generatorConfigFilename | - | ✅ | .yml拡張子を含むジェネレーター設定ファイル名。これがないスキマティックはスポーンしません。 |
treasureFile | ジェネレーターのデフォルト | ❌ | この構造物のチェスト用にトレジャーファイルを上書き。一般的にはジェネレーター側を変更する方が良いでしょう。 |
barrelTreasureFilename | ジェネレーターのデフォルト | ❌ | この構造物の樽用にトレジャーファイルを上書き。デフォルトはジェネレーター(またはそのフォールバックであるtreasure_barrel_food.yml)が提供するものになります。 |
戦利品コンテナ: BetterStructuresは、スキマティック内に配置されたチェスト、トラップ付きチェスト、および無着色のシュルカーボックスを自動的に検出し、チェスト用トレジャーファイルで満たします。樽は別途、樽用トレジャーファイル(デフォルトtreasure_barrel_food.yml)を使用して満たされ、generateLootInBarrels: falseによりジェネレーター単位で無効化できます。これらのコンテナをマークするための特別なサインや設定は必要ありません。
スキマティックの宝設定を上書きしても、そのコンテナ種別の有効な宝テーブルがジェネレーター側に必要です。樽はジェネレーターの樽ルート設定も有効にしてください。無効な上書きは警告を出し、ジェネレーターの設定に戻ります。既存の内容は保持し、新しいルートは空きスロットを使います。
新規生成した設定のgeneratorConfigFilenameは空です。generator_surface_global.ymlなどの読み込み済みファイルを選び、/bs reloadを実行してください。有効になるまで構造物は生成できず、/bs placeの補完候補にも出ません。コンソールには対象の設定パスと使用可能なジェネレーターの例が出ます。
無効化されたジェネレーター: generatorConfigFilename が指すジェネレーターの isEnabled が false の場合、スキマティック自身の isEnabled が true であってもそのスキマティックは完全にスキップされます。
設定の詳細
pedestalMaterial
ペデスタルは地表と地下のビルドで、最下部が空気でない各列の下を最大10ブロック埋めます。置換可能な地形と見なされないブロックに達すると止まります。空中と液体の構造物には、この下方向の補充を行いません。同じ素材選択はスキマティック内の岩盤マーカーにも使います。
プラグインは配置範囲周辺の地表と地下の素材を採取し、適切なグループから出現頻度を重みとした抽選で選びます。常に最も多い素材を選ぶわけではありません。設定したpedestalMaterialは該当グループが空の場合のみ使い、候補があるグループを上書きしません。固体ブロック素材を選んでください。代替素材が未指定なら、ネザーはネザーラック、エンドはエンドストーン、その他は石です。空中構造物は素材採取と設定した代替素材を無視するため、岩盤マーカーには環境の既定素材を使います。
generatorConfigFilename
例:generatorConfigFilename: generator_surface_global.yml
ジェネレーターファイルはジェネレーター設定フォルダー内にあります。
treasureFile
詳細についてはトレジャーファイルのドキュメントおよびジェネレータードキュメントを参照してください。
コンテンツのカスタマイズ
BetterStructuresで配布されているものはすべて編集可能です。スキマティックファイルやジェネレーター設定を好みに合わせて変更できます。
上記のコンテンツ作成ガイドは、既存のコンテンツを編集する際にも役立つガイドです。
トラブルシューティング
構造物がスポーンしない場合は、以下を確認してください:
- スキマティックファイルが.schem形式であること
- 有効なジェネレーター設定が指定されていること
- isEnabledオプションが、スキマティック設定とそれが参照するジェネレーターの両方でtrueに設定されていること
- スキマティックがコンテンツパッケージのフォルダ内にある場合、そのパッケージがインストールされていること(
content_packagesファイルでisEnabled: true)。無効なパッケージのフォルダは丸ごとスキップされます。 - WorldEdit/FastAsyncWorldEditのバージョンが互換性があること
.ymlが.schemの隣にあり、plugins/BetterStructures/plugins/BetterStructures/...のような誤った階層にないこと。古いビルドは誤ってそこに書き込んでいました。そのコピーを削除する前に有用な設定を比較して保持し、リロード後に隣接する設定とジェネレーターを確認してください。
構造物のファイル名重複が報告されたら、選択したパスと無視したパスを確認し、必要な構造物と対応する設定に一意の名前を付けてください。modules内の名前の重複は初期化を止めるため、再起動前に解消する必要があります。
.schematic_cache フォルダ
BetterStructuresは変換済みの構造物スキマティックをplugins/BetterStructures/.schematic_cacheに保持し、モジュールとコンポーネントのローダーにはmodulesとcomponentsサブフォルダーを使います。古い.schemではMinecraftのデータ変換が必要な場合があるため、結果を保存して再利用します。コンテンツのリロード時には、変更のない構造物とモジュールのクリップボードをメモリから再利用する場合もあります。
このフォルダを管理する必要はありません:
- ディスク上のエントリはスキマティックの内容、Minecraftのデータバージョン、WorldEditのバージョンに依存します。どれかが変わると対象を再構築します
- ファイルを読んだり削除を検出したりしたとき、現行のキャッシュキーを少なくとも1つ計算できれば、ローダーは古いディスクエントリを整理します。全コンテンツを削除してもキャッシュ全体が自動で空になるわけではありません
- あくまで最適化にすぎません — エントリが欠けている、読み取れない、検証に失敗した場合は、代わりに元の
.schemが読み込まれます
削除しても安全です。次回の起動で単に再構築され、その分だけ時間がかかります。
「Skipped N unsupported legacy block entries」
古いスキマティックを変換すると、MojangのDataFixerUpperがminecraft:bedなどについてUnsupported key:を繰り返し出すことがあります。BetterStructuresは一致するメッセージを数え、キーを1行の情報ログにまとめます。これは変換出力の要約であり、構造物ローダーの別の障害ではありません。
要約処理がサーバーのログ基盤に接続できなければ、一度通知して元のメッセージを表示したままにします。別の読み込みエラーや見た目の問題は個別に調べてください。この要約だけで導入の破損を示したり、貼り付け結果の正しさを確認したりはできません。
スポーンサインが機能しない場合:
- サインの形式が例と正確に一致していることを確認
- EliteMobs/MythicMobsの場合、プラグインがインストールされていることを確認
- エンティティタイプ/モブ名のスペルが正しいか確認
- 具体的なエラーメッセージについてはサーバーログを確認