我遇到此错误: 类型不匹配:无法从CommandSender转换为Player 这是错误的代码:
在“最终播放器senderPlayer =(播放器的发送者实例)?发送者: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;
}
答案 0 :(得分:3)
我猜想 Player 是从 CommandSender 继承的,在这种情况下,您需要将 CommandSender 对象投射到 Player strong>对象。 Instanceof 仅检查它在技术上是否是播放器。该行应该是。
final Player senderPlayer = (sender instanceof Player) ? (Player)sender : null;