@Override
	public boolean canApplyAbilities(LivingEntity entity)
	{
		if (entity == null)
			return true;
		
		final boolean async = !P.p().getServer().isPrimaryThread();
		
		for (Entry<Plugin, Protector> entry : protectors.entrySet())
		{
			if (!entry.getKey().isEnabled())
				continue;
			
			Protector protector = entry.getValue();
			
			try
			{
				if (async && !protector.supportsAsynchronousUsage())
					continue;
				
				if (!protector.canApplyAbilities(entity))
					return false;
			}
			catch (Exception e)
			{
				P.p().getLogger().severe("Caught Exception while checking if a mob could have abilities");
				e.printStackTrace();
			}
		}
		
		return true;
	}