InputTracker
概要
InputTracker は、キーボードとインベントリを TypeWriter のトリガーに変えます。プレイヤーの主な入力(手の持ち替え、ドロップ、スニーク、スプリント、チャット、コマンド、ホットバーの選択)を監視し、指定したアクションを実行します。また、プレイヤーのインベントリや 2x2 のクラフトグリッドにボタンを固定することもできます。ボタンは、移動、ドロップ、設置ができないアイテムで、クリックするとアクションを実行します。
すべての設定は、Input Trigger Config という 1 つのマニフェストエントリーで行います。F キーでメニューを開く、最後のホットバースロットに全プレイヤー共通の「Menu」時計を配る、といった RPG 風のショートカットに便利です。
機能
- 7 種類の入力 — 手の持ち替え(F)、ドロップ(Q)、スニーク(Shift)、スプリント(Ctrl)、チャットメッセージ、コマンド、ホットバースロットの選択。
- 元のアクションのキャンセル — 必要に応じてバニラの動作を止めます。たとえば、F キーでアイテムが持ち替えられないようにします。
- クライテリア、遅延、クールダウン — 条件に一致したときのみ、tick 単位の遅延の後に、トリガー間のクールダウンを挟んで実行します。
- インベントリボタン — 指定したスロットに固定され、移動、ドロップ、設置、食べることができないアイテム。
- クリックタイプ — 左クリック、右クリック、Shift+左クリック、Shift+右クリック、ドロップ、ダブルクリックごと、またはフォールバックとして任意のクリックごとに、異なるアクションを設定できます。
- ワールド内のホットバーボタン — ボタンを手に持った状態での左クリックと右クリックで、そのアクションを実行します。
- クラフトグリッドボタン — 2x2 のクラフトグリッドにボタンを置けます。ボタンがある間、クラフトは無効になります。
- ボタンごとのクライテリア — 各ボタンと各クリックバインディングに、それぞれ条件を設定できます。
インストール
- Paper 1.21 以降を使用します。パケットライブラリは不要です。
- InputTracker の JAR を
plugins/Typewriter/extensions/に配置し、サーバーを再起動します。
このエクステンションは Bukkit スケジューラーで遅延を管理するため、Folia ではなく Paper 向けです。
はじめに
プレイヤーが F を押したときにメニューを開き、全プレイヤーにメニューボタンを配ります。
- TypeWriter の Web パネルでマニフェストページを開き、Input Trigger Config エントリーを追加します。作成するのは 1 つだけにしてください。最初に見つかったものが使用されます。
keybindsにアイテムを追加します。typeをSWAP_HANDに設定し、enabledにチェックを入れ(デフォルトはオフです)、手が持ち替えられないようにcancelActionにもチェックを入れます。- その
actionsで、メニューを開くアクションエントリーを選択します。二重トリガーを避けるため、cooldownを10tick に設定します。 inventoryButtonsにアイテムを追加します。slotを8(最後のホットバースロット)に設定し、表示するitem(たとえば<gold>Menuという名前の時計)を選びます。- その
clickActionsに、clickTypeがLEFTのバインディングを追加し、actionsに同じアクションを指定します。 - Publish します。プレイヤーは、参加時またはリスポーン時にボタンを受け取ります。
ボタンは、その slot にあるアイテムを置き換えます。プレイヤーが自分のアイテムに使わないスロットを選んでください。
ボタンを 1 つでも持っているプレイヤーは死亡しません。致死ダメージはキャンセルされます。ゲームデザインはこの点を踏まえて計画するか、プレイヤーが死亡できる必要がある場面ではボタンを削除してください。
仕組み
キーバインド。 各 type につき、keybinds の最初の定義が使用されるため、同じ入力に 2 つの定義を持つことはできません。これは HOTBAR_SLOT にも当てはまります。このタイプは、hotbarSlot で選んだ 1 つのスロットにのみ反応します。
各入力の意味は次のとおりです。
| タイプ | 発火するタイミング |
|---|---|
SWAP_HAND | プレイヤーが F を押したとき。 |
DROP | プレイヤーが Q を押してアイテムをドロップしたとき(カーソルにアイテムを持っている間は除く)。 |
SNEAK | プレイヤーがスニークを始めたとき。 |
SPRINT | プレイヤーがスプリントを始めたとき。 |
CHAT | プレイヤーがチャットメッセージを送信したとき。T を押しただけでは何も起きません。 |
COMMAND | プレイヤーがコマンドを実行したとき。 |
HOTBAR_SLOT | プレイヤーがホットバースロット hotbarSlot(0 から 8)を選択したとき。 |
cancelAction を使うと、元のイベントがキャンセルされます。手は持ち替えられず、メッセージやコマンドも送信されません。DROP では、dropCount(スタック全体は -1、任意の個数は 1 より大きい数)は cancelAction がオンのときにのみ使用されます。
ボタン。 ボタンはタグ付きのアイテムです。プレイヤーの参加時、リスポーン時、クラフト用インベントリを開いたときに、インベントリへ配置されます。移動、ドラッグ、ドロップ、オフハンドへの持ち替え、設置、食べることはできません。
ボタンがクリックされると、エクステンションは、clickType がクリックに一致し、criteria を満たす最初の clickActions バインディングを選びます。該当するものがなければ、criteria を満たす最初の ALL バインディングを使用します。中クリックと数字キーは、左クリックとして扱われます。ワールド内では、ボタンを手に持った状態での左クリックと右クリックが、LEFT と RIGHT として扱われます。
設定
すべての設定は、Input Trigger Config エントリーのフィールドです。
keybinds のフィールド
| フィールド | 説明 |
|---|---|
type | 監視する入力。 |
enabled | 定義を有効にするにはオンにする必要があります。デフォルトはオフです。 |
cancelAction | バニラの動作をキャンセルします。 |
actions | 実行するアクションエントリー。 |
delay | アクションを実行するまで待つ tick 数(0 は即時実行)。 |
cooldown | 同じプレイヤーと入力に対する、2 回のトリガーの間隔(tick)(0 はなし)。 |
dropCount | DROP 用。1 は 1 個、-1 はスタック全体。 |
hotbarSlot | HOTBAR_SLOT 用: スロット(0 から 8)。 |
criteria | トリガーを実行するための条件。 |
inventoryButtons のフィールド
| フィールド | 説明 |
|---|---|
slot | インベントリのスロット。0 から 40(0 から 8 がホットバー、36 から 39 が防具、40 がオフハンド)。クラフトグリッドでは 0 から 4。 |
item | ボタンとして表示されるアイテム。 |
clickActions | clickType、actions、criteria を持つバインディングのリスト。 |
delay | アクションを実行するまでの tick 数。 |
isCraftingGrid | ボタンをインベントリではなく 2x2 のクラフトグリッドに配置します。 |
criteria | ボタンのクリックが何かを実行するための条件。 |
クラフトグリッドでは、スロット 0 が結果スロットで、「送信」ボタンとして機能します。スロット 1 から 4 が 4 つのグリッドスロットです。グリッドスロットのいずれかにボタンがある間はクラフト結果がブロックされるため、アイテムを複製することはできません。
エントリー
1 件のエントリー(拡張機能のソースから生成)。
マニフェスト1
- Input Trigger ConfigPlayer Input Triggers Configuration
トラブルシューティング
キーバインドが何も起こさない。 enabled はデフォルトでオフです。また、定義に actions があるか、criteria が一致しているか、その type の定義が 1 つだけであるかを確認してください。読み込まれるのは最初の 1 つだけです。エントリーは Publish されている必要があり、Input Trigger Config は 1 つだけにしてください。
アクションが時々しか実行されない。 cooldown は、同じプレイヤーと同じ入力で共有され、単位は tick です(20 tick が 1 秒)。クールダウンがアクションをブロックしている間も、cancelAction は適用されます。DROP はクールダウンを使いません。
F や Q キーが通常の動作をしてしまう。 cancelAction にチェックを入れてください。チャットとコマンドの入力では、cancelAction はメッセージやコマンドの送信を止めます。
ボタンがクリックできない、または何も起きない。 ボタンの criteria を満たさない場合、またはクリックタイプに一致する clickActions バインディングがなく ALL バインディングもない場合、クリックは何も実行しません。actions はアクションエントリーである必要があります。
インベントリからアイテムが消えた。 ボタンは、配置されるたびに、その slot のアイテムを置き換えます。空いているスロットを選んでください。
削除したボタンがインベントリに残っている。 ボタンは、エクステンションがタグ付けしたアイテムです。設定でボタンを削除または移動した場合、古いアイテムは、次にプレイヤーがインベントリを閉じたとき、参加したとき、またはリスポーンしたときに消去され、現在のボタンが再配置されます。
プレイヤーが死亡しない。 これは仕様です。ボタンを持っているプレイヤーは、致死ダメージを受けません。