Make sure disguise isn't running in an unloaded world
This commit is contained in:
		| @@ -682,8 +682,9 @@ public abstract class Disguise { | ||||
|  | ||||
|         Bukkit.getPluginManager().callEvent(event); | ||||
|  | ||||
|         // If this disguise is not in use, and the entity isnt a player that's offline | ||||
|         if (event.isCancelled() && (!(getEntity() instanceof Player) || ((Player) getEntity()).isOnline())) { | ||||
|         // Can only continue a disguise that's valid | ||||
|         if (event.isCancelled() && getEntity() != null && Bukkit.getWorlds().contains(getEntity().getWorld()) && | ||||
|                 (!(getEntity() instanceof Player) || ((Player) getEntity()).isOnline())) { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import me.libraryaddict.disguise.disguisetypes.watchers.BatWatcher; | ||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||
| import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; | ||||
| import me.libraryaddict.disguise.utilities.translations.LibsMsg; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.entity.Player; | ||||
| import org.bukkit.scheduler.BukkitRunnable; | ||||
| @@ -64,8 +65,13 @@ class DisguiseRunnable extends BukkitRunnable { | ||||
|  | ||||
|     @Override | ||||
|     public void run() { | ||||
|         if (!disguise.isDisguiseInUse() || disguise.getEntity() == null) { | ||||
|             cancel(); | ||||
|         if (!disguise.isDisguiseInUse() || disguise.getEntity() == null || !Bukkit.getWorlds().contains(disguise.getEntity().getWorld())) { | ||||
|             disguise.stopDisguise(); | ||||
|  | ||||
|             // If still somehow not cancelled | ||||
|             if (!isCancelled()) { | ||||
|                 cancel(); | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user