Puzzle
概要
Puzzle は、ワールド内の場所を、解けるパズルに変えます。ブロックを押して穴に入れる、シーケンスを繰り返す、レバーを順番に操作する、レーザービームの向きを変えるなど、9 種類のメカニクスから選べます。各パズルは、Web パネルで配置するオーディエンスエントリーです。結果は、トリガー(onStart、onComplete、onFail、onTimeout、onLifespanExpire)と任意のファクトを通じて、TypeWriter の他の部分に伝えられます。
ボードの大部分はクライアント側で描画されます。ブロック、ハイライト、プレビュー、レーザーのパーティクルは、パズルを解くプレイヤーに送られるパケットであるため、2 人のプレイヤーが、互いの進行状況を見ることなく同じボードに取り組めます。一部のメカニクスは実際にワールドに作用します。アイテムフレームパズルは本物のアイテムフレームを回転させ、パターンパズルは ghostBlocks がオンでない限り、本物のブロックを設置します。
パズルは、作成した場所に属します。そのパズルの座標があるワールドにいて、いずれかの座標から activationRadius ブロック以内にいるプレイヤーに対してのみ動作します。ボードに近づくとセッションが始まり、離れるとセッションが終了してクライアント側のボードが消去されます。
機能
- 9 種類のパズル — ブロック押し、記憶シーケンス、レーザーグリッド、レバーの順番、パターン配置、協力型の感圧板、アイテムフレーム、ダイヤル錠、台座への供物。
- 共通のライフサイクル — すべてのパズルに、制限時間、最大ミス回数、失敗後のクールダウン、有効期間、ヒント、完了メッセージがあります。
- あらゆる場面でトリガー — 開始、完了、失敗、タイムアウト、有効期間の終了のそれぞれで、TypeWriter エントリーを開始できます。
- ファクト報酬 — パズルが解かれると、ファクトが
amountだけ増加します。 - パズルチェーン — 複数のパズルを順番に実行し、チェーン全体に反応できます。
- 空間による制限 — ワールドチェックと有効半径により、別のディメンションや遠く離れた場所にボードが現れるのを防ぎます。
- 統計 — プレイヤーごとの試行回数、クリア回数、ベストタイムを記録し、リーダーボードコマンドで確認できます。
- ステータスファクト — プレイヤーにとってパズルが解決済みか、進行中かを読み取れます。
- Folia 対応 — ワールドへのアクセスは、そのパズルを所有するリージョン上で実行されます。
インストール
- 公式の TypeWriter
Basicエクステンションをインストールします。パズルが使用する共通タイプ(サウンド、アイテム、変数)が含まれています。 - Puzzle の JAR を
plugins/Typewriter/extensions/に配置し、サーバーを再起動します。 - 任意: 試行回数、クリア回数、ベストタイムを保存したい場合は、ページに Puzzle Artifact エントリーを追加します(「設定」の警告を参照)。
はじめに
3 つのレバーで開く扉のパズルを作成します。
- TypeWriter の Web パネルでマニフェストページを開き、Lever Order エントリーを追加します。
leversに 3 つのレバーを追加します。それぞれ、ゲーム内でレバーブロックのpositionを取得し、orderIndexを、プレイヤーが操作すべき順番である0、1、2に設定します。- ヒントが
1/3、2/3、3/3と表示されるように、amountを3に設定します。resetOnWrongをオンにし、ミスの後に待ち時間を設けたい場合はcooldownOnFailを5にします。 onCompleteを扉を開けるシーケンスにリンクし、factを報酬を保存するキャッシュ可能なファクトにリンクします。このファクトは、パズルが解かれたことを確実に記憶する方法でもあります。- 必要に応じて、パズルをクエストのオーディエンスなどのオーディエンスフィルターの配下に置き、該当するプレイヤーに対してのみ動作するようにします。
- Publish し、エクステンションをリロードまたは再起動して、レバーに近づきます。正しい順番で操作するとパズルが解けます。間違ったレバーを操作すると、レバーの状態がリセットされ、
onFailが発火します。
パズルエントリーは、エクステンションの読み込み時に登録されます。パズルを追加した後は、/typewriter puzzle start を使う前に、TypeWriter をリロードするか再起動してください。
仕組み
セッション。 セッションは、プレイヤーが半径内に入ったときに始まります。進行状況、ミスの回数、失敗後のクールダウンをクリアし、timeLimit と lifespan を開始して、onStart を発火します。そのため、maxAttempts はセッションごとの持ち分です。使い切ったプレイヤーは、いったん離れて戻ってくることができます。プレイヤーがすでに解いたパズルが、そのプレイヤーに対して再び開かれることはありません。
解決済みのパズルは無効になります。 プレイヤーが Block Push、Combination Lock、Lever Order、Laser Grid を解決すると、そのプレイヤーにはもう盤面が描かれず、操作もキャンセルされません。オーディエンスに戻っても同じです(フィルターの点滅、再接続など)。解決済みパズルのレバーとボタンは通常のブロックとして動作し、解決済みの Pedestal はアイテムの回収を妨げなくなります。
キャンセルされたクリック。 サーバーは、キャンセルされたクリックに対してクリックされたブロックの実際の状態を返すため、クライアント側で描いたブロックが消えてしまいます。そのため、キャンセルされたクリックのたびに、1 ティック後に盤面が再描画されます(Memory のボタン、Pattern のグリッド、拒否された配置、拒否された押し出し)。描かれたミラーやレバーを左クリックで叩いた場合も同様です。
完了は 1 回だけ発火します。 ファクトの書き込み、完了メッセージ、onComplete、チェーンの進行は、受理された 1 つの結果から生じるため、クリックを繰り返しても二重にトリガーされることはありません。
進行状況。 正しいステップごとに、進行状況が amount を上限に 1 ずつ増えます。hintMessage の {progress} と {total} は、進行状況と amount を表示します。パズルは、自身の大きさから amount を設定しないため、実際のステップ数を自分で入力してください。
共通オプション
すべてのパズルに、次のフィールドがあります。
| フィールド | 意味 |
|---|---|
fact | パズルが解かれたときに amount だけ増加する、キャッシュ可能なファクト。 |
amount | 進行状況の最大値と、ファクトに加算される報酬。 |
timeLimit | パズルがタイムアウトするまでの秒数。0 で無効。 |
cooldownOnFail | 失敗後にプレイヤーが待つ必要がある秒数。 |
maxAttempts | セッションごとに許容されるミスの回数。0 で制限なし。 |
resetOnWrong | ミスをしたときに進行状況をクリアするかどうか。 |
showHints, hintMessage | 各ステップの後に表示されるチャットのヒント。{progress} と {total} を使用できます。 空にすると何も送信されません。 |
completionMessage | パズルが解かれたときに 1 回送信されます。空にすると無効になります。デフォルトは <green>Puzzle completed! です。 |
onStart, onComplete, onFail, onTimeout, onLifespanExpire | プレイヤーに対してトリガーされるエントリー。 |
lifespan | プレイヤーの行動にかかわらず、パズルがそのプレイヤーに対して失効するまでの秒数。0 で無効。 |
activationRadius | パズルの座標を中心とするブロック数。0 にすると距離チェックはなくなりますが、ワールドチェックは常に適用されます。デフォルトは 16 です。 |
criteria | パズルの参加者になるためにプレイヤーが満たす必要のある条件。 |
共有パズル
isShared が有効で、パズルの fact にグループ(パーティー、チーム)がある場合、グループは 1 つのパズルをプレイします。プレイヤーの各ステップ、ミス、クールダウンは、そのグループのオンラインのプレイヤーにコピーされます。最初に解いたメンバーがグループ全体のために解いたことになります。fact は amount だけ 1 回増え、各メンバーは完了メッセージ、onComplete、チェーンのステップを 1 回ずつ受け取ります。不在だったメンバーは、戻ったときに受け取ります。プレイヤーがパズルの完了を受け取るのは、グループを変えても最大 1 回です。そのプレイヤーに関わる管理者リセットだけが、再び受け取れるようにします。
- 解決はグループごとに保存されます。死亡や再接続でもリセットされず、何も再度報酬されません。死亡や切断の後に再プレイできるソロのパズルとは異なります。
- 統計と各プレイヤーの盤面は個人のままです。
factにグループがない場合や、そのグループに属さないプレイヤーでは、何も共有されません。Coop Pressure はisSharedを無視します。すでに全参加者に対してパズルを完了させるためです。 - もう一度プレイするには
/typewriter puzzle admin reset <player> <id>を使います。そのプレイヤーのグループ全体に対してパズルが再び開かれます。
グループの解決は Puzzle Artifact に保存されます。ない場合、記録はメモリ上にしか存在しません。サーバーを再起動すると、グループはパズルを再び解くことができ、再び報酬が支払われます。isShared を使う前にアーティファクトを追加してください。拡張機能の古いビルドに戻すと、そのビルドは共有記録なしでアーティファクトを保存するため、共有記録も失われ、報酬が再び支払われます。解決は次回の保存(30 秒ごと)で書き込まれます。その間にクラッシュすると失われる可能性があります。
パズルタイプ
| エントリー | プレイヤーの操作 | 主なフィールド |
|---|---|---|
| Block Push | ブロックを左クリックまたは右クリックして、プレイヤーが向いている方向に 1 ブロック押し、すべての目標の穴を埋めます。 | pushBlocks, targetHoles(acceptedMaterial あり), blockMaterial, holeMaterial。ブロックの数は穴の数と同じでなければなりません。 allowPull は効果がありません(引く動作はまだ実装されていません)。 |
| Memory Sequence | ボタンが光るのを見て、同じ順番でクリックします。シーケンスはセッションごとにランダムです。 | buttons(2 つ以上), sequenceLength, highlightDuration, stepGap, inputDelay(tick), highlightMaterial。 |
| Laser Grid | ミラーを右クリックして回転させ、すべてのレシーバーに、その色のビームを当てます。 | emitters(色、向き), mirrors(rotatable, initialDirection), receivers(requiredColor), maxReflections, maxBeamLength, beamDensity。 |
| Lever Order | orderIndex の順にレバーを右クリックします。間違ったレバーを操作すると、すべてリセットされます。 | levers(position, orderIndex)。 |
| Pattern Placement | グリッド上にブロックを置いて、パターンを再現します。 | pattern, gridOrigin, columns, previewOffsetY, ghostBlocks, tolerance。 |
| Coop Pressure | 複数のプレイヤーが別々のプレートに乗り、数秒間保持します。 | plates, requiredPlayers, holdDuration(秒)。 |
| Item Frame | 既存のアイテムフレームにアイテムを入れ、目標の角度まで回転させます。 | frameTargets(correctRotation 0 から 7, requiredItem), checkItem。 |
| Combination Lock | コードの順番に数字ブロックをクリックします。 | digits(位置)、code(数字のインデックス。0 から数えます)。 |
| Pedestal | アイテムを持って台座ブロックを右クリックするか、その近くでアイテムをドロップまたは拾います。 | targetPosition, requiredItem, consumeItem, pickupRadius, consumeDroppedItem。 |
各タイプの詳細は次のとおりです。
- Laser Grid。 ビームは、エミッターから 1 ブロック離れた位置から始まり、まっすぐ進みます。ミラーは、ミラーが向いている方向にビームを送ります。ミラーを右クリックすると、クリックした面とは反対の向きに設定され、上面または下面をクリックすると、時計回りに回転します。固体ブロックはビームを止めます。すべてのレシーバーに
requiredColorの色のビームが当たると、パズルが解けます。ビームはパーティクルで表示されます。 ミラーは右クリックしても消えません。クリック後に盤面が再描画されます。ビームはブロックの中心を通って描画され、各ミラーの位置でちょうど曲がります。beamDensityは1ブロックあたりのパーティクル数です。ビームの長さは最大maxBeamLengthブロック(デフォルト64。0以下は64で、無制限にはなりません)で、チャンクを読み込まず、読み込み済みのワールドの端で止まります。ビームがより長い盤面ではmaxBeamLengthを上げてください。 - Block Push。 1 回の押し出しで、ブロックはプレイヤーが向いている方向に 1 マス動きます。開始マスに押し戻されたブロックは常にそこで受け入れられ、ブロックが上を通り過ぎた後の目標の穴は再び描かれます。ワールド内の開始マスは空(空気)にしておいてください。 そこに実際のブロックがあるとクライアントでは隠れますが、サーバーでは固体のままなので、誰もその上に立てません。拒否された押し出し(壁や別のブロック)は、押し出しが成功するまで、ブロックと目標マスごとに 1 回の失敗として数えられます。壁に対してクリックを押し続けても
maxAttemptsは消費されません。 - Lever Order。 レバーは、プレイヤーが盤面に到達した時点でワールド内にある状態で待機し、そこから切り替えられ、リセットまたは順序の誤りの後にその状態へ戻されます。オンの状態で待機するレバーも同様です。失敗のクールダウン中のクリックは、実際のレバーには届きません。
- Combination Lock。 番号は 0 から始まります。
digitsの最初に記載された位置が数字 0、2 番目が数字 1、以下同様です。codeはこれらのインデックスをクリックする順に並べます。例えば、digitsに 4 つのボタンがある場合、コード[2, 0, 3]は、3 番目のボタン、1 番目のボタン、4 番目のボタンの順を意味します。数字の範囲外のcodeの値があると、錠はすべての入力を無視します。サーバーログにその値が記録されます。 - Pattern Placement。
patternは、素材を行ごとにcolumns列幅でリストし、その長さはcolumnsの倍数でなければなりません。グリッドは、gridOriginの Y 座標の水平面上に置かれ、列は X 軸方向、行は Z 軸方向に並びます。プレビューは、previewOffsetYブロック上空に浮かびます。ghostBlocksがオンの場合、半透明のバージョンがグリッド自体の上に描画され、正しいブロックはクライアント側に表示され、プレイヤーからアイテムを消費します。間違った設置は常にキャンセルされます。toleranceは、進行状況がリセットされるまでに許容される間違った設置の回数です。 - Coop Pressure。 プレートは、プレイヤーの足がそのブロックまたはその上のブロックにあるときにカウントされます。プレートごとに 1 人のプレイヤーです。オーディエンス内のすべてのプレイヤーが参加するため、
/typewriter puzzle join <entry id>で追加してください。プレートがholdDurationのあいだ保持されると、すべての参加者がパズルを完了します。 - Item Frame。 フレームは、設定された座標にすでに存在している必要があります。パズルがフレームを生成することはありません。空のフレームは、プレイヤーの手から取った
requiredItemのみを受け入れます。アイテムの入ったフレームをクリックするたびに 1 段階(45 度)回転し、correctRotationは、正解となる 0 から 7 の段階数です。フレームは本物のエンティティなので、回転は全員に見えます。 - Pedestal。
requiredItemは、右クリックで渡すか、台座からpickupRadiusブロック以内にドロップします。一致するドロップアイテムは、consumeDroppedItemがオンの場合に削除されます。
コマンド
すべてのコマンドは /typewriter(エイリアス /tw)のサブコマンドです。<id> はパズルのエントリー ID です。パーミッションが必要なのは admin コマンドのみです。
| コマンド | 説明 |
|---|---|
/typewriter puzzle | 最初の Puzzle Menu エントリーのチャットメニューを開きます。存在しない場合はその旨を通知します。 |
/typewriter puzzle list | 登録されているパズルとそのタイプを一覧表示します。 |
/typewriter puzzle start <id> | 自分をパズルのオーディエンスに追加します。すでに解いている場合は拒否されます。 |
/typewriter puzzle join <id> | 協力型パズルなど、すでに実行中のパズルに参加します。 |
/typewriter puzzle chain <id> | エントリー ID または名前で、パズルチェーンを開始します。 |
/typewriter puzzle status | すべてのパズルでの自分の状態(進行中、完了、停止、非アクティブ)を表示します。 |
/typewriter puzzle leaderboard <id> | パズルの自分の統計と、上位 10 人のプレイヤーを表示します。 |
/typewriter puzzle stop [id] | 1 つのパズル、または進行中のすべてのパズルを停止し、進行状況をリセットします。 |
/typewriter puzzle close | 開いているインベントリを閉じます。 |
/typewriter puzzle admin reset <player> <id> | プレイヤーのパズルの状態をリセットして、再開します。 共有パズルの場合、そのプレイヤーのグループ全体に対して再び開きます。 |
/typewriter puzzle admin reload | すべての実行時の状態とチェーンをクリアします。 |
パーミッション
| パーミッション | 許可される内容 |
|---|---|
puzzle.admin | /typewriter puzzle admin コマンド。 |
設定
永続化。 Puzzle Artifact がない場合、何も保存されません。ある場合、エクステンションは状態と統計を 30 秒ごとおよびシャットダウン時に保存し、起動時に読み込みます。アーティファクトはちょうど 1 つだけ作成し、生成された artifactId を保持してください。 共有パズルにはアーティファクトが必須です(共有パズル を参照)。
プレイヤーが切断すると、そのパズルの状態はメモリから削除され、次回の保存には含まれません。統計は残ります。解いたパズルを確実に記憶するには、パズルの fact を設定し、そのファクトをクライテリアで読み取ってください。Puzzle Solved Fact は、メモリ上の状態しか反映しません。 共有パズルは例外です。その解決はグループに属し、アーティファクトに保存されます。
メッセージ。 ゲーム内に表示されるテキストで、コードに固定されているものはありません。個々のパズルに属するテキストはそのエントリーのフィールドで、コマンドの返信と全パズル共通の 2 つのメッセージはスニペットです。編集可能なテキストを参照してください。
編集可能なテキスト
テキストは MiniMessage なので、言い換え、翻訳、色の変更ができます。テキスト内の {name} は、下の表に記載された値に置き換えられます。存在しないプレースホルダーはそのまま残ります。PlaceholderAPI のプレースホルダー(%...%)は、テキストを受け取るプレイヤーに対して解決されます。固定のまま英語なのは、サーバーコンソールのログだけです。
エントリーのフィールド
これらのフィールドは、Web パネルのエントリー上にあります。いずれもプレイヤーごとのテキストなので変数を使用でき、空にすると何も送信されません。既存のページはすでに保存しているテキストを保持します。以下のデフォルトは、新しいエントリーと、そのフィールドを一度も保存していないページに適用されます。
| エントリー | フィールド | デフォルト | プレースホルダー |
|---|---|---|---|
| すべてのパズル | hintMessage | パズルの種類ごとのヒント。たとえば <yellow>Repeat the sequence! {progress}/{total}。 | {progress}, {total} |
| すべてのパズル | completionMessage | <green>Puzzle completed! | なし |
| Puzzle Menu | titleText | <gold><bold>Puzzles</bold> <gray>- | なし |
| Puzzle Menu | puzzleLineText | <green>{puzzle} <gray>- <aqua>click to start | {puzzle}(パズルのエントリー ID) |
| Puzzle Menu | footerText | <gray>Use <white>/typewriter puzzle stop<gray> to stop all active puzzles. | なし |
| Memory Sequence | memorizeMessage | <gold>Memorize the sequence… | なし |
| Memory Sequence | yourTurnMessage | <green>Your turn! <white>{progress}/{total} | {progress}, {total} |
| Memory Sequence | stepCorrectMessage | <green>Well done! <white>{progress}/{total} | {progress}, {total} |
| Lever Order | wrongOrderMessage | <red>Wrong order — the levers have been reset. | なし |
| Pattern Placement | progressMessage | <green>Pattern <white>{progress}/{total} | {progress}, {total} |
| Item Frame | missingFrameMessage | <red>No item frame at <white>{x} {y} {z} | {x}, {y}, {z} |
| Item Frame | wrongItemMessage | <red>That is not the right item in the frame. | なし |
| Item Frame | insertingMessage | <gray>Inserting the item… | なし |
| Item Frame | missingItemMessage | <yellow>First place the requested item in the frame. | なし |
| Item Frame | itemPlacedMessage | <green>Item placed — rotate the frame. | なし |
| Item Frame | rotationMessage | <gray>Rotation {current}/{total} | {current}, {total} |
hintMessage、completionMessage、チャットメニューのフィールドはチャットに送信され、それ以外のフィールドはアクションバーに表示されます。これらのデフォルトの一部は以前のビルドではフランス語でしたが、現在は英語です。フランス語のテキストを保存しているページはそのまま保持されます。
スニペット
/typewriter puzzle コマンドが表示するすべてのテキスト(管理コマンドを含む)と、全パズル共通の 2 つのメッセージは、TypeWriter のスニペットです。plugins/Typewriter/snippets.yml を開き、content.puzzle 配下のキーを見つけて値を変更し、/tw reload を実行します。エクステンションは起動時にすべてのスニペットをデフォルトのテキストで登録するため、初回起動後にファイルに表示されます。
スニペット(content.puzzle. 配下) | デフォルト | プレースホルダー |
|---|---|---|
command.no_menu | <red>No puzzle menu configured. | なし |
command.list.none | <red>No puzzles configured. | なし |
command.list.header | <gold>=== Available Puzzles === | なし |
command.list.line | <green>{puzzle} <gray>- {type} | {puzzle}, {type} |
command.puzzle_not_found | <red>Puzzle not found: <white>{puzzle} | {puzzle} |
command.start.already_completed | <yellow>Puzzle already completed. Use <white>/typewriter puzzle admin reset {player} {puzzle}<yellow> to replay it. | {player}, {puzzle} |
command.start.started | <green>Starting puzzle: <white>{type} | {type} |
command.join.already_completed | <yellow>Puzzle already completed for you: <white>{puzzle} | {puzzle} |
command.join.joined | <green>Joined puzzle: <white>{type} | {type} |
command.stop.not_active | <gray>Puzzle is not active: <white>{puzzle} | {puzzle} |
command.stop.stopped | <yellow>Stopped puzzle: <white>{puzzle} | {puzzle} |
command.stop.all_none | <gray>No active puzzle. | なし |
command.stop.all_stopped | <yellow>Stopped <white>{count} <yellow>puzzle(s). | {count} |
command.status.header | <gold>=== Puzzle Status === | なし |
command.status.line | <gray>{puzzle}: {status} <dark_gray>progress={progress} | {puzzle}, {status}, {progress} |
command.status.active | <green>ACTIVE | なし |
command.status.completed | <aqua>COMPLETED | なし |
command.status.stopped | <yellow>STOPPED | なし |
command.status.inactive | <gray>INACTIVE | なし |
command.chain.not_found | <red>Chain not found: <white>{chain} | {chain} |
command.chain.invalid | <red>Chain is invalid or contains unresolved puzzles: <white>{chain} | {chain} |
command.chain.empty | <red>Chain has no resolvable puzzle entries. | なし |
command.chain.started | <green>Starting puzzle chain: <white>{chain} | {chain} |
command.leaderboard.header | <gold>=== Puzzle Stats: <white>{puzzle} <gold>=== | {puzzle} |
command.leaderboard.attempts | <gray>Attempts: <white>{attempts} | {attempts} |
command.leaderboard.solves | <gray>Solves: <white>{solves} | {solves} |
command.leaderboard.best_time | <gray>Best time: <white>{seconds}s | {seconds} |
command.leaderboard.rows_header | <gold>--- Leaderboard --- | なし |
command.leaderboard.row | <gray>#{rank} <white>{player} <gray>- <white>{solves} solves | {rank}, {player}, {solves} |
command.leaderboard.row_timed | <gray>#{rank} <white>{player} <gray>- <white>{solves} solves <gray>{seconds}s | {rank}, {player}, {solves}, {seconds} |
command.admin.reset.player_not_found | <red>Player not found: <white>{player} | {player} |
command.admin.reset.done | <green>Reset puzzle <white>{puzzle} <green>for <white>{player} | {puzzle}, {player} |
command.admin.reset.done_group | <green>Reset puzzle <white>{puzzle} <green>for <white>{player} <green>and its group (<white>{count}<green> online) | {puzzle}, {player}, {count} |
command.admin.reload.done | <green>Puzzle runtime states cleared. | なし |
play.cooldown_wait | <red>Puzzle on cooldown — <white>{seconds}s | {seconds} |
play.max_attempts | <red>Too many mistakes — restart the puzzle to try again. | なし |
{type} はパズルの種類の名前(Memory Sequence、Lever Order など)、{status} は 4 つの command.status.* スニペットのいずれかで、どちらも色が保たれます。それ以外のプレースホルダーはすべてプレーンテキストです。プレイヤーがコマンドに入力した内容が、返信に書式を加えることはできません。
エントリー
14 件のエントリー(拡張機能のソースから生成)。
アクション1
- Puzzle MenuPuzzle Menu
ファクト2
- Puzzle Active FactPuzzle Active Fact
- Puzzle Solved FactPuzzle Solved Fact
オーディエンス9
- Puzzle Block PushPush blocks into target holes -
- Puzzle Combination LockEnter the correct code by pressing buttons/levers in sequence
- Puzzle Coop PressureCooperative pressure plate puzzle -
- Puzzle Item FrameRotate item frames to the correct angles
- Puzzle Laser GridLaser grid puzzle -
- Puzzle Lever OrderPuzzle where levers must be activated in the correct order
- Puzzle MemoryMemory sequence puzzle -
- Puzzle PatternPattern placement puzzle -
- Puzzle PedestalOffer an item on a pedestal to solve the puzzle
アーティファクト1
- Puzzle ArtifactPersists puzzle states across server restarts
その他のエントリー1
- Puzzle ChainChain of puzzles -
トラブルシューティング
ボードが表示されない。 パズルの座標があるワールドにいて、いずれかの座標から activationRadius 以内にいる必要があります。0, 0, 0 のままの座標は無視されるため、座標が 1 つも設定されていないパズルには、基準点がありません。
クリックしても何も起きない。 オーディエンスに含まれていること(クライテリアが一致し、オーディエンスフィルターに自分が含まれている必要があります)と、パズルがすでに解決済みになっていないことを確認してください。/typewriter puzzle status を使い、再プレイするには /typewriter puzzle admin reset <player> <id> を使います。失敗後のクールダウン中のクリックは無視されます。残り時間はアクションバーに表示されます。
/typewriter puzzle start でパズルが見つからないと表示される。 パズルは、エクステンションの読み込み時に、エントリー ID で登録されます。パズルを追加した後はリロードし、名前ではなくエントリー ID を使用してください。
記憶パズルが始まらない。 buttons には 2 つ以上のエントリーが必要で、それぞれに座標が必要です。
パターンパズルがブロックを無視する。 pattern の長さは columns の倍数でなければならず、ブロックは gridOrigin の Y 座標のグリッド上に置く必要があります。間違った素材はキャンセルされます。
アイテムフレームパズルで、フレームがないと表示される。 まず、設定された座標にアイテムフレームを設置してください。ログにも、座標付きの警告が出力されます。
再接続すると進行状況が失われる。 「設定」の警告を参照してください。結果を保持するには fact を使用します。
協力型パズルが完了しない。 すべてのプレイヤーがオーディエンスに含まれ(/typewriter puzzle join <id>)、それぞれ別のプレートに乗り、holdDuration のあいだそこにとどまる必要があります。プレート上のドロップアイテムはカウントされません。