Add BIOME: identifier to BiomeGridRegistry

This commit is contained in:
dfsek
2020-11-27 13:06:20 -07:00
parent 86088d1dcd
commit 8e49f7ec26
7 changed files with 55 additions and 28 deletions

View File

@@ -1,13 +1,11 @@
package com.dfsek.terra;
import com.dfsek.terra.biome.BiomeZone;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.SingleBiomeGrid;
import com.dfsek.terra.biome.grid.TerraBiomeGrid;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.base.ConfigPackTemplate;
import com.dfsek.terra.config.base.WorldConfig;
import com.dfsek.terra.config.builder.BiomeGridBuilder;
import com.dfsek.terra.config.builder.biomegrid.BiomeGridBuilder;
import com.dfsek.terra.generation.TerraChunkGenerator;
import org.bukkit.Bukkit;
import org.bukkit.World;
@@ -39,14 +37,8 @@ public class TerraWorld {
for(int i = 0; i < zoneSize; i++) {
String partName = template.getGrids().get(i);
try {
if(partName.startsWith("BIOME:")) {
UserDefinedBiome b = config.getBiome(partName.substring(6));
definedGrids[i] = new SingleBiomeGrid(w, b);
Debug.info("Loaded single-biome grid " + partName);
} else {
BiomeGridBuilder g = config.getBiomeGrid(partName);
definedGrids[i] = g.build(w, worldConfig);
}
BiomeGridBuilder g = config.getBiomeGrid(partName);
definedGrids[i] = g.build(w, worldConfig);
} catch(NullPointerException e) {
safe = false;
Debug.stack(e);
@@ -60,14 +52,8 @@ public class TerraWorld {
String erosionName = template.getErodeGrid();
if(template.isErode()) {
try {
if(erosionName.startsWith("BIOME:")) {
UserDefinedBiome b = Objects.requireNonNull(config.getBiome(erosionName.substring(6)));
erosion = new SingleBiomeGrid(w, b);
Debug.info("Loaded single-biome erosion grid " + erosionName);
} else {
BiomeGridBuilder g = Objects.requireNonNull(config.getBiomeGrid(erosionName));
erosion = g.build(w, worldConfig);
}
BiomeGridBuilder g = Objects.requireNonNull(config.getBiomeGrid(erosionName));
erosion = g.build(w, worldConfig);
} catch(NullPointerException e) {
safe = false;
Debug.stack(e);

View File

@@ -6,7 +6,7 @@ import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.terra.Debug;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.builder.BiomeGridBuilder;
import com.dfsek.terra.config.builder.biomegrid.BiomeGridBuilder;
import com.dfsek.terra.config.exception.FileMissingException;
import com.dfsek.terra.config.factories.BiomeFactory;
import com.dfsek.terra.config.factories.BiomeGridFactory;
@@ -44,7 +44,7 @@ import java.util.logging.Level;
public class ConfigPack {
private final ConfigPackTemplate template = new ConfigPackTemplate();
private final BiomeRegistry biomeRegistry = new BiomeRegistry();
private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry();
private final BiomeGridRegistry biomeGridRegistry = new BiomeGridRegistry(biomeRegistry);
private final StructureRegistry structureRegistry = new StructureRegistry();
private final CarverRegistry carverRegistry = new CarverRegistry();
private final PaletteRegistry paletteRegistry = new PaletteRegistry();

View File

@@ -0,0 +1,9 @@
package com.dfsek.terra.config.builder.biomegrid;
import com.dfsek.terra.config.base.WorldConfig;
import org.bukkit.World;
import org.polydev.gaea.biome.BiomeGrid;
public interface BiomeGridBuilder {
BiomeGrid build(World world, WorldConfig config);
}

View File

@@ -0,0 +1,19 @@
package com.dfsek.terra.config.builder.biomegrid;
import com.dfsek.terra.biome.grid.SingleBiomeGrid;
import com.dfsek.terra.config.base.WorldConfig;
import org.bukkit.World;
import org.polydev.gaea.biome.Biome;
public class SingleGridBuilder implements BiomeGridBuilder {
private final Biome biome;
public SingleGridBuilder(Biome biome) {
this.biome = biome;
}
@Override
public SingleBiomeGrid build(World world, WorldConfig config) {
return new SingleBiomeGrid(world, biome);
}
}

View File

@@ -1,16 +1,17 @@
package com.dfsek.terra.config.builder;
package com.dfsek.terra.config.builder.biomegrid;
import com.dfsek.terra.biome.grid.UserDefinedGrid;
import com.dfsek.terra.config.base.WorldConfig;
import org.bukkit.World;
import org.polydev.gaea.biome.Biome;
public class BiomeGridBuilder {
public class UserDefinedGridBuilder implements BiomeGridBuilder {
private double xFreq;
private double zFreq;
private Biome[][] biomes;
@Override
public UserDefinedGrid build(World world, WorldConfig config) {
return new UserDefinedGrid(world, 1D / xFreq, 1D / zFreq, biomes, config);
}

View File

@@ -1,18 +1,18 @@
package com.dfsek.terra.config.factories;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.config.builder.BiomeGridBuilder;
import com.dfsek.terra.config.builder.biomegrid.UserDefinedGridBuilder;
import com.dfsek.terra.config.templates.BiomeGridTemplate;
import org.polydev.gaea.biome.Biome;
import java.util.List;
public class BiomeGridFactory implements TerraFactory<BiomeGridTemplate, BiomeGridBuilder> {
public class BiomeGridFactory implements TerraFactory<BiomeGridTemplate, UserDefinedGridBuilder> {
@Override
public BiomeGridBuilder build(BiomeGridTemplate config) {
public UserDefinedGridBuilder build(BiomeGridTemplate config) {
BiomeGridBuilder holder = new BiomeGridBuilder();
UserDefinedGridBuilder holder = new UserDefinedGridBuilder();
holder.setXFreq(config.getXFreq());
holder.setZFreq(config.getZFreq());

View File

@@ -1,6 +1,18 @@
package com.dfsek.terra.registry;
import com.dfsek.terra.config.builder.BiomeGridBuilder;
import com.dfsek.terra.config.builder.biomegrid.BiomeGridBuilder;
import com.dfsek.terra.config.builder.biomegrid.SingleGridBuilder;
public class BiomeGridRegistry extends TerraRegistry<BiomeGridBuilder> {
private final BiomeRegistry biomeRegistry;
public BiomeGridRegistry(BiomeRegistry biomeRegistry) {
this.biomeRegistry = biomeRegistry;
}
@Override
public BiomeGridBuilder get(String id) {
if(id.startsWith("BIOME:")) return new SingleGridBuilder(biomeRegistry.get(id.substring(6)));
return super.get(id);
}
}