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

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

import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
import javax.annotation.Nullable;
import com.hypixel.hytale.builtin.hytalegenerator.newsystem.TerrainDensityProvider;
import com.hypixel.hytale.builtin.hytalegenerator.threadindexer.WorkerIndexer;
import com.hypixel.hytale.math.vector.Vector3d;
import javax.annotation.Nonnull;

public abstract class VectorProvider
{
    @Nonnull
    public abstract Vector3d process(@Nonnull final Context p0);
    
    public static class Context
    {
        @Nonnull
        public Vector3d position;
        @Nonnull
        public WorkerIndexer.Id workerId;
        @Nullable
        public TerrainDensityProvider terrainDensityProvider;
        
        public Context(@Nonnull final Vector3d position, @Nonnull final WorkerIndexer.Id workerId, @Nullable final TerrainDensityProvider terrainDensityProvider) {
            this.position = position;
            this.workerId = workerId;
            this.terrainDensityProvider = terrainDensityProvider;
        }
        
        public Context(@Nonnull final Context other) {
            this.position = other.position;
            this.workerId = other.workerId;
            this.terrainDensityProvider = other.terrainDensityProvider;
        }
        
        public Context(@Nonnull final Density.Context other) {
            this.position = other.position;
            this.workerId = other.workerId;
            this.terrainDensityProvider = other.terrainDensityProvider;
        }
    }
}
