gpt4 book ai didi

java - 为什么不给凶手加钱,而不给受害者减钱呢?并且消息未发送

转载 作者:行者123 更新时间:2023-12-01 19:03:22 25 4
gpt4 key购买 nike

没有错误,但如果我杀了人,什么也不做。我使用必需品经济来赚钱。我不知道为什么它不起作用。这是我的主课代码:

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

}

预先感谢您的帮助!

最佳答案

问题是,您没有在类中实现监听器并且没有告诉主类存在监听器类。

您还应该创建一个新类作为事件监听器,这可以为您提供更多概述。当您创建名为“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;
}
}

}

这就是您在本类(class)中要做的全部事情。对于新事件,创建一个新类。最后但并非最不重要的一点是,您必须告诉主类有一个监听器。将以下代码放入主类的 onEnable() 方法中:

getServer().getPluginManager().registerEvents(new DeathEvent(), this);

请记住,您作为监听器创建的每个类都必须实现监听器,并且必须添加到 PluginManager,如上所示。

[编辑] 正如乔纳斯已经提到的,https://www.spigotmc.org/wiki/using-the-event-api/解释得很好!

关于java - 为什么不给凶手加钱,而不给受害者减钱呢?并且消息未发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59598632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com