InputTracker
Überblick
InputTracker macht Tastatur und Inventar zu Triggern für TypeWriter. Er lauscht auf einige Spielereingaben (Hände tauschen, Droppen, Schleichen, Sprinten, Chat, Befehle und Hotbar-Auswahl) und führt die von dir gewählten Aktionen aus. Außerdem kann er Buttons im Inventar des Spielers oder im 2x2-Crafting-Raster anheften: Items, die sich nicht verschieben, droppen oder platzieren lassen und beim Anklicken Aktionen ausführen.
Alles wird in einem einzigen Manifest-Entry konfiguriert, Input Trigger Config. Das ist nützlich für Shortcuts im RPG-Stil, zum Beispiel ein Menü mit der F-Taste zu öffnen oder jedem Spieler eine „Menü“-Uhr im letzten Hotbar-Slot zu geben.
Funktionen
- Sieben Eingaben — Hände tauschen (F), Droppen (Q), Schleichen (Shift), Sprinten (Strg), Chatnachricht, Befehl und Auswahl eines Hotbar-Slots.
- Ursprüngliche Aktion abbrechen — optional das Vanilla-Verhalten unterbinden, zum Beispiel damit die F-Taste keine Items tauscht.
- Criteria, Verzögerung und Cooldown — nur ausführen, wenn Bedingungen zutreffen, nach einer Verzögerung in Ticks und mit einem Cooldown zwischen zwei Auslösungen.
- Inventar-Buttons — an gewählte Slots angeheftete Items, die sich nicht verschieben, droppen, platzieren oder essen lassen.
- Klicktypen — ein eigener Satz Aktionen für Links-, Rechts-, Shift-Links-, Shift-Rechts-Klick, Droppen, Doppelklick oder einen beliebigen Klick als Fallback.
- Hotbar-Buttons in der Welt — Links- und Rechtsklicks mit einem Button in der Hand führen dessen Aktionen aus.
- Buttons im Crafting-Raster — Buttons im 2x2-Crafting-Raster, wobei das Craften deaktiviert ist, solange ein Button darin liegt.
- Criteria pro Button — jeder Button und jede Klickbindung kann eigene Bedingungen haben.
Installation
- Verwende Paper 1.21 oder neuer. Eine Paket-Bibliothek wird nicht benötigt.
- Lege die InputTracker-JAR in
plugins/Typewriter/extensions/ab und starte den Server neu.
Die Erweiterung plant Verzögerungen mit dem Bukkit-Scheduler und ist daher für Paper gedacht, nicht für Folia.
Erste Schritte
Öffne ein Menü, wenn der Spieler F drückt, und gib jedem Spieler einen Menü-Button:
- Öffne im TypeWriter-Web-Panel eine Manifest-Page und füge einen Input Trigger Config-Entry hinzu. Erstelle nur einen: Es wird der zuerst gefundene verwendet.
- Füge in
keybindsein Element hinzu. SetzetypeaufSWAP_HAND, aktiviereenabled(standardmäßig aus) und aktivierecancelAction, damit die Hände nicht getauscht werden. - Wähle in dessen
actionsden Action-Entry, der dein Menü öffnet. Setzecooldownauf10Ticks, um doppelte Auslösungen zu vermeiden. - Füge in
inventoryButtonsein Element hinzu. Setzeslotauf8(der letzte Hotbar-Slot) und wähle das anzuzeigendeitem, zum Beispiel eine Uhr mit dem Namen<gold>Menu. - Füge in dessen
clickActionseine Bindung mitclickTypeLEFTund derselben Aktion inactionshinzu. - Veröffentliche. Spieler erhalten den Button, wenn sie beitreten oder respawnen.
Ein Button ersetzt, was auch immer sich in seinem slot befindet. Wähle Slots, die deine Spieler nicht für eigene Items verwenden.
Ein Spieler, der mindestens einen Button bei sich trägt, kann nicht sterben: Tödlicher Schaden wird aufgehoben. Berücksichtige das in deinem Spieldesign oder entferne die Buttons in Situationen, in denen Spieler sterben können müssen.
Funktionsweise
Keybinds. Für jeden type wird die erste Definition in keybinds verwendet, du kannst also nicht zwei Definitionen für dieselbe Eingabe haben. Das gilt auch für HOTBAR_SLOT: Er reagiert auf einen einzelnen Slot, der über hotbarSlot gewählt wird.
Was jede Eingabe genau bedeutet:
| Typ | Wird ausgelöst, wenn |
|---|---|
SWAP_HAND | der Spieler F drückt. |
DROP | der Spieler Q drückt, um ein Item zu droppen (nicht, während er ein Item am Cursor hält). |
SNEAK | der Spieler anfängt zu schleichen. |
SPRINT | der Spieler anfängt zu sprinten. |
CHAT | der Spieler eine Chatnachricht sendet. Allein T zu drücken bewirkt nichts. |
COMMAND | der Spieler einen Befehl ausführt. |
HOTBAR_SLOT | der Spieler den Hotbar-Slot hotbarSlot (0 bis 8) auswählt. |
Mit cancelAction wird das ursprüngliche Event abgebrochen: Die Hände werden nicht getauscht, die Nachricht oder der Befehl wird nicht gesendet. Bei DROP wird dropCount (-1 für den ganzen Stapel, eine Zahl über 1 für eine eigene Menge) nur verwendet, wenn cancelAction aktiviert ist.
Buttons. Buttons sind markierte Items. Sie werden im Inventar des Spielers platziert, wenn der Spieler beitritt, respawnt oder das Crafting-Inventar öffnet. Sie lassen sich nicht verschieben, ziehen, droppen, in die Nebenhand tauschen, platzieren oder essen.
Wird ein Button angeklickt, wählt die Erweiterung die erste Bindung in clickActions, deren clickType zum Klick passt und deren criteria erfüllt sind. Trifft keine zu, verwendet sie die erste ALL-Bindung, deren Criteria erfüllt sind. Ein Mittelklick oder eine Zifferntaste zählt als Linksklick. In der Welt zählen Links- und Rechtsklicks mit einem Button in der Hand als LEFT und RIGHT.
Konfiguration
Alle Einstellungen sind Felder des Input-Trigger-Config-Entries.
Felder von keybinds
| Feld | Beschreibung |
|---|---|
type | Die Eingabe, auf die gelauscht wird. |
enabled | Muss aktiviert sein, damit die Definition funktioniert. Standardmäßig aus. |
cancelAction | Das Vanilla-Verhalten abbrechen. |
actions | Auszuführende Action-Entries. |
delay | Ticks, die vor dem Ausführen der Aktionen gewartet wird (0 führt sie sofort aus). |
cooldown | Ticks zwischen zwei Auslösungen für denselben Spieler und dieselbe Eingabe (0 für keinen). |
dropCount | Für DROP. 1 ist ein einzelnes Item, -1 der ganze Stapel. |
hotbarSlot | Für HOTBAR_SLOT: der Slot, 0 bis 8. |
criteria | Bedingungen, damit der Trigger ausgeführt wird. |
Felder von inventoryButtons
| Feld | Beschreibung |
|---|---|
slot | Inventar-Slot, 0 bis 40 (0 bis 8 Hotbar, 36 bis 39 Rüstung, 40 Nebenhand). Im Crafting-Raster 0 bis 4. |
item | Das Item, das als Button angezeigt wird. |
clickActions | Liste von Bindungen mit clickType, actions und criteria. |
delay | Ticks, bevor die Aktionen ausgeführt werden. |
isCraftingGrid | Den Button im 2x2-Crafting-Raster statt im Inventar platzieren. |
criteria | Bedingungen, damit ein Klick auf den Button etwas bewirkt. |
Im Crafting-Raster ist Slot 0 der Ergebnis-Slot, der als „Absenden“-Button dient, und die Slots 1 bis 4 sind die vier Rasterfelder. Ein Crafting-Ergebnis wird blockiert, solange ein Button in einem der Rasterfelder liegt, damit niemand Items duplizieren kann.
Entries
1 Einträge, aus dem Quellcode der Erweiterung generiert.
Manifeste1
- Input Trigger ConfigPlayer Input Triggers Configuration
Fehlerbehebung
Ein Keybind bewirkt nichts. enabled ist standardmäßig aus. Prüfe außerdem, dass die Definition actions hat, dass die criteria zutreffen und dass du nur eine Definition für diesen type hast: Nur die erste wird gelesen. Der Entry muss veröffentlicht sein, und es darf nur eine Input Trigger Config geben.
Die Aktion wird nur hin und wieder ausgeführt. Der cooldown gilt gemeinsam für denselben Spieler und dieselbe Eingabe, in Ticks (20 Ticks sind eine Sekunde). cancelAction greift weiterhin, während der Cooldown die Aktionen blockiert. DROP verwendet den Cooldown nicht.
Die F- oder Q-Taste führt weiterhin ihre normale Aktion aus. Aktiviere cancelAction. Bei den Eingaben Chat und Befehl verhindert cancelAction, dass die Nachricht oder der Befehl gesendet wird.
Ein Button ist nicht anklickbar oder bewirkt nichts. Ein Klick bewirkt nichts, wenn die criteria des Buttons nicht erfüllt sind oder wenn keine clickActions-Bindung zum Klicktyp passt und es keine ALL-Bindung gibt. Die actions müssen Action-Entries sein.
Ein Item ist aus dem Inventar verschwunden. Ein Button ersetzt bei jeder Platzierung der Buttons das Item in seinem slot. Wähle einen freien Slot.
Ein entfernter Button bleibt im Inventar. Buttons sind von der Erweiterung markierte Items. Wenn du einen Button in der Konfiguration löschst oder verschiebst, werden die alten Items entfernt und die aktuellen Buttons erneut platziert, sobald der Spieler das nächste Mal sein Inventar schließt, beitritt oder respawnt.
Der Spieler stirbt nicht. Das ist beabsichtigt: Ein Spieler, der einen Button trägt, kann keinen tödlichen Schaden erleiden.