Implement erosion

This commit is contained in:
dfsek
2020-10-05 20:56:26 -07:00
parent 0e760ec87e
commit 2659577322
13 changed files with 193 additions and 15 deletions

View File

@@ -7,12 +7,14 @@ import com.dfsek.terra.biome.UserDefinedGrid;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.base.ConfigUtil;
import com.dfsek.terra.config.base.WorldConfig;
import com.dfsek.terra.config.exception.ConfigException;
import com.dfsek.terra.config.genconfig.BiomeGridConfig;
import org.bukkit.Bukkit;
import org.bukkit.World;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class TerraWorld {
private static final Map<World, TerraWorld> map = new HashMap<>();
@@ -20,6 +22,7 @@ public class TerraWorld {
private final BiomeZone zone;
private final ConfigPack config;
private final WorldConfig worldConfig;
private TerraWorld(World w) {
worldConfig = new WorldConfig(w, Terra.getInstance());
config = worldConfig.getConfig();
@@ -39,15 +42,37 @@ public class TerraWorld {
definedGrids[i] = g.getGrid(w, worldConfig);
}
} catch(NullPointerException e) {
if(ConfigUtil.debug) e.printStackTrace();
Debug.stack(e);
Bukkit.getLogger().severe("No such BiomeGrid " + partName);
Bukkit.getLogger().severe("Please check configuration files for errors. Configuration errors will have been reported during initialization.");
Bukkit.getLogger().severe("ONLY report this to Terra if you are SURE your config is error-free.");
Bukkit.getLogger().severe("Terrain will NOT generate properly at this point. Correct your config before using your server!");
}
}
UserDefinedGrid erosion = null;
if(config.erosionEnable) {
try {
if(config.erosionName.startsWith("BIOME:")) {
UserDefinedBiome[][] temp = new UserDefinedBiome[1][1];
UserDefinedBiome b = Objects.requireNonNull(config.getBiome(config.erosionName.substring(6)).getBiome());
temp[0][0] = b;
erosion = new UserDefinedGrid(w, config.freq1, config.freq2, temp, worldConfig);
Debug.info("Loaded single-biome erosion grid " + config.erosionName);
} else {
BiomeGridConfig g = Objects.requireNonNull(config.getBiomeGrid(config.erosionName));
Debug.info("Loaded BiomeGrid " + g.getID());
erosion = g.getGrid(w, worldConfig);
}
} catch(NullPointerException e) {
Debug.stack(e);
Bukkit.getLogger().severe("No such BiomeGrid (erosion): " + config.erosionName);
Bukkit.getLogger().severe("Please check configuration files for errors. Configuration errors will have been reported during initialization.");
Bukkit.getLogger().severe("ONLY report this to Terra if you are SURE your config is error-free.");
Bukkit.getLogger().severe("Terrain will NOT generate properly at this point. Correct your config before using your server!");
}
}
zone = new BiomeZone(w, worldConfig, definedGrids);
grid = new TerraBiomeGrid(w, config.freq1, config.freq2, zone, config);
grid = new TerraBiomeGrid(w, config.freq1, config.freq2, zone, config, erosion);
}
public static synchronized TerraWorld getWorld(World w) {