private void unloadExtraRegions() {
        for (World world : hostedWorlds) {
            Vec3i center = CoordConverter.globalToRegion(VecConverter.floorVec3iFromVec3f(boxle.getClient().getPlayer().getLocation(), VecPool.createVec3i()));
            Set<Region> regions = world.getRegionSet();
            for (Region region : regions) {
                Vec3i rLoc = region.getLoc();
                if (rLoc.x > center.x + CoordConverter.regionLocOfChunkCeil(renderDistanceH) || rLoc.x < center.x - CoordConverter.regionLocOfChunkCeil(renderDistanceH) || rLoc.y > center.y + CoordConverter.regionLocOfChunkCeil(renderDistanceV) || rLoc.y < center.y - CoordConverter.regionLocOfChunkCeil(renderDistanceV) || rLoc.z > center.z + CoordConverter.regionLocOfChunkCeil(renderDistanceH) || rLoc.z < center.z - CoordConverter.regionLocOfChunkCeil(renderDistanceH)) {
                    System.out.println("Unloading region at " + rLoc.asCoords());
                    world.removeRegion(region);
                    SaveManager.unloadRegion(region);
                }
                VecPool.free(rLoc);
            }
            VecPool.free(center);
        }
        /*
        Vec3i endLoc = VecPool.getVec3i();
        Vec3i renderAreaStart = VecPool.getVec3i();
        Vec3i renderAreaEnd = VecPool.getVec3i();
        Vec3i center = VecPool.createVec3i();
        AABBI renderArea = new AABBI();
        AABBI regionArea = new AABBI();
        for (World world : hostedWorlds) {
            for (Region region : world.getRegionSet()) {
                Vec3i startLoc = region.getLoc();
                startLoc.x *= regionSize;
                startLoc.y *= regionSize;
                startLoc.z *= regionSize;
                endLoc.x = startLoc.x + regionSize;
                endLoc.x = startLoc.x + regionSize;
                endLoc.x = startLoc.x + regionSize;
                CoordConverter.globalToChunk(VecConverter.floorVec3iFromVec3f(boxle.getClient().getPlayer().getLocation(), center));
                renderAreaStart.x = center.x + config.renderDistanceHorizontal;
                renderAreaStart.y = center.y + config.renderDistanceVertical;
                renderAreaStart.z = center.z + config.renderDistanceHorizontal;
                renderAreaEnd.x = center.x - config.renderDistanceHorizontal;
                renderAreaEnd.y = center.y - config.renderDistanceVertical;
                renderAreaEnd.z = center.z - config.renderDistanceHorizontal;
                renderArea.setCorners(renderAreaStart, renderAreaEnd);
                regionArea.setCorners(startLoc, endLoc);
                if (!regionArea.collidesWith(renderArea)) {
                    SaveManager.unloadRegion(region);
                }
                VecPool.free(startLoc);
            }
        }
        VecPool.free(center);
        VecPool.free(renderAreaEnd);
        VecPool.free(renderAreaStart);
        VecPool.free(endLoc);
        */
    }