diff --git a/Changelog.txt b/Changelog.txt index e0cf3afe0..367ec4751 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -51,6 +51,7 @@ Version 1.4.00-dev = Fixed Experience.Gains.Mobspawners.Enabled not being used correctly (the check was inverted) = Fixed bug where Iron Grip was using the attacker's skill values rather than the defender's. = Fixed a bug where /party kick would trigger the PartyChangeEvent for the wrong player + = Fixed /party kick not working on offline players = Fixed a bug where party join messages weren't displayed = Fixed a bug where Disarm and Deflect had wrong values = Fixed Magic Hunter (Fishing ability) favoring certain enchants diff --git a/src/main/java/com/gmail/nossr50/party/PartyManager.java b/src/main/java/com/gmail/nossr50/party/PartyManager.java index 5c3ac99d3..0de09886e 100644 --- a/src/main/java/com/gmail/nossr50/party/PartyManager.java +++ b/src/main/java/com/gmail/nossr50/party/PartyManager.java @@ -39,7 +39,7 @@ public final class PartyManager { } /** - * Check if two players are in the same party. + * Check if two online players are in the same party. * * @param firstPlayer The first player * @param secondPlayer The second player diff --git a/src/main/java/com/gmail/nossr50/party/commands/PartyKickCommand.java b/src/main/java/com/gmail/nossr50/party/commands/PartyKickCommand.java index 0d21bc3b3..017d93e2a 100644 --- a/src/main/java/com/gmail/nossr50/party/commands/PartyKickCommand.java +++ b/src/main/java/com/gmail/nossr50/party/commands/PartyKickCommand.java @@ -7,8 +7,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.commands.CommandHelper; -import com.gmail.nossr50.datatypes.McMMOPlayer; import com.gmail.nossr50.events.party.McMMOPartyChangeEvent; import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason; import com.gmail.nossr50.locale.LocaleLoader; @@ -38,32 +36,25 @@ public class PartyKickCommand implements CommandExecutor { return true; } - McMMOPlayer mcMMOTarget = Users.getPlayer(args[1]); + OfflinePlayer target = mcMMO.p.getServer().getOfflinePlayer(args[1]); - // Would be nice to find a way to check if a player is valid here - this won't work directly because it'll also throw null for an offline player -// if (mcMMOTarget == null) { -// sender.sendMessage(LocaleLoader.getString("Party.Player.Invalid")); -// return false; -// } - - Player target = mcMMOTarget.getPlayer(); - - if (!PartyManager.inSameParty(player, target)) { + if (!playerParty.getMembers().contains(target)) { sender.sendMessage(LocaleLoader.getString("Party.NotInYourParty", args[1])); return true; } - if (mcMMO.p.getServer().getOfflinePlayer(args[1]).isOnline()) { + if (target.isOnline()) { + Player onlineTarget = target.getPlayer(); String partyName = playerParty.getName(); - McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(target, partyName, null, EventReason.KICKED_FROM_PARTY); + McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(onlineTarget, partyName, null, EventReason.KICKED_FROM_PARTY); mcMMO.p.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { return true; } - target.sendMessage(LocaleLoader.getString("Commands.Party.Kick", partyName)); + onlineTarget.sendMessage(LocaleLoader.getString("Commands.Party.Kick", partyName)); } PartyManager.removeFromParty(target, playerParty); diff --git a/src/main/java/com/gmail/nossr50/util/Users.java b/src/main/java/com/gmail/nossr50/util/Users.java index 570564f1d..445f74eac 100644 --- a/src/main/java/com/gmail/nossr50/util/Users.java +++ b/src/main/java/com/gmail/nossr50/util/Users.java @@ -121,7 +121,7 @@ public final class Users { * @param player The player whose McMMOPlayer to retrieve * @return the player's McMMOPlayer object */ - public static McMMOPlayer getPlayer(Player player) { + public static McMMOPlayer getPlayer(OfflinePlayer player) { return players.get(player.getName()); } }