diff --git a/src/main/java/com/gmail/nossr50/api/PartyAPI.java b/src/main/java/com/gmail/nossr50/api/PartyAPI.java index f73f9d622..9dc078b54 100644 --- a/src/main/java/com/gmail/nossr50/api/PartyAPI.java +++ b/src/main/java/com/gmail/nossr50/api/PartyAPI.java @@ -9,7 +9,6 @@ import org.bukkit.entity.Player; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.party.Party; -import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.util.player.UserManager; @@ -41,13 +40,7 @@ public final class PartyAPI { * @return true if the player is in a party, false otherwise */ public static boolean inParty(Player player) { - McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - if (mcMMOPlayer == null) { - return false; - } - - return mcMMOPlayer.inParty(); + return UserManager.getPlayer(player).inParty(); } /** diff --git a/src/main/java/com/gmail/nossr50/commands/KrakenCommand.java b/src/main/java/com/gmail/nossr50/commands/KrakenCommand.java index e8c82e576..41a0b7471 100644 --- a/src/main/java/com/gmail/nossr50/commands/KrakenCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/KrakenCommand.java @@ -11,6 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.player.UserManager; @@ -39,9 +40,10 @@ public class KrakenCommand implements TabExecutor { return true; } - McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]); + String playerName = Misc.getMatchedPlayerName(args[0]); + McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName); - if (!CommandUtils.checkPlayerExistence(sender, args[0], mcMMOPlayer)) { + if (!CommandUtils.checkPlayerExistence(sender, playerName, mcMMOPlayer)) { return true; } diff --git a/src/main/java/com/gmail/nossr50/commands/ToggleCommand.java b/src/main/java/com/gmail/nossr50/commands/ToggleCommand.java index 4e1b978f3..d2281eb6b 100644 --- a/src/main/java/com/gmail/nossr50/commands/ToggleCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/ToggleCommand.java @@ -11,6 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.player.UserManager; @@ -45,9 +46,10 @@ public abstract class ToggleCommand implements TabExecutor { return true; } - mcMMOPlayer = UserManager.getPlayer(args[0]); + String playerName = Misc.getMatchedPlayerName(args[0]); + mcMMOPlayer = UserManager.getPlayer(playerName); - if (!CommandUtils.checkPlayerExistence(sender, args[0], mcMMOPlayer)) { + if (!CommandUtils.checkPlayerExistence(sender, playerName, mcMMOPlayer)) { return true; } diff --git a/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java b/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java index a9ee2aa76..884c4bfd7 100644 --- a/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java @@ -11,6 +11,7 @@ import org.bukkit.util.StringUtil; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.player.UserManager; @@ -21,15 +22,17 @@ public class McremoveCommand implements TabExecutor { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { switch (args.length) { case 1: - if (UserManager.getPlayer(args[0]) == null && CommandUtils.unloadedProfile(sender, mcMMO.getDatabaseManager().loadPlayerProfile(args[0], false))) { + String playerName = Misc.getMatchedPlayerName(args[0]); + + if (UserManager.getPlayer(playerName) == null && CommandUtils.unloadedProfile(sender, mcMMO.getDatabaseManager().loadPlayerProfile(playerName, false))) { return true; } - if (mcMMO.getDatabaseManager().removeUser(args[0])) { - sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", args[0])); + if (mcMMO.getDatabaseManager().removeUser(playerName)) { + sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", playerName)); } else { - sender.sendMessage(args[0] + " could not be removed from the database."); // Pretty sure this should NEVER happen. + sender.sendMessage(playerName + " could not be removed from the database."); // Pretty sure this should NEVER happen. } return true; diff --git a/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java index 35f97cb97..542c69368 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java @@ -67,7 +67,7 @@ public abstract class ExperienceCommand implements TabExecutor { } String playerName = Misc.getMatchedPlayerName(args[0]); - McMMOPlayer mcMMOPlayer = UserManager.getPlayerExact(playerName); + McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName); // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. if (mcMMOPlayer == null) { diff --git a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java index 2e4385c24..76f8e21a6 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java @@ -8,6 +8,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent; import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.player.UserManager; @@ -56,11 +57,12 @@ public class SkillresetCommand extends ExperienceCommand { return true; } - mcMMOPlayer = UserManager.getPlayer(args[0]); + String playerName = Misc.getMatchedPlayerName(args[0]); + mcMMOPlayer = UserManager.getPlayer(playerName); // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. if (mcMMOPlayer == null) { - profile = mcMMO.getDatabaseManager().loadPlayerProfile(args[0], false); + profile = mcMMO.getDatabaseManager().loadPlayerProfile(playerName, false); if (CommandUtils.unloadedProfile(sender, profile)) { return true; @@ -76,7 +78,7 @@ public class SkillresetCommand extends ExperienceCommand { editValues(); } - handleSenderMessage(sender, args[0]); + handleSenderMessage(sender, playerName); return true; default: diff --git a/src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java index b902136ed..6eab8011f 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java @@ -19,7 +19,7 @@ public class PartyInviteCommand implements CommandExecutor { switch (args.length) { case 2: String playerName = Misc.getMatchedPlayerName(args[1]); - McMMOPlayer mcMMOTarget = UserManager.getPlayerExact(playerName); + McMMOPlayer mcMMOTarget = UserManager.getPlayer(playerName); if (!CommandUtils.checkPlayerExistence(sender, playerName, mcMMOTarget)) { return false; diff --git a/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java index a560540bd..d13705b73 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java @@ -66,7 +66,7 @@ public class PartyJoinCommand implements CommandExecutor { private boolean canJoinParty(CommandSender sender, String targetName) { targetName = Misc.getMatchedPlayerName(targetName); - mcMMOTarget = UserManager.getPlayerExact(targetName); + mcMMOTarget = UserManager.getPlayer(targetName); if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) { return false; diff --git a/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java b/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java index d2176232c..33cae241f 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java @@ -87,7 +87,7 @@ public class PtpCommand implements TabExecutor { } } - sendTeleportRequest(sender, player, args[0]); + sendTeleportRequest(sender, player, Misc.getMatchedPlayerName(args[0])); return true; default: @@ -139,7 +139,6 @@ public class PtpCommand implements TabExecutor { } target = mcMMOTarget.getPlayer(); - targetName = target.getName(); if (player.equals(target)) { player.sendMessage(LocaleLoader.getString("Party.Teleport.Self")); diff --git a/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java b/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java index be912aa28..18db6cd8d 100644 --- a/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java @@ -34,7 +34,7 @@ public class InspectCommand implements TabExecutor { } String playerName = Misc.getMatchedPlayerName(args[0]); - McMMOPlayer mcMMOPlayer = UserManager.getPlayerExact(playerName); + McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName); // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. if (mcMMOPlayer == null) { diff --git a/src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java b/src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java index 6a3ace8b5..972382ea5 100644 --- a/src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java @@ -52,7 +52,7 @@ public class McrankCommand implements TabExecutor { } String playerName = Misc.getMatchedPlayerName(args[0]); - McMMOPlayer mcMMOPlayer = UserManager.getPlayerExact(playerName); + McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName); if (mcMMOPlayer != null) { playerName = mcMMOPlayer.getPlayer().getName(); diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 945e82880..8f6d11b1a 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -215,10 +215,6 @@ public class EntityListener implements Listener { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (mcMMOPlayer == null) { - return; - } - /* Check for invincibility */ if (mcMMOPlayer.getGodMode()) { event.setCancelled(true); diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index e33d385c8..f0f99cd6a 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -82,13 +82,7 @@ public class PlayerListener implements Listener { return; } - McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - if (mcMMOPlayer == null) { - return; - } - - mcMMOPlayer.actualizeTeleportATS(); + UserManager.getPlayer(player).actualizeTeleportATS(); } /** @@ -167,10 +161,6 @@ public class PlayerListener implements Listener { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (mcMMOPlayer == null) { - return; - } - mcMMOPlayer.checkGodMode(); mcMMOPlayer.checkParty(); } @@ -300,10 +290,6 @@ public class PlayerListener implements Listener { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (mcMMOPlayer == null) { - return; - } - Item drop = event.getItem(); ItemStack dropStack = drop.getItemStack(); @@ -346,10 +332,6 @@ public class PlayerListener implements Listener { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (mcMMOPlayer == null) { - return; - } - mcMMOPlayer.resetAbilityMode(); BleedTimerTask.bleedOut(player); mcMMOPlayer.getProfile().save(); @@ -424,12 +406,6 @@ public class PlayerListener implements Listener { } McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - // TODO: This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else. - if (mcMMOPlayer == null) { - return; - } - MiningManager miningManager = mcMMOPlayer.getMiningManager(); Block block = event.getClickedBlock(); ItemStack heldItem = player.getItemInHand(); @@ -521,12 +497,6 @@ public class PlayerListener implements Listener { } McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - // TODO: This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else. - if (mcMMOPlayer == null) { - return; - } - ItemStack heldItem = player.getItemInHand(); switch (event.getAction()) { @@ -632,12 +602,6 @@ public class PlayerListener implements Listener { } McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - if (mcMMOPlayer == null) { - mcMMO.p.debug(player.getName() + " is currently chatting, but has never logged on to the server."); - return; - } - ChatManager chatManager = null; if (mcMMOPlayer.getPartyChatMode()) { diff --git a/src/main/java/com/gmail/nossr50/party/PartyManager.java b/src/main/java/com/gmail/nossr50/party/PartyManager.java index 6acee56b7..894eda2b5 100644 --- a/src/main/java/com/gmail/nossr50/party/PartyManager.java +++ b/src/main/java/com/gmail/nossr50/party/PartyManager.java @@ -63,10 +63,6 @@ public final class PartyManager { McMMOPlayer firstMcMMOPlayer = UserManager.getPlayer(firstPlayer); McMMOPlayer secondMcMMOPlayer = UserManager.getPlayer(secondPlayer); - if (firstMcMMOPlayer == null || secondMcMMOPlayer == null) { - return false; - } - if (firstMcMMOPlayer.getParty() == null || secondMcMMOPlayer.getParty() == null) { return false; } @@ -514,10 +510,6 @@ public final class PartyManager { } private static void processPartyLeaving(McMMOPlayer mcMMOPlayer) { - if (mcMMOPlayer == null) { - return; - } - mcMMOPlayer.removeParty(); mcMMOPlayer.setPartyChat(false); mcMMOPlayer.setItemShareModifier(10); diff --git a/src/main/java/com/gmail/nossr50/util/Misc.java b/src/main/java/com/gmail/nossr50/util/Misc.java index a2088221a..448995c23 100644 --- a/src/main/java/com/gmail/nossr50/util/Misc.java +++ b/src/main/java/com/gmail/nossr50/util/Misc.java @@ -182,23 +182,20 @@ public final class Misc { public static void profileCleanup(String playerName) { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName); + Player player = mcMMOPlayer.getPlayer(); + McMMOHud spoutHud = mcMMOPlayer.getProfile().getSpoutHud(); - if (mcMMOPlayer != null) { - Player player = mcMMOPlayer.getPlayer(); - McMMOHud spoutHud = mcMMOPlayer.getProfile().getSpoutHud(); + if (spoutHud != null) { + spoutHud.removeWidgets(); + } - if (spoutHud != null) { - spoutHud.removeWidgets(); - } + UserManager.remove(playerName); - UserManager.remove(playerName); + if (player.isOnline()) { + UserManager.addUser(player); - if (player.isOnline()) { - UserManager.addUser(player); - - if (mcMMO.isSpoutEnabled()) { - SpoutUtils.reloadSpoutPlayer(player); - } + if (mcMMO.isSpoutEnabled()) { + SpoutUtils.reloadSpoutPlayer(player); } } } @@ -273,16 +270,16 @@ public final class Misc { public static List matchPlayer(String partialName) { List matchedPlayers = new ArrayList(); - for (String iterPlayerName : mcMMO.getDatabaseManager().getStoredUsers()) { - if (partialName.equalsIgnoreCase(iterPlayerName)) { + for (String playerName : mcMMO.getDatabaseManager().getStoredUsers()) { + if (partialName.equalsIgnoreCase(playerName)) { // Exact match matchedPlayers.clear(); - matchedPlayers.add(iterPlayerName); + matchedPlayers.add(playerName); break; } - if (iterPlayerName.toLowerCase().contains(partialName.toLowerCase())) { + if (playerName.toLowerCase().contains(partialName.toLowerCase())) { // Partial match - matchedPlayers.add(iterPlayerName); + matchedPlayers.add(playerName); } } @@ -301,6 +298,7 @@ public final class Misc { if (matches.size() == 1) { partialName = matches.get(0); } + return partialName; } diff --git a/src/main/java/com/gmail/nossr50/util/player/UserManager.java b/src/main/java/com/gmail/nossr50/util/player/UserManager.java index 9f4120d54..2fd5e8a60 100644 --- a/src/main/java/com/gmail/nossr50/util/player/UserManager.java +++ b/src/main/java/com/gmail/nossr50/util/player/UserManager.java @@ -2,15 +2,14 @@ package com.gmail.nossr50.util.player; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Set; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.util.Misc; public final class UserManager { private final static Map players = new HashMap(); @@ -72,29 +71,13 @@ public final class UserManager { } /** - * Get the McMMOPlayer of a player by a partial name. + * Get the McMMOPlayer of a player by name. * - * @param playerName The partial name of the player whose McMMOPlayer to retrieve + * @param playerName The name of the player whose McMMOPlayer to retrieve * @return the player's McMMOPlayer object */ public static McMMOPlayer getPlayer(String playerName) { - List matches = Misc.matchPlayer(playerName); - - if (matches.size() == 1) { - playerName = matches.get(0); - } - - return players.get(playerName); - } - - /** - * Get the McMMOPlayer of a player by the exact name. - * - * @param playerName The exact name of the player whose McMMOPlayer to retrieve - * @return the player's McMMOPlayer object - */ - public static McMMOPlayer getPlayerExact(String playerName) { - return players.get(playerName); + return retrieveMcMMOPlayer(playerName); } /** @@ -104,6 +87,24 @@ public final class UserManager { * @return the player's McMMOPlayer object */ public static McMMOPlayer getPlayer(OfflinePlayer player) { - return players.get(player.getName()); + return retrieveMcMMOPlayer(player.getName()); + } + + private static McMMOPlayer retrieveMcMMOPlayer(String playerName) { + McMMOPlayer mcMMOPlayer = players.get(playerName); + + if (mcMMOPlayer == null) { + Player player = mcMMO.p.getServer().getPlayerExact(playerName); + + if (player == null) { + mcMMO.p.getLogger().warning("A valid mcMMOPlayer object could not be found for " + playerName + "."); + return null; + } + + mcMMOPlayer = new McMMOPlayer(player); + players.put(playerName, mcMMOPlayer); + } + + return mcMMOPlayer; } } diff --git a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java index 103b37459..75990de8e 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -139,11 +139,6 @@ public final class CombatUtils { private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Entity arrow) { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - if (mcMMOPlayer == null) { - return; - } - ArcheryManager archeryManager = mcMMOPlayer.getArcheryManager(); if (archeryManager.canSkillShot()) { @@ -242,7 +237,7 @@ public final class CombatUtils { * This will be reverted back to the switch statement once the fix is addressed on their end. */ - if (damager.getType() == EntityType.WOLF) { + else if (damager.getType() == EntityType.WOLF) { Wolf wolf = (Wolf) damager; AnimalTamer tamer = wolf.getOwner(); @@ -254,8 +249,7 @@ public final class CombatUtils { } } } - - if (damager.getType() == EntityType.ARROW) { + else if (damager.getType() == EntityType.ARROW) { LivingEntity shooter = ((Arrow) damager).getShooter(); if (shooter != null && shooter instanceof Player && shouldProcessSkill(target, SkillType.ARCHERY)) { @@ -317,11 +311,6 @@ public final class CombatUtils { Player player = (Player) target; McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - - if (mcMMOPlayer == null) { - return; - } - AcrobaticsManager acrobaticsManager = mcMMOPlayer.getAcrobaticsManager(); if (acrobaticsManager.canDodge(damager)) {