Cómo Teletransportar Jugadores en Hytale

Hytale: Guías, Mods, Opiniones | Videojuegos en CIBERED

En esta guía aprenderás a teletransportar jugadores en Hytale.

Explorando el Código de HytaleServer.jar

Consideraciones

Para teletransportar jugadores correctamente:

  1. Obtener el objeto World:
    Todas las modificaciones de entidades deben ejecutarse en el hilo del mundo (world thread). Esto garantiza que los estados de las entidades se actualicen de forma segura y evita fallos o inconsistencias.

  2. Obtener el EntityStore:
    Es necesario para modificar los componentes de la entidad del jugador.

  3. Usar el componente Teleport:
    Añadir un componente Teleport al jugador activa la lógica de teletransporte dentro del ECS.


Ejemplo de código

public static void teleportPlayer(Player player, int x, int y, int z) {
    World world = player.getWorld();
    if (world == null) return;

    world.execute(() -> {
        if (player.getReference() == null) return;

        Store store = player.getReference().getStore();
        Teleport teleport = new Teleport(new Transform(x, y, z));

        // Agrega el componente Teleport al jugador
        store.addComponent(player.getReference(), Teleport.getComponentType(), teleport);
    });
}

Explicación

  • world.execute(() -> { ... }): Encola la tarea en el hilo del mundo, asegurando actualizaciones seguras de entidades.
  • player.getReference(): Obtiene la referencia de la entidad del jugador dentro del ECS.
  • Teleport teleport = new Teleport(new Transform(x, y, z));: Crea un componente Teleport con la nueva posición.
  • store.addComponent(...): Añade el componente a la entidad, activando el teletransporte.

⚠️ Nota: No intentes modificar la posición del jugador directamente fuera del hilo del mundo. Esto puede corromper el estado de la entidad y causar errores en el servidor.