From lowpass to bandpass
You just shifted the low pass filter to the right, so you generated a complex-valued filter, as you've observed. Multiplying a real-valued impulse response with a complex exponential naturally results in a complex-valued impulse response. What you actually have to do is shift the spectrum to the right and to the left:

$$h_{BP}[n]=h_{LP}[n]e^{jn\omega_0}+h_{LP}[n]e^{-jn\omega_0}\tag{1}$$

where $\omega_0$ is the desired center frequency. Eq. $(1)$ is equivalent to

$$h_{BP}[n]=2h_{LP}[n]\cos(n\omega_0)\tag{2}$$

from which it is obvious that the resulting band pass impulse response is real-valued.

The reason why it works with the high pass filter is that $e^{jn\pi}=\cos(n\pi)=(-1)^n$, so for this special case ($\omega_0=\pi$) it makes no difference.