PlayerInteractLib

PlayerInteractLib

Por grzegorz2047 27 de enero de 2026
#API#Hytale#Interacción#Mod#PlayerInteractLib#plugin#Servidor

PlayerInteractLib es una biblioteca ligera del lado del servidor que restaura un evento de interacción de jugador que falta en la API del servidor de Hytale.

Introduce un PlayerInteractionEvent completamente funcional, que actúa como un reemplazo para el PlayerInteractEvent no funcional o que falta en la API actual.
Este evento permite que los plugins reaccionen a interacciones reales de los jugadores con el mundo, bloques y objetos.

La biblioteca está diseñada para ser utilizada como una dependencia por otros plugins y mods del servidor, sin requerir ninguna modificación de los internos del servidor.

👑 Para Propietarios de Servidores

Si eres un propietario de servidor, simplemente coloca este mod en la carpeta mods.
No se requiere configuración ni instalación.

🧩 Para Desarrolladores de Plugins

PlayerInteractLib expone eventos de interacción de jugador a través de un flujo de eventos reactivo (SubmissionPublisher), permitiendo que los plugins se suscriban y reaccionen de manera asíncrona a las acciones de los jugadores.

✨ Características

  • Agrega un PlayerInteractionEvent que falta a la API del servidor
  • Proporciona detección confiable de interacciones de jugadores
  • Soporta interacciones con bloques, objetos y el mundo
  • Incluye información de identidad del jugador y del objeto en mano
  • Entrega de eventos asíncrona y no bloqueante (API de Java Flow)
  • Ligera y solo como dependencia (sin lógica de juego)

Cómo Usar

1. Agrega la biblioteca a tu proyecto Crea una carpeta libs en tu proyecto y coloca el archivo .jar de la biblioteca dentro:

project-root/
 ├─ libs/
 │   └─ PlayerInteractLib.jar
 └─ build.gradle

Estructura de ejemplo:

image

2. Agrega la dependencia en build.gradle

dependencies { implementation fileTree(dir: 'libs', includes: ['*.jar']) }

3. Declara la dependencia en manifest.json Agrega la biblioteca como una dependencia en el manifest.json de tu plugin:

"Dependencies": { "Hytale:PlayerInteractLib": "*" }

📦 Datos de PlayerInteractionEvent

public record PlayerInteractionEvent(
        InteractionType interactionType,
        String uuid,
        String itemInHandId,
        SyncInteractionChain interaction
) {}

Información disponible

UUID del Jugador
Identifica al jugador que realiza la interacción.

Tipo de Interacción (InteractionType)
Determina el tipo de acción (por ejemplo, interacción primaria/secundaria).

Objeto en Mano
El ID del objeto que actualmente usa el jugador (puede ser null).

Contexto de Interacción (SyncInteractionChain)
Contiene datos contextuales relacionados con la interacción, tales como:

*   estado de interacción
*   identificador de cadena de interacción
*   metadatos de interacción con el mundo o bloque

Los detalles de red y protocolo de bajo nivel están intencionalmente ocultos para mantener la API simple y amigable para los plugins.

Ejemplo de uso

PlayerInteractLib lib =
        (PlayerInteractLib) PluginManager.get()
                .getPlugin(PluginIdentifier.fromString("Hytale:PlayerInteractLib"));

SubmissionPublisher<PlayerInteractionEvent> publisher = lib.getPublisher();

publisher.subscribe(new Flow.Subscriber<>() {

    @Override
    public void onSubscribe(Flow.Subscription subscription) {
        subscription.request(Long.MAX_VALUE);
    }

    @Override
    public void onNext(PlayerInteractionEvent event) {
        String uuid = event.getUuid();
        var interactionType = event.getInteractionType();

        String username = Universe.get()
                .getPlayer(UUID.fromString(uuid))
                .getUsername();

        System.out.println(username + " realizó " + interactionType);
    }

    @Override public void onError(Throwable t) {}
    @Override public void onComplete() {}
});

🧠 Casos de Uso Comunes

  • Sistemas de protección de regiones
  • Comportamiento personalizado de bloques u objetos
  • Mecánicas basadas en interacciones
  • Verificaciones de anti-grief o permisos
  • Registro y análisis de acciones de jugadores

ℹ️ Notas

  • Los eventos se entregan de manera asíncrona
  • Los plugins que modifican el estado del mundo deben asegurar una sincronización adecuada
  • Esta biblioteca está destinada a ser utilizada estrictamente como una dependencia

Si encuentras esto útil, siéntete libre y
tips

Relacionados:

DeathCounter REST API

DeathCounter REST API

#API#API REST de DeathCounter#DeathCounter

API REST para DeathCounter API-REST Obtén todas las muertes en el Universo (o EnablePerWorldTracking está deshabilitado ...

HyVoltz

HyVoltz

#API#electricidad#Hytale

HyVoltz es una API de electricidad ligera para mods de Hytale. La API se llama HyVoltz; la unidad de energía que maneja ...

Armor Abilties

Armor Abilties

#API#Armadura#habilidades

La API de habilidades de armadura: El plugin de habilidades de armadura está dirigido a creadores de paquetes, permitién...

Mob Spawners

Mob Spawners

#API#Commands#events

Hytale Spawners añade generadores de mobs personalizados al juego para modos de juego complejos o para SMP general Comma...

FoxEconomy

FoxEconomy

#API#Economía#FoxEconomy

FoxEconomy &#8211; Plugin de economía todo en uno para Hytale FoxEconomy te permite dar a los jugadores dinero en el jue...

ServerList Player Count

ServerList Player Count

#API#Conteo de Jugadores de ServerList#Hytale

Actualizador de Estado en Vivo y Conteo de Jugadores de HytaleServersLists Mantén tu página de servidor de Hytale en hyt...