@Override public void checkMove(MoveData inData) { if (!inData.isValid()) return; if (inData.getYDiff() >= 0) { if (!Pathfinder.isTransparent(inData.getAboveBlock()) || !Pathfinder.isTransparent(inData.getHeadBlock())) { inData.setValid(false); return; } } if (inData.getXDiff() != 0 && inData.getZDiff() != 0) { if (!inData .getPathfinder() .canWalk(inData.getFrom(), inData.getFrom().add(inData.getXDiff(), 0, 0)) || !inData .getPathfinder() .canWalk( inData.getFrom(), inData .getFrom() .add( 0, 0, inData .getZDiff()))) // TODO this is really inefficient and might end in a // loop inData.setValid(false); } }