gpt4 book ai didi

java - 使用 Bukkit Vault API 向玩家账户充值

转载 作者:行者123 更新时间:2023-11-30 03:42:12 25 4
gpt4 key购买 nike

我正在为我的服务器开发 KitPvP 部分的插件。

现在我正在添加 MoneyPerKill 但遇到了问题。

我的代码是:

package com.lobbyist.junk.kitpvp;

import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;

import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.plugin.RegisteredServiceProvider;

public class MoneyPerKill implements Listener {

public static Economy econ = null;

@EventHandler
public void onPlayerDeathEvent(PlayerDeathEvent event) {
Player player = event.getEntity();
Player killer = player.getKiller();
EconomyResponse r = econ.depositPlayer(killer, 10.00);
if (r.transactionSuccess()) {
killer.sendMessage(ChatColor.GOLD + "You recieved $10 for killing" + player.getDisplayName());
}
}
}

在我的主类 Main.java 中,我还注册了事件。

Main.java 中我有:

public static Economy econ = null;
private boolean setupEconomy() {
RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
if (economyProvider != null) {
econ = economyProvider.getProvider();
}

return (econ != null);
}

问题是,当 killer 杀死玩家时,它不会给他们钱。

最佳答案

据我所知,您正在 Main.java 的 econ 字段中注册并引用 Economy 服务对象,但在 MoneyPerKill.java PlayerDeathEvent 监听器中,您引用的 econ 与 MoneyPerKill 的 econ 中一样,该对象为 null。因此,此时,只要玩家死亡,您的代码就会抛出 NullPointerExceptions。

要解决此问题,您需要引用 Main.java 的 econ 字段。为此,请输入 Main.econ.depositPlayer(killer, 10.00)。

附注您应该考虑使用 Main 类实例,而不是到处创建静态字段,但这不是主题。

还要考虑 Rishaan Gupta 所说的话。

关于java - 使用 Bukkit Vault API 向玩家账户充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580147/

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