我遇到这个错误:
类型不匹配:无法从CommandSender转换为Player
这是错误的代码:

在“最终播放器senderPlayer =(播放器的发送者instance)?sender:null;”行中

public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
    if (args.length < 2) {
        sender.sendMessage(ConfigurationService.RED + "Usage: /" + label + " <playerName> <amount>");
    } else {
        final Integer amount = Ints.tryParse(args[1]);

        if (amount == null) {
            sender.sendMessage(ConfigurationService.RED + "'" + args[1] + "' is not a valid number.");
        } else if (amount <= 0) {
            sender.sendMessage(ConfigurationService.RED + "You must send money in positive quantities.");
        } else if (amount >= 50000) {
            sender.sendMessage(ConfigurationService.RED + "You cannot send more than " + 50000 + ".");
        } else {
            final Player senderPlayer = (sender instanceof Player) ? sender : null;
            final FactionUser playerUser = (senderPlayer != null) ? this.plugin.getUserManager().getUser(senderPlayer.getUniqueId()) : null;
            final int senderBalance = (playerUser != null) ? playerUser.getBalance() : 5000;

            if (senderBalance < amount) {
                sender.sendMessage(ConfigurationService.RED + "You tried to pay " + '$' + amount + ", but you only have " + '$' + senderBalance + " in your bank account.");
            } else {
                final UUID target = this.plugin.getUserManager().fetchUUID(args[0]);
                final FactionUser targetUser;

                if (target == null || (targetUser = this.plugin.getUserManager().getUser(target)).getName() == null) {
                    sender.sendMessage(ConfigurationService.RED + "Player not found");
                } else if (senderPlayer != null && senderPlayer.getUniqueId() == target) {
                    sender.sendMessage(ConfigurationService.RED + "You cannot send money to yourself.");
                } else {
                    if (playerUser != null) {
                        playerUser.setBalance(playerUser.getBalance() - amount);
                    }

                    targetUser.setBalance(targetUser.getBalance() + amount);

                    if (targetUser.isOnline()) {
                        targetUser.getPlayer().sendMessage(ConfigurationService.YELLOW + sender.getName() + " has sent you " + ConfigurationService.GOLD + '$' + amount + ConfigurationService.YELLOW + '.');
                    }

                    sender.sendMessage(ConfigurationService.YELLOW + "You have sent " + ChatColor.GREEN + '$' + amount + ConfigurationService.YELLOW + " to " + targetUser.getName() + '.');
                }
            }
        }
    }
    return true;
}

最佳答案

我猜Player是从CommandSender继承的,在这种情况下,您需要将CommandSender对象转换为Player对象。 Instanceof只是检查它在技术上是否是Player。该行应该。

final Player senderPlayer = (sender instanceof Player) ? (Player)sender : null;

09-10 01:58
查看更多