Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package org.bukkit.util.noise;
2
3import org.bukkit.World;
4
5import java.util.Random;
6
7/**
8 * Creates perlin noise through unbiased octaves
9 */
10public class PerlinOctaveGenerator extends OctaveGenerator {
11 /**
12 * Creates a perlin octave generator for the given world
13 *
14 * @param world World to construct this generator for
15 * @param octaves Amount of octaves to create
16 */
17 public PerlinOctaveGenerator(World world, int octaves) {
18 this(new Random(world.getSeed()), octaves);
19 }
20
21 /**
22 * Creates a perlin octave generator for the given world
23 *
24 * @param seed Seed to construct this generator for
25 * @param octaves Amount of octaves to create
26 */
27 public PerlinOctaveGenerator(long seed, int octaves) {
28 this(new Random(seed), octaves);
29 }
30
31 /**
32 * Creates a perlin octave generator for the given {@link Random}
33 *
34 * @param rand Random object to construct this generator for
35 * @param octaves Amount of octaves to create
36 */
37 public PerlinOctaveGenerator(Random rand, int octaves) {
38 super(createOctaves(rand, octaves));
39 }
40
41 private static NoiseGenerator[] createOctaves(Random rand, int octaves) {
42 NoiseGenerator[] result = new NoiseGenerator[octaves];
43
44 for (int i = 0; i < octaves; i++) {
45 result[i] = new PerlinNoiseGenerator(rand);
46 }
47
48 return result;
49 }
50}