Get all CREATED chunks in World, and regenerate some of them?

Hi!
I need to:

  1. Fully delete player from a server, including EVERYTHING, Inventory, Gamemode, Location. Health, Food, and etc.
  2. Get all created chunks.
  3. Regenerate chunk.

How can I do this? There is my code, and comments where I need help… Thanks!

[code]public class WorldRegenerator {

private boolean regenerating = false;

public void regenerate() {
    setRegenerating(true);
    for (Player player : Sponge.getServer().getOnlinePlayers()) {
        player.kick(LanguageUtils.getText("REGENERATING_WORLD"));
    }
    //1. Will that code FULL delete Player from a server, including his Inventory, Location, and everything other?
    Optional<UserStorageService> optional_user_storage_service = Sponge.getServiceManager().provide(UserStorageService.class);
    if (optional_user_storage_service.isPresent()) {
        UserStorageService user_storage_service = optional_user_storage_service.get();
        for (GameProfile profile : user_storage_service.getAll()) {
            UUID uuid = profile.getUniqueId();
            if ((System.currentTimeMillis() - UserUtils.getLastSeenDate(uuid)) >= 1000*60*60*24*30 &&
                    UserUtils.getGroup(uuid).equals(Groups.DEFAULT)) {
                user_storage_service.delete(profile);
                UserUtils.delete(uuid);
            }
        }
    }
    List<Chunk> to_regenerate = new ArrayList();
    for (World world : Sponge.getServer().getWorlds()) {
        for (Chunk chunk : ???) { //2. How to get all CREATED (not only LOADED) chunks?
            AABB chunk_aabb = new AABB(chunk.getBlockMin(), chunk.getBlockMax());
            boolean chunk_has_region = false;
            for (String region : RegionUtils.getRegions()) {
                Selection selection = RegionUtils.getSelection(region);
                if (!selection.getFirst().getExtent().equals(world) || !selection.isValid()) return;
                AABB region_aabb = selection.toAABB();
                if (chunk_aabb.intersects(region_aabb)) {
                    chunk_has_region = true;
                    break;
                }
            }
            if (!chunk_has_region) {
                to_regenerate.add(chunk);
            }
        }
    }
    Sponge.getScheduler().createTaskBuilder().execute(new RegenerateThread(to_regenerate)).submit(GWMPlugin.getInstance());
}

@Listener(order = Order.LATE)
public void disallowJoin(ClientConnectionEvent.Auth event) {
    if (isRegenerating()) {
        event.setCancelled(true);
        event.setMessage(LanguageUtils.getText("REGENERATING_WORLD"));
    }
}

public void setRegenerating(boolean regenerating) {
    this.regenerating = regenerating;
}

public boolean isRegenerating() {
    return this.regenerating;
}

public class RegenerateThread implements Runnable {

    private List<Chunk> to_regenerate = null;

    public RegenerateThread(List<Chunk> to_regenerate) {
        setToRegenerate(to_regenerate);
    }
    
    @Override
    public void run() {
        if (!getToRegenerate().isEmpty()) {
            Chunk chunk = getToRegenerate().remove(0);
            //3. How to regenerate this chunk?
            Sponge.getScheduler().createTaskBuilder().delayTicks(1).execute(new RegenerateThread(getToRegenerate())).submit(GWMPlugin.getInstance());
        } else {
            setRegenerating(false);
        }
    }

    public void setToRegenerate(List<Chunk> to_regenerate) {
        this.to_regenerate = to_regenerate;
    }

    public List<Chunk> getToRegenerate() {
        return this.to_regenerate;
    }
}

}[/code]