Plugin Résolu Probleme de teleportation

  • Auteur de la discussion Auteur de la discussion TookieP
  • Date de début Date de début

TookieP

Bucheron
21 Octobre 2015
7
0
12
27
Bonjour, j'expose mon problème ci-dessous:

Ce que je veux : Un joueur doit être téléporté instantanément sans attendre dans le vide (lag).

Ce que j'ai fais :

PHP:
@SuppressWarnings("deprecation")
    public void teleportRandomLocation(Player p, final Location loc, int x, int z) {

        loc.setX(x);
        loc.setZ(z);
        loc.setY(p.getWorld().getHighestBlockYAt(loc) + 10);

        Chunk c = loc.getChunk();
        loc.getWorld().loadChunk(c);
        loc.getWorld().refreshChunk(c.getX(), c.getZ());
        if (c.isLoaded()) {
            Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getInstance(), new Runnable() {
                public void run() {

            Material type = loc.getBlock().getType();
            if (type == Material.AIR && type != Material.WATER && type != Material.LAVA) {
                p.teleport(loc);
            }
                }
            }, 2L);
        }
    }

Ce que j'ai obtenu : Rien ne change .. j'ai bien reçu le message "LOADED." mais ca me téléporte toujours dans le vide, et je dois attendre 2 ou 3 secondes avant d'atterir sur un block.

Je remercie ceux qui m'aideront.
 
Bonsoir,

loc.setY(p.getWorld().getHighestBlockYAt(loc) + 10);

En même temps si t'ajoutes 10y au bloc le plus haut c'est normal que tu sois téléporté bah 10 blocs plus haut.
Par contre pourquoi passer une Location si tu ne l'utilise pas ses valeurs d'entrée ? Autant la créée et la retourner à la place de void si t'en a besoin après l'appel à ta fonction, non ?

Cordialement,
ShE3py.