Improve ore performance by caching chunks

This commit is contained in:
dfsek
2020-10-12 00:28:17 -07:00
parent ef16143565
commit 6480fb0bb6
3 changed files with 51 additions and 7 deletions

View File

@@ -2,6 +2,8 @@ package com.dfsek.terra.population;
import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.genconfig.biome.BiomeOreConfig;
import org.bukkit.util.Vector;
import org.polydev.gaea.math.Range;
import com.dfsek.terra.TerraProfiler;
import com.dfsek.terra.biome.UserDefinedBiome;
@@ -25,13 +27,15 @@ public class OrePopulator extends GaeaBlockPopulator {
if(!tw.isSafe()) return;
ConfigPack config = tw.getConfig();
Biome b = TerraWorld.getWorld(world).getGrid().getBiome((chunk.getX() << 4)+8, (chunk.getZ() << 4) + 8, GenerationPhase.POPULATE);
for(Map.Entry<OreConfig, Range> e : config.getBiome((UserDefinedBiome) b).getOres().getOres().entrySet()) {
BiomeOreConfig ores = config.getBiome((UserDefinedBiome) b).getOres();
for(Map.Entry<OreConfig, Range> e : ores.getOres().entrySet()) {
int num = e.getValue().get(random);
for(int i = 0; i < num; i++) {
int x = random.nextInt(16);
int z = random.nextInt(16);
int y = config.getBiome((UserDefinedBiome) b).getOres().getOreHeights().get(e.getKey()).get(random);
e.getKey().doVein(chunk.getBlock(x, y, z).getLocation(), random);
int y = ores.getOreHeights().get(e.getKey()).get(random);
if(e.getKey().crossChunks()) e.getKey().doVein(new Vector(x, y, z), chunk, random);
else e.getKey().doVeinSingle(new Vector(x, y, z), chunk, random);
}
}
}