En esta guía aprenderás a teletransportar jugadores en Hytale.
Consideraciones
Para teletransportar jugadores correctamente:
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.Obtener el
EntityStore:
Es necesario para modificar los componentes de la entidad del jugador.Usar el componente
Teleport:
Añadir un componenteTeleportal 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 componenteTeleportcon 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.
