if (block.getMaterial().equals(VanillaMaterials.VINES) && cause instanceof EntityCause) {
//get block by block tracing from the player view
Entity entity = ((EntityCause) cause).getSource();
EntityHead head = entity.get(EntityHead.class);
if (head != null) {
BlockIterator iter = head.getBlockView();
Block next;
while (iter.hasNext()) {
next = iter.next();
if (next.equals(block)) {
Block target = iter.hasNext() ? iter.next() : null;
if (target != null) {
//get what face this target is relative to the main block
for (BlockFace face : BlockFaces.NESWBT) {
if (block.translate(face).equals(target)) {
return face;