diff --git a/src/main/java/ca/recrown/islandsurvivalcraft/world/generation/TemperatureMapGenerator.java b/src/main/java/ca/recrown/islandsurvivalcraft/world/generation/TemperatureMapGenerator.java index 3fffc8c..f997a91 100644 --- a/src/main/java/ca/recrown/islandsurvivalcraft/world/generation/TemperatureMapGenerator.java +++ b/src/main/java/ca/recrown/islandsurvivalcraft/world/generation/TemperatureMapGenerator.java @@ -4,18 +4,29 @@ import java.util.Random; import org.bukkit.util.noise.SimplexOctaveGenerator; +import ca.recrown.islandsurvivalcraft.caching.Cache; +import ca.recrown.islandsurvivalcraft.caching.CacheValue; +import ca.recrown.islandsurvivalcraft.caching.CoordinateIdentifier; + class TemperatureMapGenerator { + private final Cache temperatureCache; private final double frequency = 0.5D; private final double amplitude = 0.5D; private SimplexOctaveGenerator noiseGenerator; + public TemperatureMapGenerator() { + temperatureCache = new Cache<>(1024); + } + public void setSeed(long seed) { - noiseGenerator = new SimplexOctaveGenerator(new Random(seed), 4); - noiseGenerator.setScale(0.0008D); + noiseGenerator = new SimplexOctaveGenerator(new Random(seed), 2); + noiseGenerator.setScale(0.005D); } public float getTemperature(int worldX, int worldZ) { - return (float) noiseGenerator.noise(worldX, worldZ, frequency, amplitude, true); + CacheValue val = temperatureCache.retrieveCache(new CoordinateIdentifier(worldX/4, worldZ/4)); + if (val.isEmpty()) val.setValue((float) noiseGenerator.noise(worldX/4, worldZ/4, frequency, amplitude, true)); + return val.getValue(); } } \ No newline at end of file