// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.hytalegenerator.plugin;

import javax.annotation.Nullable;
import com.hypixel.hytale.server.core.universe.world.worldgen.WorldGenTimingsCollector;
import com.hypixel.hytale.server.core.universe.world.spawn.ISpawnProvider;
import com.hypixel.hytale.math.vector.Transform;
import com.hypixel.hytale.server.core.universe.world.worldgen.GeneratedChunk;
import java.util.concurrent.CompletableFuture;
import java.util.function.LongPredicate;
import com.hypixel.hytale.builtin.hytalegenerator.chunkgenerator.ChunkRequest;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.universe.world.worldgen.IWorldGen;

public class Handle implements IWorldGen
{
    @Nonnull
    private final HytaleGenerator plugin;
    @Nonnull
    private final ChunkRequest.GeneratorProfile profile;
    
    public Handle(@Nonnull final HytaleGenerator plugin, @Nonnull final ChunkRequest.GeneratorProfile profile) {
        this.plugin = plugin;
        this.profile = profile;
    }
    
    @Override
    public CompletableFuture<GeneratedChunk> generate(final int seed, final long index, final int x, final int z, final LongPredicate stillNeeded) {
        final ChunkRequest.Arguments arguments = new ChunkRequest.Arguments(seed, index, x, z, stillNeeded);
        this.profile.setSeed(seed);
        final ChunkRequest request = new ChunkRequest(this.profile, arguments);
        return this.plugin.submitChunkRequest(request);
    }
    
    @Nonnull
    public ChunkRequest.GeneratorProfile getProfile() {
        return this.profile;
    }
    
    @Override
    public Transform[] getSpawnPoints(final int seed) {
        return new Transform[] { new Transform(0.0, 140.0, 0.0) };
    }
    
    @Nonnull
    @Override
    public ISpawnProvider getDefaultSpawnProvider(final int seed) {
        return super.getDefaultSpawnProvider(seed);
    }
    
    @Nullable
    @Override
    public WorldGenTimingsCollector getTimings() {
        return null;
    }
}
