&& Math.abs(srcHex.getElevation() - destHex.getElevation()) > 2) {
&& Math.abs(srcHex.floor() - destHex.getElevation()) > 2) {
    public static boolean isMovementPossible(Game game, int entityId,                                              Coords src, Coords dest,                                             int entityMoveType,                                             int stepType) {        final Entity entity = game.getEntity(entityId);        final Hex srcHex = game.board.getHex(src);        final Hex destHex = game.board.getHex(dest);                // arguments valid?        if (entity == null) {            throw new IllegalArgumentException("Entity invalid.");        }        if (src.distance(dest) > 1) {            throw new IllegalArgumentException("Coordinates must be adjacent.");        }                if (entityMoveType == Entity.MOVE_ILLEGAL) {            // that was easy            return false;        }        // another easy check        if (!game.board.contains(dest)) {            return false;        }        // check elevation difference > 2        if (entityMoveType != Entity.MOVE_JUMP             && Math.abs(srcHex.getElevation() - destHex.getElevation()) > 2) {            return false;        }        // units moving backwards may not change elevation levels (I think this rule's dumb)        if (stepType == MovementData.STEP_BACKWARDS            && srcHex.getElevation() != destHex.getElevation()) {            return false;        }        // can't run into water        if (entityMoveType == Entity.MOVE_RUN             && destHex.getTerrainType() == Terrain.WATER            && destHex.getElevation() < 0) {            return false;        }        // can't jump out of water        if (entityMoveType == Entity.MOVE_JUMP             && entity.getPosition().equals(src)            && srcHex.getTerrainType() == Terrain.WATER) {            return false;        }        // can't move into a hex with an enemy unit, unless charging or jumping        if (entityMoveType != Entity.MOVE_JUMP            && stepType != MovementData.STEP_CHARGE            && stepType != MovementData.STEP_DFA            && game.getEntity(dest) != null            && entity.isEnemyOf(game.getEntity(dest))) {            return false;        }        // can't jump over too-high terrain        if (entityMoveType == Entity.MOVE_JUMP            && destHex.getElevation()                > (game.board.getHex(entity.getPosition()).getElevation() +                  entity.getJumpMP())) {            return false;        }                return true;    }