为什么不给杀手加钱,又不从受害者那里减去钱?并且消息未发送

问题描述 投票:0回答:1

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

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;
        } 
    }

}

谢谢您的帮助!

java minecraft bukkit
1个回答
0
投票

问题是,您没有在类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/很好解释!

© www.soinside.com 2019 - 2024. All rights reserved.