public static BlockPosition of(Location location) {
        Objects.requireNonNull(location, "location");
        return of(location.getBlockX(), location.getBlockY(), location.getBlockZ(), location.getWorld().getName());
    }
An immutable and serializable block location object
helper/src/main/java/me/lucko/helper/serialize/BlockPosition.java