From f12052dbbe26acee36b2367094418059237c972e Mon Sep 17 00:00:00 2001 From: jedk1 Date: Thu, 26 Nov 2015 18:24:34 +0000 Subject: [PATCH] Fix NPE on player log out. --- .../projectkorra/waterbending/FreezeMelt.java | 3 +++ .../projectkorra/waterbending/IceBlast.java | 14 ++++++++++---- .../projectkorra/waterbending/OctopusForm.java | 5 +++++ .../projectkorra/waterbending/Torrent.java | 4 ++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/com/projectkorra/projectkorra/waterbending/FreezeMelt.java b/src/com/projectkorra/projectkorra/waterbending/FreezeMelt.java index 6781313b..1c6ce2b7 100644 --- a/src/com/projectkorra/projectkorra/waterbending/FreezeMelt.java +++ b/src/com/projectkorra/projectkorra/waterbending/FreezeMelt.java @@ -110,6 +110,9 @@ public class FreezeMelt { public static boolean canThaw(Block block) { if (frozenblocks.containsKey(block)) { for (Player player : block.getWorld().getPlayers()) { + if (!player.isOnline()) { + return true; + } if (GeneralMethods.getBoundAbility(player) == null) { return true; } diff --git a/src/com/projectkorra/projectkorra/waterbending/IceBlast.java b/src/com/projectkorra/projectkorra/waterbending/IceBlast.java index ada71f8a..65ff8363 100644 --- a/src/com/projectkorra/projectkorra/waterbending/IceBlast.java +++ b/src/com/projectkorra/projectkorra/waterbending/IceBlast.java @@ -155,9 +155,11 @@ public class IceBlast { source.revertBlock(); progressing = false; } - BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName()); - if (bPlayer != null) { - bPlayer.addCooldown("IceBlast", cooldown); + if (player.isOnline()) { + BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName()); + if (bPlayer != null) { + bPlayer.addCooldown("IceBlast", cooldown); + } } instances.remove(id); } @@ -228,8 +230,12 @@ public class IceBlast { } private void progress() { + if (player.isDead() || !player.isOnline()) { + cancel(); + return; + } BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName()); - if (player.isDead() || !player.isOnline() || !GeneralMethods.canBend(player.getName(), "IceBlast") || bPlayer.isOnCooldown("IceBlast")) { + if (!GeneralMethods.canBend(player.getName(), "IceBlast") || bPlayer.isOnCooldown("IceBlast")) { cancel(); return; } diff --git a/src/com/projectkorra/projectkorra/waterbending/OctopusForm.java b/src/com/projectkorra/projectkorra/waterbending/OctopusForm.java index 134ae1f4..3dfa2c00 100644 --- a/src/com/projectkorra/projectkorra/waterbending/OctopusForm.java +++ b/src/com/projectkorra/projectkorra/waterbending/OctopusForm.java @@ -159,6 +159,11 @@ public class OctopusForm { } private void progress() { + if (player.isDead() || !player.isOnline()) { + remove(); + return; + } + if (!GeneralMethods.canBend(player.getName(), "OctopusForm")) { remove(); returnWater(); diff --git a/src/com/projectkorra/projectkorra/waterbending/Torrent.java b/src/com/projectkorra/projectkorra/waterbending/Torrent.java index a2ca6231..963f7fe7 100644 --- a/src/com/projectkorra/projectkorra/waterbending/Torrent.java +++ b/src/com/projectkorra/projectkorra/waterbending/Torrent.java @@ -563,6 +563,10 @@ public class Torrent { frozenblocks.remove(block); continue; } + if (!player.isOnline()) { + thaw(block); + continue; + } if (block.getBlock().getWorld() != player.getWorld()) { thaw(block); continue;