Bukkit.getPlayer fails on PlayerRespawnEvent

Discussion in 'Plugin Development' started by Cjreek, Dec 27, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    Cjreek

    Hi,

    I recently discovered something strange:

    Code:java
    1. @EventHandler
    2. public void onPlayerRespawn(PlayerRespawnEvent event)
    3. {
    4. Player player = Bukkit.getPlayer(event.getPlayer().getName());
    5. if (player != null)
    6. player.sendMessage("player exists!");
    7. else
    8. Bukkit.broadcastMessage("player doesn't exist ?!");
    9. }


    event.getPlayer is assigned but Bukkit.getPlayer() doesn't return a Player object of event.getPlayer().getName().

    Is this a bug?

    I'm using craftbukkit 1.4.6 R0.1 beta.
     
  2. Offline

    Tirelessly

    Why not just use Player player = event.getPlayer()?
     
  3. Offline

    Cjreek

    It's used indirectly by another method called in the PlayerRespawnEvent:

    (Pseudo code):

    Code:java
    1.  
    2. @EventHandler
    3. public void onPlayerRespawn(PlayerRespawnEvent event)
    4. {
    5. aClass dummy = getClassForPlayer(event.getPlayer.getName()); // returns existing aClass- object for player
    6. dummy.aMethod();
    7. }
    8.  
    9. class aClass
    10. {
    11. String playername = "<a player name >";
    12.  
    13. public void aMethod()
    14. {
    15. Player player = Bukkit.getPlayer(playername);
    16. if (player != null)
    17. {
    18. // Do something <--- this is not executed because Bukkit.getPlayer(playername) fails
    19. }
    20. }
    21. }
    22. [syntax][/syntax]
     
  4. Offline

    Thypthon

    Well, the event.getPlayer() is a Player so why don't just use that?
    This is from my plugin:
    Code:java
    1.  
    2. @EventHandler
    3. public void PlayerRespawn(PlayerRespawnEvent e){
    4. Player p = e.getPlayer();
    5. this.spawnHandler.Teleport(p, p.getWorld());
    6. }
    7.  
     
  5. Offline

    fireblast709

    Or, in your case, just pass the Player object to the class instead of the Player object
     
Thread Status:
Not open for further replies.

Share This Page