Search code examples
javaminecraftbukkit

Bukkit PlayerDeathEvent


why isn't this working? I don't get any response if I've been killed! So as you can see I have tested multiple ways. But no one is working.

package net.gameforce.testing;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;






public class Main extends JavaPlugin implements Listener {


@Override
public void onEnable() {
    getServer().getPluginManager().registerEvents(this,this);
    getLogger().info("Testing Plugin Started");
}

public void onDisable() {}

@EventHandler
public void onPlayerInteract(PlayerInteractEvent event){
    Bukkit.broadcastMessage("test");
    event.getPlayer().setExp(100);
}
public void onPlayerDeath (PlayerDeathEvent event){
    Bukkit.broadcastMessage("send");
    event.getEntity().getPlayer().setExp(1000);
}

public boolean onDeath (PlayerDeathEvent event) {
    Player Player = event.getEntity();
    Bukkit.broadcastMessage(Player.getKiller().getDisplayName() + ", has killed you!");
    if (Player.getKiller() != null) {
        Bukkit.broadcastMessage("No Player");
    }
    else {
        Bukkit.broadcastMessage("IDK");
    }


    return true;
}
}

Have I done something wrong?


Solution

  • Quotation from http://bukkit.gamepedia.com/Event_API_Reference#.40EventHandler

    "Before this method can be invoked by Bukkit when the "Event" is fired, we need to annotate it. We do this with EventHandlers."

    You've added this annotation to your onPlayerInteract method, but none of your others, such as your onDeath method. If your listener is setup correctly, adding the @EventHandler annotation to these methods will allow bukkit to correctly invoke them, like so:

    @EventHandler
    public void onPlayerDeath (PlayerDeathEvent event){
        Bukkit.broadcastMessage("send");
        event.getEntity().getPlayer().setExp(1000);
    }