没有错误,但是如果我杀死某人,则什么也不做。我使用了要钱的基本经济。我不知道为什么它不起作用。这是我的主班代码:
package me.ghostyy.killmoney;
import java.math.BigDecimal;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.plugin.java.JavaPlugin;
import com.earth2me.essentials.api.Economy;
public class Main extends JavaPlugin {
@EventHandler
public void deathEvent(PlayerDeathEvent e) {
Player killer = e.getEntity().getKiller();
Player victim = e.getEntity();
if (killer == null)
return;
try {
double amount = Economy.getMoneyExact(victim.getName()).doubleValue() / 10.0D;
victim.sendMessage("[§bKillMoney§f]§e You killed §b" + killer.getName() + "§e, you got " + (int)amount + "$!");
Economy.substract(victim.getName(), BigDecimal.valueOf(amount));
Economy.add(killer.getName(), BigDecimal.valueOf(amount));
killer.sendMessage("[§bKillMoney§f]§b " + victim.getName() + "killed you, and lost " + (int)amount + "§e$!");
} catch (Exception e1) {
return;
}
}
}
谢谢您的帮助!
问题是,您没有在类and中实现侦听器,而不是告诉主类有一个侦听器类。
此外,您还应该创建一个新类作为EventListener,这将给您带来更多概述。当您创建一个名为“ DeathListener”的类时,您的类将如下所示:
package me.ghostyy.killmoney;
import java.math.BigDecimal;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.plugin.java.JavaPlugin;
import com.earth2me.essentials.api.Economy;
import org.bukkit.event.Listener; //importing the Listener
public class DeathListener implements Listener { //You have to implement the Listener to use it!
@EventHandler
public void deathEvent(PlayerDeathEvent e) {
Player killer = e.getEntity().getKiller();
Player victim = e.getEntity();
if (killer == null)
return;
try {
double amount = Economy.getMoneyExact(victim.getName()).doubleValue() / 10.0D;
victim.sendMessage("[§bKillMoney§f]§e You killed §b" + killer.getName() + "§e, you got " + (int)amount + "$!");
Economy.substract(victim.getName(), BigDecimal.valueOf(amount));
Economy.add(killer.getName(), BigDecimal.valueOf(amount));
killer.sendMessage("[§bKillMoney§f]§b " + victim.getName() + "killed you, and lost " + (int)amount + "§e$!");
} catch (Exception e1) {
return;
}
}
}
这是您在课堂上要做的所有事情。对于新事件,请创建一个新类。最后但并非最不重要的一点,您必须告诉您的主类有一个侦听器。将以下代码放入主类的onEnable()方法中:
getServer().getPluginManager().registerEvents(new DeathEvent(), this);
请记住,您作为侦听器创建的每个类都必须实现侦听器,并且必须如上所述将其添加到PluginManager中。
[[EDIT]正如乔纳斯已经提到的,https://www.spigotmc.org/wiki/using-the-event-api/很好解释!