Primeiro, p.getItemInHand pode retornar nulo, você tem que checar isso, e o getTargetBlock tabem pode retornar nulo, provavelmente é ai o erro.
basta checar se ele é nulo ou não... tipo assim
Block b = blabla.getTargetBlock(null, sla);
if ( b == null )
return;
Location loc = b.getLocation();
bla bkla .....