瀏覽代碼

Patching NPEs involving invalid player objects and player interactions.

Glitchfinder 12 年之前
父節點
當前提交
ed5a43966d
共有 1 個文件被更改,包括 13 次插入7 次删除
  1. 13 7
      src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

+ 13 - 7
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -326,7 +326,13 @@ public class PlayerListener implements Listener {
             return;
             return;
         }
         }
 
 
-        MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
+        McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
+
+        if (mcMMOPlayer == null) {
+            return;
+        }
+
+        MiningManager miningManager = mcMMOPlayer.getMiningManager();
 
 
         switch (event.getAction()) {
         switch (event.getAction()) {
             case RIGHT_CLICK_BLOCK:
             case RIGHT_CLICK_BLOCK:
@@ -334,7 +340,7 @@ public class PlayerListener implements Listener {
 
 
                 /* REPAIR CHECKS */
                 /* REPAIR CHECKS */
                 if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
                 if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
-                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
+                    RepairManager repairManager = mcMMOPlayer.getRepairManager();
                     event.setCancelled(true);
                     event.setCancelled(true);
 
 
                     // Make sure the player knows what he's doing when trying to repair an enchanted item
                     // Make sure the player knows what he's doing when trying to repair an enchanted item
@@ -345,7 +351,7 @@ public class PlayerListener implements Listener {
                 }
                 }
                 /* SALVAGE CHECKS */
                 /* SALVAGE CHECKS */
                 else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
                 else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
-                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
+                    RepairManager repairManager = mcMMOPlayer.getRepairManager();
                     event.setCancelled(true);
                     event.setCancelled(true);
 
 
                     // Make sure the player knows what he's doing when trying to salvage an enchanted item
                     // Make sure the player knows what he's doing when trying to salvage an enchanted item
@@ -371,21 +377,21 @@ public class PlayerListener implements Listener {
 
 
                 /* REPAIR CHECKS */
                 /* REPAIR CHECKS */
                 if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
                 if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
-                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
+                    RepairManager repairManager = mcMMOPlayer.getRepairManager();
 
 
                     // Cancel repairing an enchanted item
                     // Cancel repairing an enchanted item
                     if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
                     if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
-                        UserManager.getPlayer(player).setLastAnvilUse(Repair.repairAnvilId, 0);
+                        mcMMOPlayer.setLastAnvilUse(Repair.repairAnvilId, 0);
                         player.sendMessage(LocaleLoader.getString("Skills.Cancelled", LocaleLoader.getString("Repair.Pretty.Name")));
                         player.sendMessage(LocaleLoader.getString("Skills.Cancelled", LocaleLoader.getString("Repair.Pretty.Name")));
                     }
                     }
                 }
                 }
                 /* SALVAGE CHECKS */
                 /* SALVAGE CHECKS */
                 else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
                 else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
-                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
+                    RepairManager repairManager = mcMMOPlayer.getRepairManager();
 
 
                     // Cancel salvaging an enchanted item
                     // Cancel salvaging an enchanted item
                     if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
                     if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
-                        UserManager.getPlayer(player).setLastAnvilUse(Repair.salvageAnvilId, 0);
+                        mcMMOPlayer.setLastAnvilUse(Repair.salvageAnvilId, 0);
                         player.sendMessage(LocaleLoader.getString("Skills.Cancelled", LocaleLoader.getString("Salvage.Pretty.Name")));
                         player.sendMessage(LocaleLoader.getString("Skills.Cancelled", LocaleLoader.getString("Salvage.Pretty.Name")));
                     }
                     }
                 }
                 }