public static VectorPoint of(Vector3d position, Direction direction) {
        Objects.requireNonNull(position, "position");
        Objects.requireNonNull(direction, "direction");
        return new VectorPoint(position, direction);
    }
An immutable and serializable vector + direction object
helper/src/main/java/me/lucko/helper/serialize/VectorPoint.java