Custom Biome
概要
Custom Biome を使うと、TypeWriter の Web パネルから独自のバイオームを作成できます。草、葉、水、空、霧の色、雲と太陽の設定、気温、降水量を設定できます。新しいバイオームはバニラのベースバイオームを元に作られるため、モブのスポーン、地物、その他のプロパティは継承され、変更したい部分だけを上書きします。
バイオームの使い方は 2 通りあります。1 つ目は、ブロック半径、WorldEdit の選択範囲、またはキャプチャした領域に対してワールドに塗り込む方法で、後からスナップショットを使って元のバイオームに戻せます。2 つ目は、プレイヤーごとのオーバーレイで、1 人のプレイヤーまたはオーディエンスにだけ表示する方法です。この場合、ワールドは変更されず、他の誰にも変化は見えません。汚染された森がクエスト中だけ現れる、といった演出ができます。
機能
- バイオーム定義 — 色(草、葉、乾燥した葉、水、空、霧、水中の霧、雲、空の光、日の出/日没)、霧と雲の距離、太陽・月・星の設定、気温、降水量。
- プリセット — 複数のバイオーム間でパレットを共有し、異なる部分だけを上書きできます。
- ライブ登録 — 可能な場合、バイオームはサーバーのレジストリに注入され、再起動後も残るよう、生成されたデータパックにも書き込まれます。
- ワールドへの塗り込み — プレイヤーの周囲または領域全体にバイオームを適用します。元に戻すためのスナップショットも任意で作れます。
- プレイヤーごとのオーバーレイ — アクション、オーディエンス、またはシネマティックを通じて、1 人のプレイヤーまたはオーディエンスにバイオームを表示します。
- 出入りイベント — プレイヤーがバイオームに入ったとき、または出たときにエントリを発動します。
- 発見記録 — 各プレイヤーが訪れたバイオームを記録し、ファクトやクエストで利用できます。
- ファクト、変数、プレースホルダー — 現在のバイオーム、そのプロパティ、発見数を読み取れます。
- オペレーター用コマンド — バイオームの一覧表示、プレイヤーのいる場所のバイオームの確認、塗り込み、更新、領域のキャプチャ。
- Folia 対応 — 書き込みは、各チャンクを所有するリージョンでスケジュールされます。
インストール
- PacketEvents をインストールします。オーバーレイとチャンクの更新はこれを使って送信されます。ない場合、オーバーレイは無効になります。
- TypeWriter の Quest 拡張機能を、Web パネルの Extensions タブからインストールします(Objective が使用します)。
- 任意: ゲーム内で作成した選択範囲を塗り込めるように、WorldEdit または FastAsyncWorldEdit をインストールします。
- 任意: 下記のプレースホルダーを使うには、PlaceholderAPI をインストールします。
- Custom Biome の JAR を
plugins/Typewriter/extensions/に置き、サーバーを再起動します。
バイオーム定義は、ワールドの datapacks フォルダにある typewriter_custom_biomes という名前のデータパックに書き込まれます。
視覚的な属性(霧の距離、雲の高さ、太陽・月・星の設定)は、ソース上で Minecraft 1.21.11 以降向けと記されています。それより古いバージョンでは、色と気候のみが適用されます。
はじめに
紫色の森を作り、クエストのステップでプレイヤーに表示する手順です。
- TypeWriter の Web パネルで manifest ページを開き、Custom Biome Definition エントリを追加します。
biomeId(小文字とアンダースコア。例:corrupted_forest)を設定し、namespaceはtypewriterのままにします。baseBiomeをminecraft:forestに設定します。- 変更したい色を 16 進数で入力します。例:
grassColorに#6a3d9a、foliageColorに#4b2a73。空のフィールドはベースバイオームから継承されます。 - パブリッシュしたら、ゲーム内で
/tw biome listを実行し、バイオームが有効になっていることを確認します。再起動待ちと表示されている場合は、サーバーを再起動してください。 - manifest ページで Biome Overlay Audience を追加し、
biomeで定義を選び、クエストのステップに対応するオーディエンスの下に配置します。プレイヤーはオーディエンスにいる間そのバイオームを見ることができ、オーディエンスから出ると本来のバイオームに戻ります(restoreOnExit)。 - 特定のゾーンに限定するには、
cornerAとcornerBを設定するか、ゲーム内で WorldEdit の選択範囲を作って/tw biome region <entry>を実行し、コーナーを自動入力します。
ワールド自体を変更するには、アクションシーケンスで Apply Biome または Paint Biome Region を使います。Restore Biome で元に戻したい場合は、塗り込みに snapshotId を付けてください。
空と霧が共通のバイオームのグループには、Custom Biome Preset を作成し、各定義の preset で選択します。定義に設定した値はプリセットより優先され、プリセットはベースバイオームより優先されます。
仕組み
塗り込みはバイオームをワールドデータに書き込むため、全プレイヤーに影響し、再起動後も残ります。オーバーレイはプレイヤーのクライアントにだけ送られます。何も保存されず、オーバーレイを取り除けば本来のバイオームが戻ります。複数のオーバーレイが同じチャンクを覆っている場合は、最後に適用されたものが表示され、それを取り除くと前のものが現れます。
ファクト、変数、プレースホルダーは、デフォルトでプレイヤーが見ているバイオーム(PLAYER_VIEW、オーバーレイを含む)を読み取ります。ワールドが実際に持っているバイオームを読み取るには、ファクトと変数で source を REAL_WORLD に設定します。
設定
実行時のデータは plugins/Typewriter/custombiome/ に保存されます。
| フォルダ | 内容 |
|---|---|
discovery/ | プレイヤーごとに 1 つの JSON ファイル(<uuid>.json)があり、訪れたバイオームを記録しています。 |
snapshots/ | snapshotId が設定されているときに、Paint Biome Region が記録したバイオーム。 |
コマンド
ルートコマンドは /tw biome で、typewriter.biome が必要です。各サブコマンドにも、それぞれ個別の権限が必要です。
| コマンド | 説明 |
|---|---|
/tw biome | コマンドの一覧を表示します。 |
/tw biome list | カスタムバイオームを一覧表示し、それぞれが有効か、再起動待ちか、未登録かを示します。 |
/tw biome info [player] | プレイヤーが立っているバイオームの名前、ID、カスタムかどうか、気温、降水量、ベースバイオームを表示します。 |
/tw biome apply <biome> [radius] | 自分または対象プレイヤーの周囲に、ブロック単位の半径でバイオームを塗り込みます。 |
/tw biome refresh [radius] | この拡張機能がプレイヤーの近くで塗り込んだチャンクについて、バイオームデータ(半径 1〜16 チャンク)を再送信します。 |
/tw biome region <entry> | WorldEdit の選択範囲を、領域エントリの cornerA と cornerB にコピーします。その後、ページをパブリッシュしてください。 |
編集可能なテキスト
/tw biome コマンドがゲーム内に表示するテキストはすべて TypeWriter のスニペットなので、何も再ビルドせずに言い換え、翻訳、色の変更ができます。plugins/Typewriter/snippets.yml を開き、content.custombiome 配下のキーを見つけて値を変更し、/tw reload を実行します。エクステンションは起動時にすべてのスニペットをデフォルトのテキストで登録するため、初回起動後にファイルに表示されます。
テキストは MiniMessage です。テキスト内の {name} は、表に記載された値に置き換えられます。省略したプレースホルダーは単に表示されず、存在しないプレースホルダーはそのまま残ります。PlaceholderAPI のプレースホルダー(%...%)も、コマンドがプレイヤーによって実行された場合に解決されます。短い返信の Typewriter 返信プレフィックス(Typewriter »)だけはエンジン側のもので、これらのスニペットには含まれません。サーバーコンソールのログは英語のままです。
スニペット(content.custombiome. 配下) | デフォルト | プレースホルダー |
|---|---|---|
command.list.empty | <yellow>No custom biomes registered.</yellow> | なし |
command.list.header | <gradient:#00d4ff:#0099ff><b>Custom Biomes ({count})</b></gradient>、前に空行あり | {count} |
command.list.strategy | <dark_gray>Strategy: {strategy}</dark_gray>、後ろに空行あり | {strategy} |
command.list.strategy_live | live registry injection (reflection) | なし |
command.list.strategy_unsupported | unsupported ({reason}) | {reason} (技術的な内容、英語) |
command.list.icon_live, icon_waiting, icon_missing | • は緑、⚠ は黄、✖ は赤 | なし |
command.list.status_live, status_waiting, status_missing | ホバーテキスト: Live in the registry, Written to the datapack — needs a restart, Not registered | なし |
command.list.entry | バイオームごとに 1 行。ホバーテキストとクリックでコピーに対応 | {icon}, {status}, {name}, {key}, {temperature}, {downfall} |
command.list.temperature, command.list.downfall | T:{value} と D:{value}(グレー) | {value} |
command.info.header | Biome Info for {player} | {player} |
command.info.name, id, temperature, downfall, base_biome | Name:, ID:, Temperature:, Downfall:, Base Biome:。続けて値が表示されます | {value} |
command.info.custom_yes, custom_no | Custom: Yes と Custom: No | なし |
command.help.title | Custom Biome Commands | なし |
command.help.list, info, apply, refresh, region | コマンドごとに 1 行のヘルプ | なし |
command.region.no_selection | No WorldEdit selection (or WorldEdit is not installed). | なし |
command.region.page_not_found | Could not find the page holding '{entry}'. | {entry} |
command.region.write_failed | Could not write the region: {failures} | {failures} (技術的な内容、英語) |
command.region.done | Region of {entry} set to {min} → {max} in {world}. | {entry}, {min}, {max} (x, y, z の形式), {world} |
command.region.publish_hint | Publish the page for it to take effect. | なし |
command.refresh.none | No painted chunks near {player} to refresh. | {player} |
command.refresh.done | Resent biome data for {chunks} painted chunk(s) to {player}. | {chunks}, {player} |
command.apply.unknown | Unknown biome: {biome} | {biome} |
command.apply.unknown_hint | Use /tw biome list to see available custom biomes. | なし |
command.apply.nothing | Nothing to paint at that location. | なし |
command.apply.done | Painting {biome} over {cells} cell(s) across {chunks} chunk(s). | {biome}, {cells}, {chunks} |
placeholder.unknown | unknown | なし |
/tw biome list の 3 つのホバー用スニペットは、シングルクォートで囲まれた MiniMessage の引数の中に置かれるため、シングルクォートを含めることはできません。
placeholder.unknown は、カスタムではないバイオームに対して %typewriter_temperature%、%typewriter_downfall%、Biome Property 変数が返す値です。%typewriter_is_custom% が返す true と false は、条件がこれらと比較するため固定のままです。
権限
| 権限 | 許可される内容 |
|---|---|
typewriter.biome | /tw biome コマンドツリーへのアクセス。 |
typewriter.biome.list | /tw biome list |
typewriter.biome.info | /tw biome info |
typewriter.biome.apply | /tw biome apply |
typewriter.biome.refresh | /tw biome refresh |
typewriter.biome.region | /tw biome region |
プレースホルダー
typewriter エクスパンションが提供する PlaceholderAPI のプレースホルダーです。プレイヤー向けのプレースホルダーは、プレイヤーに表示されているバイオームを読み取ります。
| プレースホルダー | 返す値 |
|---|---|
%typewriter_current% または %typewriter_id% | プレイヤーのいる場所のバイオームキー。例: minecraft:plains。 |
%typewriter_name% | バイオームの読みやすい名前。 |
%typewriter_key% | キー部分のみ。 |
%typewriter_namespace% | 名前空間部分のみ。 |
%typewriter_is_custom% | true または false。 |
%typewriter_temperature% | カスタムバイオームの気温。それ以外は unknown。 |
%typewriter_downfall% | カスタムバイオームの降水量。それ以外は unknown。 |
%typewriter_base% | カスタムバイオームのベースバイオーム。それ以外はバイオームキー自体。 |
%typewriter_count% | 登録されているカスタムバイオームの数。 |
%typewriter_list% | カスタムバイオームの表示名(カンマ区切り)。 |
%typewriter_discovered_count% | プレイヤーが訪れたバイオームの数。 |
%typewriter_discovered_list% | プレイヤーが訪れたバイオームのキー。 |
この拡張機能は、上記のプレフィックスなしの名前(%typewriter_current%、%typewriter_count% など)に応答します。ソース内のコメントには custombiome_ プレフィックスについての記述がありますが、コードが一致させるのはプレフィックスなしの名前だけです。
エントリ
20 件のエントリー(拡張機能のソースから生成)。
アクション5
- Apply Biome ActionApply a biome to a location with optional radius
- Paint Biome Region ActionPaint a biome over a region, with an optional snapshot to undo it later
- Player Biome Overlay ActionShow a biome to a single player without changing the world
- Refresh Biome Chunks ActionRefresh biome data for chunks around the player
- Restore Biome ActionRestore biomes previously recorded by a paint snapshot
イベント2
- Enter Biome EventTriggered when a player enters a biome
- Leave Biome EventTriggered when a player leaves a biome
目標1
- Explore Biome ObjectiveObjective completed by discovering one or more biomes
ファクト4
- Biome Discovery FactHow many biomes the player has discovered, or whether specific ones were found
- Custom Biome Count FactReturns the number of registered custom biomes
- Is in Custom Biome FactReturns 1 if player is in a custom biome, 0 otherwise
- Player Biome FactExpose the player's current biome as a fact value
オーディエンス2
- Biome Overlay AudienceShow a biome to the audience without changing the world
- Biome Region AudienceKeep the players standing inside a region defined by two captured corners
シネマティック1
- Biome Transition CinematicChange the biome a player sees during a cinematic
変数3
- Biome Property VariableReturns a property of the player's current biome
- Current Biome VariableReturns the player's current biome name
- Custom Biome List VariableReturns a list of registered custom biomes
マニフェスト2
- Custom Biome DefinitionDefine a custom biome with colors and climate settings
- Custom Biome PresetA reusable set of colors and visual attributes shared by several biomes
トラブルシューティング
/tw biome list に警告マークと「needs a restart」が表示される。 サーバーがライブレジストリにバイオームを追加できなかったため、生成されたデータパックにしか存在していません。サーバーを再起動してください。理由はコンソールに一度だけ出力されます。
アクションやイベントでバイオームが見つからない。 バイオームの識別子は namespace:id の形式です。例: typewriter:corrupted_forest。正確なキーは /tw biome list で確認してください。不明な識別子は警告(unknown biome '…')としてログに記録され、アクションは何も行いません。
プレイヤーにオーバーレイがまったく表示されない。 オーバーレイには PacketEvents が必要です。ない場合、コンソールに PacketEvents unavailable: per-player biome overlays are disabled と表示されます。また、プレイヤーがオーディエンスに入っていること、バイオーム(カスタム定義または vanillaBiome)が設定されていること、領域の場合は両方のコーナーが読み込まれたワールド内にあることも確認してください。
Paint Biome Region が何もしない。 region が WORLDEDIT_SELECTION の場合、トリガーしたプレイヤーが WorldEdit の選択範囲を持っていて、WorldEdit がインストールされている必要があります。コンソールには has no WorldEdit selection とログ出力されます。それ以外の場合は RADIUS_AROUND_PLAYER を使ってください。
Restore Biome がスナップショットは存在しないと言う。 スナップショットは、塗り込みアクションに snapshotId がある場合にのみ記録され、復元には同じ名前を使う必要があります。consume がオンの場合、復元後にスナップショットは削除されます。