没有错误,但是如果我杀死某人,则什么也不做。我使用了要钱的基本经济。
我不知道为什么它不起作用。这是我的主班
码:

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/

10-12 00:32
查看更多