40 lines
1.2 KiB
Java
40 lines
1.2 KiB
Java
package com.terraforged.feature.decorator.poisson;
|
|
|
|
import com.terraforged.chunk.TerraChunkGenerator;
|
|
import com.terraforged.core.cell.Cell;
|
|
import com.terraforged.core.tile.chunk.ChunkReader;
|
|
import com.terraforged.n2d.Module;
|
|
import com.terraforged.n2d.Source;
|
|
import com.terraforged.n2d.util.NoiseUtil;
|
|
import net.minecraft.world.IWorld;
|
|
import net.minecraft.world.gen.ChunkGenerator;
|
|
|
|
public class BiomeVariance implements Module {
|
|
|
|
public static float MIN_FADE = 0.05F;
|
|
|
|
private final ChunkReader chunk;
|
|
private final float fade;
|
|
private final float range;
|
|
|
|
public BiomeVariance(ChunkReader chunk, float fade) {
|
|
this.chunk = chunk;
|
|
this.fade = fade;
|
|
this.range = fade - MIN_FADE;
|
|
}
|
|
|
|
@Override
|
|
public float getValue(float x, float y) {
|
|
Cell cell = chunk.getCell((int) x, (int) y);
|
|
return NoiseUtil.map(1 - cell.biomeEdge, MIN_FADE, fade, range);
|
|
}
|
|
|
|
public static Module of(IWorld world, ChunkGenerator<?> generator, float fade) {
|
|
ChunkReader reader = TerraChunkGenerator.getChunk(world, generator);
|
|
if (reader != null) {
|
|
return new BiomeVariance(reader, fade);
|
|
}
|
|
return Source.ONE;
|
|
}
|
|
}
|