Temporary Dimension
概要
Temporary Dimension は、プレイヤーを、テンプレートワールドの新しいコピーに送ります。コピーは、プレイヤーが入るときに Advanced SlimeWorld のテンプレートから作成され、メモリ上にのみ存在し、プレイヤーが退出するとすぐにアンロードされるため、毎回の訪問がテンプレートから始まります。共有も保存もしてはならない、ダンジョン、チュートリアル、プライベートルーム、カットシーンのセット向けに作られています。
ディメンションは、Temporary Dimension Definition エントリーで 1 度だけ記述します。テンプレートワールド(ランダムに 1 つが選ばれます)、プレイヤーが出現するエリア、入場に必要なパーミッション、ブロックするコマンド、入場時と退出時にトリガーするものです。プレイヤーは、コマンド、TypeWriter のアクション、または管理者コマンドで入場し、退出した場所にそのまま戻ります。
TypeWriter の BTC ビルドと BTC Core(Paper/Folia)上で動作し、AdvancedSlimePaper サーバーにも対応しています。作成、スポーン地点の検索、テレポートは非同期で、Folia に対応しています。
機能
- インスタンスワールド — 入場のたびに、テンプレートから
tempdim_<uuid>という名前の新しいワールドを作成し、空になったら削除します。 - 複数のテンプレート — 複数のテンプレートワールドを列挙すると、ランダムに 1 つが選ばれます。
- 安全なランダムスポーン — ボックス内のランダムな地点、続いてその中心周辺を検索し、危険でない固体ブロックの上に空気がある場所だけを受け入れます。
- スポーンブロックのホワイトリスト — スポーンを、選択したブロックタイプに制限します。
- コマンドのブラックリスト — 内部にいる間、コマンド(および
plugin:形式)をブロックします。 - 元の場所に戻る — プレイヤーは、退出したときの位置、向き、ワールドに戻ります。
- 入場と退出のトリガー — 入場時と退出時に、任意の TypeWriter エントリーを実行し、MiniMessage のメッセージを送信します。
- ディメンションごとのパーミッション — ディメンションごとのパーミッション。コマンドで確認され、任意でアクションでも確認されます。
- ファクトとプレースホルダー — プレイヤーがディメンションにいるか、どれにいるか、他に誰がいるかを把握できます。
インストール
- サーバーを BTC Core、または AdvancedSlimePaper で実行します。エクステンションは、実行時にどちらかを探します。
- Temporary Dimension の JAR を
plugins/Typewriter/extensions/に配置し、サーバーを再起動します。 - テンプレートワールドを、Slime ワールドとして準備します。
- BTC Core では、
fileSlime ローダーがワールドを読み取る場所(デフォルトではサーバーフォルダー内のslime_worlds)に配置します。 - AdvancedSlimePaper では、テンプレートは、正確なテンプレート名で読み込まれた Slime ワールドである必要があり、メモリからコピーされます。
- BTC Core では、
- ディメンションに設定するパーミッションを、プレイヤーに付与します。
はじめに
プレイヤーが /typewriter tempdim dungeon1 で入れるダンジョンを作成します。
- ダンジョンを、
dungeon1_templateという名前の Slime ワールドとして構築し、サーバーがテンプレートを期待する場所(上記を参照)に配置します。 - TypeWriter の Web パネルでスタティックページを開き、Temporary Dimension Definition エントリーを追加します。
commandNameをdungeon1、permissionをdimension.dungeon1に設定し、templateWorldsにdungeon1_templateを追加します。spawnZoneを、入口の周囲の 2 つの対角の角(x1、y1、z1とx2、y2、z2)に設定します。テンプレートワールドのブロック座標を使用します。- 任意で、
blacklistedCommands(たとえばhome、spawn、tpa)を入力し、onEnterとonExitにトリガーをリンクします。 - Publish し、テスト用のプレイヤーにパーミッションを付与して、
/typewriter tempdim dungeon1を実行します。
クエストや NPC から入場するには、代わりに Enter Temporary Dimension を使用し、退出するには Leave Temporary Dimension を使用します。
ディメンションのコマンドは /typewriter tempdim のサブコマンドです。エクステンションは、トップレベルのコマンドを登録しません。/dungeon1 のような短いコマンドは、ページ上の TypeWriter の custom_command エントリーで公開でき、コマンドの登録をリロードに対して安全に保てます。
仕組み
プレイヤーが同時にいられる一時的なディメンションは、1 つだけです。作成に失敗した場合(テンプレートがない、テンプレートが見つからない、10 秒以内に安全なスポーン地点が見つからない、テレポートの失敗)、プレイヤーはその場にとどまり、エラーメッセージを受け取り、作りかけのワールドは削除されます。プレイヤーが切断した場合は、テレポートなしでインスタンスから外され、ワールドが空になると閉じられます。すべてのインスタンスは、TypeWriter がリロードまたは停止するときに閉じられます。
コマンド
すべてのコマンドは /typewriter の下にあります。
| コマンド | 説明 |
|---|---|
/typewriter tempdim <commandName> | commandName が一致するディメンションに入ります。ディメンションの permission が必要です(空の場合は全員に開放)。 |
/typewriter tempdim enter <dimension> | エントリー一覧から選んだ任意のディメンションに、そのパーミッションを無視して入ります。typewriter.temporarydimension.admin が必要です。 |
/typewriter tempdim leave | 現在のディメンションを退出し、元の場所に戻ります。パーミッションは不要です。 |
/typewriter tempdim list | アクティブなインスタンスを、プレイヤー数とワールド名とともに一覧表示します。typewriter.temporarydimension.admin が必要です。 |
commandName に使用できるのは、英字、数字、_、-、: のみで、enter、leave、list にすることはできません。コマンドはエントリーの読み込み時に構築されるため、変更した後は Publish してください。
パーミッション
| パーミッション | 許可される内容 |
|---|---|
typewriter.temporarydimension.admin | /typewriter tempdim enter と /typewriter tempdim list。 |
デフィニションの permission フィールド | /typewriter tempdim <commandName>、そして checkPermission がオンの場合は、入場アクション。 |
プレースホルダー
MiniPlaceholders のエクスパンション tempdim で、MiniMessage のタグとして使用できます。プレイヤーがディメンションにいない場合は、空の値、または 0/false を返します。
| プレースホルダー | 戻り値 |
|---|---|
<tempdim_in_dimension> | true または false。 |
<tempdim_in_dimension_bool> | 数値の比較用の 1 または 0。 |
<tempdim_current> | 現在のディメンションのエントリーの名前。 |
<tempdim_current_id> | 現在のディメンションのエントリー ID。 |
<tempdim_current_world> | インスタンスのワールド名(tempdim_...)。 |
<tempdim_players> | インスタンス内のプレイヤー数。 |
<tempdim_players_list> | インスタンス内のプレイヤーの名前。カンマ区切り。 |
デフィニションのメッセージでは、<dimension> はエントリー名に置き換えられ、ブロックされたコマンドのメッセージでは、<command> はブロックされたコマンドに置き換えられます。
エントリー
5 件のエントリー(拡張機能のソースから生成)。
アクション2
- Enter Temporary Dimension ActionEnter a temporary dimension
- Leave Temporary Dimension ActionLeave current temporary dimension
ファクト2
- In Specific Dimension FactCheck if player is in a specific dimension
- In Temporary Dimension FactCheck if player is in a temporary dimension
マニフェスト1
- Temporary DimensionTemporary Dimension Definition
トラブルシューティング
Unable to prepare the temporary dimension. テンプレートを複製できませんでした。templateWorlds のテンプレート名が Slime ワールド名と一致していること、ワールドが slime_worlds(BTC Core)にあるか、読み込まれていること(AdvancedSlimePaper)を確認し、原因についてはログの警告を読んでください。BTC Core でも AdvancedSlimePaper でもないサーバーでは、ログに unsupported server platform for SlimeWorld と表示されます。
何も起こらず、ログに no template configured と表示される。 templateWorlds が空か、空白の名前しか含まれていません。
No safe spawn was found in the temporary dimension. テストされた地点のどれにも、溶岩、火、サボテン、マグマではない固体ブロックの上に、2 ブロックの空気がありませんでした。spawnZone を広げ、テンプレートの固体の地面(Y 座標を含む)を覆っていることを確認し、spawnBlockWhitelist に床のブロックが含まれていることを確かめてください。
You are already in a temporary dimension. プレイヤーは、1 つのインスタンスにしかいられません。まず、退出のコマンドかアクションを使用してください。
ディメンション内で、コマンドがまだ機能する。 blacklistedCommands には、スラッシュなしでコマンド名を記述してください。照合は最初の単語に対して大文字小文字を区別せずに行われ、name:command 形式もブロックしますが、別の名前で登録されたエイリアスはブロックしません。
編集後、ディメンションのコマンドが存在しない。 ディメンションのコマンドは、エントリーから生成されます。ページを Publish し、commandName に使用できる文字のみが含まれ、他のディメンションと重複していないことを確認してください。