我遇到这个错误:
类型不匹配:无法从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;