It appears the the getData() data for Material.Sign may not be getting set correctly. The `byte data = getData()` line in Sign.getAttachedFace() is returning 0. Because the switch statement begins with `case 0x2` the method eventually returns a null as no case statement will match currently match 0. This causes a a NPE later when calling getFacing() due to the final condition in the method being return getAttachedFace().getOppositeFace();.
(this is my first stab at submitting a bug so hopefully all this makes sense)