hytale-server/com/hypixel/hytale/builtin/hytalegenerator/materialproviders/MaterialProvider.java

67 lines
2.3 KiB
Java

package com.hypixel.hytale.builtin.hytalegenerator.materialproviders;
import com.hypixel.hytale.builtin.hytalegenerator.newsystem.TerrainDensityProvider;
import com.hypixel.hytale.builtin.hytalegenerator.threadindexer.WorkerIndexer;
import com.hypixel.hytale.math.vector.Vector3i;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class MaterialProvider<V> {
@Nullable
public abstract V getVoxelTypeAt(@Nonnull MaterialProvider.Context var1);
@Nonnull
public static <V> MaterialProvider<V> noMaterialProvider() {
return new ConstantMaterialProvider<>(null);
}
public static class Context {
@Nonnull
public Vector3i position;
public double density;
public int depthIntoFloor;
public int depthIntoCeiling;
public int spaceAboveFloor;
public int spaceBelowCeiling;
@Nonnull
public WorkerIndexer.Id workerId;
@Nullable
public TerrainDensityProvider terrainDensityProvider;
public double distanceToBiomeEdge;
public Context(
@Nonnull Vector3i position,
double density,
int depthIntoFloor,
int depthIntoCeiling,
int spaceAboveFloor,
int spaceBelowCeiling,
@Nonnull WorkerIndexer.Id workerId,
@Nullable TerrainDensityProvider terrainDensityProvider,
double distanceToBiomeEdge
) {
this.position = position;
this.density = density;
this.depthIntoFloor = depthIntoFloor;
this.depthIntoCeiling = depthIntoCeiling;
this.spaceAboveFloor = spaceAboveFloor;
this.spaceBelowCeiling = spaceBelowCeiling;
this.workerId = workerId;
this.terrainDensityProvider = terrainDensityProvider;
this.distanceToBiomeEdge = distanceToBiomeEdge;
}
public Context(@Nonnull MaterialProvider.Context other) {
this.position = other.position;
this.density = other.density;
this.depthIntoFloor = other.depthIntoFloor;
this.depthIntoCeiling = other.depthIntoCeiling;
this.spaceAboveFloor = other.spaceAboveFloor;
this.spaceBelowCeiling = other.spaceBelowCeiling;
this.workerId = other.workerId;
this.terrainDensityProvider = other.terrainDensityProvider;
this.distanceToBiomeEdge = other.distanceToBiomeEdge;
}
}
}