没有错误,但是如果我杀死某人,则什么也不做。我使用了要钱的基本经济。
我不知道为什么它不起作用。这是我的主班
码:
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;
}
}
}
预先感谢您的帮助!
最佳答案
问题是,您没有在类中实现侦听器,也没有告诉主类有侦听器类。
另外,您应该创建一个新的Class作为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中,如上所示。
[编辑]正如乔纳斯(Jonas)所述,https://www.spigotmc.org/wiki/using-the-event-api/很好地解释了它!
关于java - 为什么不给杀手加钱,而不是从受害者那里减去钱呢?并且消息未发送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59598632/