protected Point getBlockSnap() {
        if (currentlyPlacing != null) {
            int x = (gameController.getCurrentMousePosition().x
                    + gameController.getMapOffsetX())
                    / BlockManager.getBlockWidth()
                    * BlockManager.getBlockWidth();
            int y = (gameController.getMapOffsetY()
                    - gameController.getCurrentMousePosition().y
                    + gameController.getPHeight())
                    / BlockManager.getBlockHeight()
                    * BlockManager.getBlockHeight();
            if (!doesRectContainBlocks(x + 1, y + 1, currentlyPlacing.getWidth() - 2, currentlyPlacing.getHeight() - 2)) {
                y = findNextFloor(x, y, currentlyPlacing.getHeight()) - BlockManager.getBlockHeight() - currentlyPlacing.getHeight();
            }
            Point p = new Point(x, y);
            return p;
        } else {
            return new Point(0, 0);
        }
    }