ServerPlugin PlayerRespawnEvent geht nicht.

Dieses Thema im Forum "Programmierung" wurde erstellt von CoredTV, 23. Juni 2015.

  1. CoredTV
    Offline

    CoredTV

    Registriert seit:
    13. Oktober 2013
    Beiträge:
    68
    Hallo, Ich versuche nun schon seit 1 Stunde, dass ein Spieler nach einem Kill unsichtbarkeit kriegt und teleportiert wird. Irgendwie klappt das aber nicht.
    Hier das PlayerrespawnEvent:

    Code (Text):
    1.     @EventHandler
    2.     public void onRespawn(PlayerRespawnEvent event) {
    3.         final Player p = event.getPlayer();
    4.         if (spec.contains(p)) {
    5.          
    6.    
    7.            p.sendMessage("§7[§bSolo§7] §eDu wurdest getötet. Du bist nun im Spectator Modus.");
    8.          
    9.            p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 99,99));
    10.          
    11.          
    12.          
    13.              String w = this.getConfig().getString("spec.world");
    14.              double x = getConfig().getDouble("spec.x");                        
    15.              double y = getConfig().getDouble("spec.y");
    16.              double z = getConfig().getDouble("spec.z");
    17.              World world = Bukkit.getServer().getWorld(w);
    18.              Location loc = new Location(world, x, y, z);
    19.          
    20.            event.setRespawnLocation(loc);
    21.          
    22.      
    23.             }
    24.         }
    Der Spieler erhält beim Respawn zwar die Nachricht, aber er wird weder teleportiert, noch erhält er den PotionEffect, Habe es außerdem mit einem PlayerDeath Event versucht, das ganze war aber erfolglos.

    MfG
    Black
     
    #1
  2. jotonch
    Offline

    jotonch

    Registriert seit:
    17. März 2012
    Beiträge:
    30
    Bau einen Scheduler ein, sodass man den Effekt + Teleportierung kurz nach dem respawnen erhält
     
    #2
  3. LordKaktus
    Offline

    LordKaktus

    Registriert seit:
    31. Dezember 2014
    Beiträge:
    66
    Vielleicht wäre es auch angebracht, den spieler unbesiegbar zu machen oder am besten in den spectator-gamemode zu setzen. Ich weiß nicht wofür der code ist, aber wenn der spieler lediglich unsichtbar ist, kann er ja noch immer einfluss auf das spiel haben
     
    #3
    jotonch gefällt das.
  4. Kurlux
    Offline

    Kurlux Moderator Redakteur

    Registriert seit:
    7. Juni 2015
    Beiträge:
    323
    Ort:
    Bayern
    Minecraft:
    Kurlux
    @LordKaktus hat recht... wieso nicht einfach in den Gamemode 3 setzen ?
     
    #4
  5. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    Minecraft:
    Inkemann
    Das PlayerRespawnEvent wird ja direkt VOR dem eigentlichen Respawn ausgelöst, deswegen geht es nicht. Einen Scheduler zu benutzen wäre wohl sinnvoll. Das der Spieler nicht teleportiert wird könnte daran liegen, dass es die Welt zum Beispiel nicht gibt.
     
    #5
  6. TestAccLolxd
    Offline

    TestAccLolxd

    Registriert seit:
    27. Juni 2015
    Beiträge:
    2
    Nein. Ich denke, dass die Funktion einfach Buggy ist. Würdest du diese Respawnlocation allerdings mit einem Delay setzen, kriegste ne Exception. Dh: Scheduler starten und dann normal teleportieren nicht über e.setRespawnLocation
     
    #6
  7. HardcorePvP
    Offline

    HardcorePvP

    Registriert seit:
    3. September 2012
    Beiträge:
    92
    Ort:
    München
    Minecraft:
    blooditor
    Mach "event.setRespawnLocation" und die Werte dazu über den Potion-Effekt und wie gesagt dann den Effekt in einen Scheduler mit 10 ticks delay. Das Teleportieren funktioniert wahrscheinlich nicht, da der Code wegen dem Fehler mit dem Effekt abgebrochen wurde.
    So sollte es aber dann funktionieren ;)
     
    #7
  8. Victini151
    Online

    Victini151

    Es kann auch sein, dass Plugins wie zB. "Essentials" (oder andere) in den Respawn-Prozess eingreifen und den Respawn-Ort entsprechend überschreiben. Versuch es mal am besten als einziges Plugin auf einem Test-Server. Wenn es dann mit der Teleportation klappt, liegt es sehr wahrscheinlich daran. In diesem Fall wäre eine gute Möglichkeit das schon zuvor angesprochene Nutzen des Bukkit-Scheduler für Teleportation und Effekt.
     
    #8