InputTracker
Descripción general
InputTracker convierte el teclado y el inventario en disparadores para TypeWriter. Escucha un puñado de entradas del jugador (intercambiar mano, soltar, agacharse, correr, chat, comandos y selección de la barra rápida) y ejecuta las acciones que elijas. También puede fijar botones en el inventario del jugador o en la cuadrícula de fabricación de 2x2: objetos que no se pueden mover, soltar ni colocar y que ejecutan acciones al hacer clic en ellos.
Todo se configura en una única entrada de manifiesto, Input Trigger Config. Resulta útil para atajos de estilo RPG, por ejemplo abrir un menú con la tecla F o dar a cada jugador un reloj "Menu" en la última ranura de la barra rápida.
Características
- Siete entradas: intercambiar mano (F), soltar (Q), agacharse (Shift), correr (Ctrl), mensaje de chat, comando y selección de ranura de la barra rápida.
- Cancelar la acción original: detén opcionalmente el comportamiento vanilla, por ejemplo para que la tecla F no intercambie objetos.
- Criterios, retraso y cooldown: ejecuta solo cuando se cumplan las condiciones, tras un retraso en ticks y con un cooldown entre dos activaciones.
- Botones de inventario: objetos fijados en las ranuras elegidas que no se pueden mover, soltar, colocar ni comer.
- Tipos de clic: un conjunto distinto de acciones para clic izquierdo, derecho, Shift + izquierdo, Shift + derecho, soltar, doble clic, o cualquier clic como alternativa.
- Botones de la barra rápida en el mundo: los clics izquierdo y derecho con un botón en la mano ejecutan sus acciones.
- Botones en la cuadrícula de fabricación: botones en la cuadrícula de fabricación de 2x2, con la fabricación desactivada mientras haya un botón en ella.
- Criterios por botón: cada botón, y cada asignación de clic, puede tener sus propias condiciones.
Instalación
- Usa Paper 1.21 o posterior. No se necesita ninguna biblioteca de paquetes.
- Coloca el JAR de InputTracker en
plugins/Typewriter/extensions/y reinicia el servidor.
La extensión programa los retrasos con el planificador de Bukkit, por lo que está pensada para Paper y no para Folia.
Primeros pasos
Abre un menú cuando el jugador pulse F y da un botón de menú a cada jugador:
- En el panel web de TypeWriter, abre una página de manifiesto y añade una entrada Input Trigger Config. Crea solo una: se usa la primera que se encuentre.
- En
keybinds, añade un elemento. EstablecetypeenSWAP_HAND, marcaenabled(está desactivado por defecto) y marcacancelActionpara que no se intercambien las manos. - En sus
actions, selecciona la entrada de acción que abre tu menú. Establececooldownen10ticks para evitar activaciones dobles. - En
inventoryButtons, añade un elemento. Establecesloten8(la última ranura de la barra rápida) y elige elitemque mostrar, por ejemplo un reloj llamado<gold>Menu. - En sus
clickActions, añade una asignación conclickTypeLEFTy la misma acción enactions. - Publica. Los jugadores reciben el botón al entrar o al reaparecer.
Un botón sustituye cualquier objeto que haya en su slot. Elige ranuras que tus jugadores no usen para sus propios objetos.
Un jugador que lleve al menos un botón no puede morir: el daño que sería letal se cancela. Planifica el diseño de tu juego teniendo esto en cuenta, o elimina los botones en las situaciones en que los jugadores deban poder morir.
Cómo funciona
Atajos de teclado (keybinds). Para cada type, se usa la primera definición de keybinds, por lo que no puedes tener dos definiciones para la misma entrada. Esto incluye HOTBAR_SLOT: reacciona a una única ranura, elegida con hotbarSlot.
Qué significa exactamente cada entrada:
| Tipo | Se dispara cuando |
|---|---|
SWAP_HAND | El jugador pulsa F. |
DROP | El jugador pulsa Q para soltar un objeto (no mientras sostiene un objeto con el cursor). |
SNEAK | El jugador empieza a agacharse. |
SPRINT | El jugador empieza a correr. |
CHAT | El jugador envía un mensaje de chat. Pulsar solo T no hace nada. |
COMMAND | El jugador ejecuta un comando. |
HOTBAR_SLOT | El jugador selecciona la ranura hotbarSlot de la barra rápida (0 a 8). |
Con cancelAction, el evento original se cancela: no se intercambian las manos y no se envía el mensaje ni el comando. Para DROP, dropCount (-1 para toda la pila, un número superior a 1 para una cantidad personalizada) solo se usa cuando cancelAction está activado.
Botones. Los botones son objetos etiquetados. Se colocan en el inventario del jugador cuando este entra, reaparece o abre el inventario de fabricación. No se pueden mover, arrastrar, soltar, intercambiar con la mano secundaria, colocar ni comer.
Cuando se hace clic en un botón, la extensión elige la primera asignación de clickActions cuyo clickType coincide con el clic y cuyos criteria se cumplen. Si ninguna lo hace, usa la primera asignación ALL cuyos criterios se cumplan. Un clic central o una tecla numérica cuentan como un clic izquierdo. En el mundo, los clics izquierdo y derecho con un botón en la mano cuentan como LEFT y RIGHT.
Configuración
Todos los ajustes son campos de la entrada Input Trigger Config.
Campos de keybinds
| Campo | Descripción |
|---|---|
type | La entrada que se escucha. |
enabled | Debe estar activado para que la definición funcione. Desactivado por defecto. |
cancelAction | Cancela el comportamiento vanilla. |
actions | Entradas de acción que se ejecutan. |
delay | Ticks que esperar antes de ejecutar las acciones (0 las ejecuta de inmediato). |
cooldown | Ticks entre dos activaciones para el mismo jugador y la misma entrada (0 para ninguno). |
dropCount | Para DROP. 1 es un solo objeto y -1 toda la pila. |
hotbarSlot | Para HOTBAR_SLOT: la ranura, de 0 a 8. |
criteria | Condiciones para que se ejecute la activación. |
Campos de inventoryButtons
| Campo | Descripción |
|---|---|
slot | Ranura del inventario, de 0 a 40 (0 a 8 barra rápida, 36 a 39 armadura, 40 mano secundaria). En la cuadrícula de fabricación, de 0 a 4. |
item | El objeto que se muestra como botón. |
clickActions | Lista de asignaciones con un clickType, actions y criteria. |
delay | Ticks antes de que se ejecuten las acciones. |
isCraftingGrid | Coloca el botón en la cuadrícula de fabricación de 2x2 en lugar de en el inventario. |
criteria | Condiciones para que un clic en el botón haga algo. |
En la cuadrícula de fabricación, la ranura 0 es la ranura de resultado, que funciona como un botón de "enviar", y las ranuras 1 a 4 son las cuatro ranuras de la cuadrícula. Un resultado de fabricación se bloquea mientras haya un botón en una de las ranuras de la cuadrícula, de modo que nadie pueda duplicar objetos.
Entradas
1 entradas, generadas a partir del código fuente de la extensión.
Manifiestos1
- Input Trigger ConfigPlayer Input Triggers Configuration
Resolución de problemas
Un atajo de teclado no hace nada. enabled está desactivado por defecto. Comprueba también que la definición tiene actions, que los criteria se cumplen y que solo tienes una definición para ese type: solo se lee la primera. La entrada debe estar publicada y solo debe haber una Input Trigger Config.
La acción se ejecuta solo de vez en cuando. El cooldown se comparte para el mismo jugador y la misma entrada, en ticks (20 ticks son un segundo). cancelAction se sigue aplicando mientras el cooldown bloquea las acciones. DROP no usa el cooldown.
La tecla F o Q sigue haciendo su acción normal. Marca cancelAction. Para las entradas de chat y de comando, cancelAction impide que se envíe el mensaje o el comando.
No se puede hacer clic en un botón, o no hace nada. Un clic no hace nada cuando fallan los criteria del botón, o cuando ninguna asignación de clickActions coincide con el tipo de clic y no existe una asignación ALL. Las actions deben ser entradas de acción.
Un objeto ha desaparecido del inventario. Un botón sustituye el objeto de su slot cada vez que se colocan los botones. Elige una ranura libre.
Un botón eliminado sigue en el inventario. Los botones son objetos etiquetados por la extensión. Cuando eliminas o mueves un botón en la configuración, los objetos antiguos se borran y los botones actuales se vuelven a colocar la próxima vez que el jugador cierre su inventario, entre o reaparezca.
El jugador no muere. Es lo previsto: un jugador que lleva un botón no puede recibir daño letal.