mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
Begin work on user defined Biomes and BiomeGrids
This commit is contained in:
parent
affef6196d
commit
c5dc13f514
2
pom.xml
2
pom.xml
@ -83,7 +83,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.polydev</groupId>
|
<groupId>org.polydev</groupId>
|
||||||
<artifactId>gaea</artifactId>
|
<artifactId>gaea</artifactId>
|
||||||
<version>1.0.5</version>
|
<version>1.1.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
@ -1,11 +1,20 @@
|
|||||||
package com.dfsek.terra;
|
package com.dfsek.terra;
|
||||||
|
|
||||||
|
import com.dfsek.terra.config.WorldConfig;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class Terra extends JavaPlugin {
|
public class Terra extends JavaPlugin {
|
||||||
|
private static FileConfiguration config;
|
||||||
|
private static Terra instance;
|
||||||
|
|
||||||
|
public static Terra getInstance() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
super.onDisable();
|
super.onDisable();
|
||||||
@ -14,10 +23,18 @@ public class Terra extends JavaPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
super.onEnable();
|
super.onEnable();
|
||||||
|
saveDefaultConfig();
|
||||||
|
config = getConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static FileConfiguration getConfigFile() {
|
||||||
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id) {
|
public @Nullable ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id) {
|
||||||
|
new WorldConfig(worldName, this);
|
||||||
return new TerraChunkGenerator();
|
return new TerraChunkGenerator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
package com.dfsek.terra.biome;
|
|
||||||
|
|
||||||
import com.dfsek.terra.biome.generators.MountainGenerator;
|
|
||||||
import org.polydev.gaea.biome.Biome;
|
|
||||||
import org.polydev.gaea.biome.BiomeTerrain;
|
|
||||||
import org.polydev.gaea.biome.Decorator;
|
|
||||||
import org.polydev.gaea.structures.features.Feature;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public enum TerraBiome implements Biome {
|
|
||||||
PLAINS(null), MOUNTAINS(new MountainGenerator());
|
|
||||||
|
|
||||||
private BiomeTerrain t;
|
|
||||||
TerraBiome(BiomeTerrain t) {
|
|
||||||
this.t = t;
|
|
||||||
}
|
|
||||||
|
|
||||||
public org.bukkit.block.Biome getVanillaBiome() {
|
|
||||||
return org.bukkit.block.Biome.PLAINS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeTerrain getGenerator() {
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Feature> getStructureFeatures() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Decorator getDecorator() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +1,36 @@
|
|||||||
package com.dfsek.terra.biome;
|
package com.dfsek.terra.biome;
|
||||||
|
|
||||||
|
import com.dfsek.terra.Terra;
|
||||||
|
import com.dfsek.terra.config.WorldConfig;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.polydev.gaea.biome.BiomeGrid;
|
import org.polydev.gaea.biome.BiomeGrid;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class TerraBiomeGrid extends BiomeGrid {
|
public class TerraBiomeGrid extends BiomeGrid {
|
||||||
private final TerraBiome[][] grid = new TerraBiome[][] {
|
private UserDefinedBiome[][] grid;
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
private final World w;
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS},
|
|
||||||
{TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS, TerraBiome.MOUNTAINS}};
|
|
||||||
|
|
||||||
public TerraBiomeGrid(World w) {
|
public TerraBiomeGrid(World w) {
|
||||||
super(w, 1f/256, 1f/512);
|
super(w, 1f/256, 1f/512);
|
||||||
|
this.w = w;
|
||||||
|
grid = new UserDefinedBiome[16][16];
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void load() {
|
||||||
|
for(int x = 0; x < 16; x++) {
|
||||||
|
for(int z = 0; z < 16; z++) {
|
||||||
|
WorldConfig.fromWorld(w);
|
||||||
|
grid[x][z] = WorldConfig.getBiomes().get(WorldConfig.fromWorld(w).biomeGrid.get(x).get(z)).getBiome();
|
||||||
|
}
|
||||||
|
}
|
||||||
super.setGrid(grid);
|
super.setGrid(grid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
61
src/main/java/com/dfsek/terra/biome/UserDefinedBiome.java
Normal file
61
src/main/java/com/dfsek/terra/biome/UserDefinedBiome.java
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
package com.dfsek.terra.biome;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.polydev.gaea.biome.Biome;
|
||||||
|
import org.polydev.gaea.biome.BiomeTerrain;
|
||||||
|
import org.polydev.gaea.biome.Decorator;
|
||||||
|
import org.polydev.gaea.math.parsii.eval.Parser;
|
||||||
|
import org.polydev.gaea.math.parsii.eval.Scope;
|
||||||
|
import org.polydev.gaea.math.parsii.tokenizer.ParseException;
|
||||||
|
import org.polydev.gaea.structures.features.Feature;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class UserDefinedBiome implements Biome {
|
||||||
|
private final UserDefinedGenerator gen;
|
||||||
|
public UserDefinedBiome(String noiseEq) throws ParseException {
|
||||||
|
Scope s = Scope.create();
|
||||||
|
gen = new UserDefinedGenerator(s, Parser.parse(noiseEq, s), Collections.emptyList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the Vanilla biome to represent the custom biome.
|
||||||
|
*
|
||||||
|
* @return Biome - The Vanilla biome.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public org.bukkit.block.Biome getVanillaBiome() {
|
||||||
|
return org.bukkit.block.Biome.PLAINS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the BiomeTerrain instance used to generate the biome.
|
||||||
|
*
|
||||||
|
* @return BiomeTerrain - The terrain generation instance.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BiomeTerrain getGenerator() {
|
||||||
|
return gen;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a list of Structure Features to be applied to all structures in the biome.
|
||||||
|
*
|
||||||
|
* @return List<Feature> - The list of Features.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<Feature> getStructureFeatures() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the Decorator instance containing information about the population in the biome.
|
||||||
|
*
|
||||||
|
* @return Decorator - the Decorator instance.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Decorator getDecorator() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,77 @@
|
|||||||
|
package com.dfsek.terra.biome;
|
||||||
|
|
||||||
|
import org.polydev.gaea.biome.BiomeTerrain;
|
||||||
|
import org.polydev.gaea.math.FastNoise;
|
||||||
|
import org.polydev.gaea.math.parsii.eval.Expression;
|
||||||
|
import org.polydev.gaea.math.parsii.eval.Scope;
|
||||||
|
import org.polydev.gaea.math.parsii.eval.Variable;
|
||||||
|
import org.polydev.gaea.world.BlockPalette;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class UserDefinedGenerator extends BiomeTerrain {
|
||||||
|
private final Expression noiseExp;
|
||||||
|
private final List<Variable> vars;
|
||||||
|
private final Variable xVar;
|
||||||
|
private final Variable yVar;
|
||||||
|
private final Variable zVar;
|
||||||
|
private final Variable noise2D;
|
||||||
|
private final Variable noise3D;
|
||||||
|
|
||||||
|
|
||||||
|
public UserDefinedGenerator(Scope s, Expression e, List<Variable> v) {
|
||||||
|
this.noiseExp = e;
|
||||||
|
this.vars = v;
|
||||||
|
this.xVar = s.getVariable("x");
|
||||||
|
this.yVar = s.getVariable("y");
|
||||||
|
this.zVar = s.getVariable("z");
|
||||||
|
this.noise2D = s.getVariable("w");
|
||||||
|
this.noise3D = s.getVariable("t");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Gets the 2D noise at a pair of coordinates using the provided FastNoise instance.
|
||||||
|
*
|
||||||
|
* @param gen - The FastNoise instance to use.
|
||||||
|
* @param x - The x coordinate.
|
||||||
|
* @param z - The z coordinate.
|
||||||
|
* @return double - Noise value at the specified coordinates.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public double getNoise(FastNoise gen, int x, int z) {
|
||||||
|
xVar.setValue(x);
|
||||||
|
yVar.setValue(0);
|
||||||
|
zVar.setValue(z);
|
||||||
|
noise2D.setValue(gen.getSimplexFractal(x, z));
|
||||||
|
noise3D.setValue(0);
|
||||||
|
return noiseExp.evaluate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the 3D noise at a pair of coordinates using the provided FastNoise instance.
|
||||||
|
*
|
||||||
|
* @param gen - The FastNoise instance to use.
|
||||||
|
* @param x - The x coordinate.
|
||||||
|
* @param y - The y coordinate.
|
||||||
|
* @param z - The z coordinate.
|
||||||
|
* @return double - Noise value at the specified coordinates.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public double getNoise(FastNoise gen, int x, int y, int z) {
|
||||||
|
xVar.setValue(x);
|
||||||
|
yVar.setValue(y);
|
||||||
|
zVar.setValue(z);
|
||||||
|
noise2D.setValue(gen.getSimplexFractal(x, z));
|
||||||
|
noise3D.setValue(gen.getSimplexFractal(x, y, z));
|
||||||
|
return noiseExp.evaluate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the BlocPalette to generate the biome with.
|
||||||
|
*
|
||||||
|
* @return BlocPalette - The biome's palette.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BlockPalette getPalette() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,21 +0,0 @@
|
|||||||
package com.dfsek.terra.biome.generators;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.polydev.gaea.biome.BiomeTerrain;
|
|
||||||
import org.polydev.gaea.math.FastNoise;
|
|
||||||
import org.polydev.gaea.world.BlockPalette;
|
|
||||||
|
|
||||||
public class MountainGenerator extends BiomeTerrain {
|
|
||||||
private final BlockPalette p = new BlockPalette().add(Material.STONE, 1);
|
|
||||||
public double getNoise(FastNoise fastNoise, int i, int i1) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getNoise(FastNoise fastNoise, int x, int y, int z) {
|
|
||||||
return (-Math.pow((float)y/96, 2))+1D + (fastNoise.getSimplexFractal(x, y, z)/2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BlockPalette getPalette() {
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
}
|
|
37
src/main/java/com/dfsek/terra/config/BiomeConfig.java
Normal file
37
src/main/java/com/dfsek/terra/config/BiomeConfig.java
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
package com.dfsek.terra.config;
|
||||||
|
|
||||||
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.polydev.gaea.math.parsii.tokenizer.ParseException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class BiomeConfig extends YamlConfiguration {
|
||||||
|
private final UserDefinedBiome biome;
|
||||||
|
private final String biomeID;
|
||||||
|
private final String friendlyName;
|
||||||
|
public BiomeConfig(File file) throws InvalidConfigurationException, ParseException, IOException {
|
||||||
|
super();
|
||||||
|
super.load(file);
|
||||||
|
if(!contains("noise-equation")) throw new InvalidConfigurationException("No noise equation included in biome!");
|
||||||
|
this.biome = new UserDefinedBiome(getString("noise-equation"));
|
||||||
|
if(!contains("id")) throw new InvalidConfigurationException("Biome ID unspecified!");
|
||||||
|
this.biomeID = getString("id");
|
||||||
|
if(!contains("name")) throw new InvalidConfigurationException("Biome Name unspecified!");
|
||||||
|
this.friendlyName = getString("name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserDefinedBiome getBiome() {
|
||||||
|
return biome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBiomeID() {
|
||||||
|
return biomeID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFriendlyName() {
|
||||||
|
return friendlyName;
|
||||||
|
}
|
||||||
|
}
|
4
src/main/java/com/dfsek/terra/config/ConfigUtil.java
Normal file
4
src/main/java/com/dfsek/terra/config/ConfigUtil.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package com.dfsek.terra.config;
|
||||||
|
|
||||||
|
public class ConfigUtil {
|
||||||
|
}
|
87
src/main/java/com/dfsek/terra/config/WorldConfig.java
Normal file
87
src/main/java/com/dfsek/terra/config/WorldConfig.java
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
package com.dfsek.terra.config;
|
||||||
|
|
||||||
|
import com.dfsek.terra.Terra;
|
||||||
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
import org.polydev.gaea.commons.io.FileUtils;
|
||||||
|
import org.polydev.gaea.commons.io.FilenameUtils;
|
||||||
|
import org.polydev.gaea.math.parsii.tokenizer.ParseException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public class WorldConfig {
|
||||||
|
private static JavaPlugin main;
|
||||||
|
private static final Map<String, WorldConfig> configs = new HashMap<>();
|
||||||
|
private static final Map<String, BiomeConfig> biomes = new HashMap<>();
|
||||||
|
public List<List<String>> biomeGrid;
|
||||||
|
|
||||||
|
|
||||||
|
public WorldConfig(String name, JavaPlugin main) {
|
||||||
|
WorldConfig.main = main;
|
||||||
|
load(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WorldConfig fromWorld(World w) {
|
||||||
|
return configs.getOrDefault(w.getName(), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void load(String w) {
|
||||||
|
long start = System.nanoTime();
|
||||||
|
main.getLogger().info("Loading world configuration values for " + w + "...");
|
||||||
|
FileConfiguration config = new YamlConfiguration();
|
||||||
|
try {
|
||||||
|
File configFile = new File(main.getDataFolder() + File.separator + "worlds", w + ".yml");
|
||||||
|
if(! configFile.exists()) {
|
||||||
|
configFile.getParentFile().mkdirs();
|
||||||
|
main.getLogger().info("Configuration for world \"" + w + "\" not found. Copying default config.");
|
||||||
|
FileUtils.copyInputStreamToFile(Objects.requireNonNull(main.getResource("world.yml")), configFile);
|
||||||
|
}
|
||||||
|
config.load(configFile);
|
||||||
|
} catch(IOException | InvalidConfigurationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
main.getLogger().severe("Unable to load configuration for world " + w + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
biomeGrid = (List<List<String>>) config.getList("grids.DEFAULT");
|
||||||
|
|
||||||
|
try (Stream<Path> paths = Files.walk(Paths.get(main.getDataFolder() + File.separator + "biomes"))) {
|
||||||
|
paths
|
||||||
|
.filter(path -> FilenameUtils.wildcardMatch(path.toFile().getName(), "*.yml"))
|
||||||
|
.forEach(path -> {
|
||||||
|
Bukkit.getLogger().info(path.toString());
|
||||||
|
try {
|
||||||
|
BiomeConfig biome = new BiomeConfig(path.toFile());
|
||||||
|
biomes.put(biome.getBiomeID(), biome);
|
||||||
|
} catch(IOException | InvalidConfigurationException | ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
configs.put(w, this);
|
||||||
|
|
||||||
|
main.getLogger().info("World load complete. Time elapsed: " + ((double) (System.nanoTime() - start)) / 1000000 + "ms");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, BiomeConfig> getBiomes() {
|
||||||
|
return biomes;
|
||||||
|
}
|
||||||
|
}
|
1
src/main/resources/config.yml
Normal file
1
src/main/resources/config.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
noise-equation: "((-((y/96)^2))+1) + (t/2)"
|
18
src/main/resources/world.yml
Normal file
18
src/main/resources/world.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
grids:
|
||||||
|
DEFAULT:
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
||||||
|
- ["TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST", "TEST"]
|
Loading…
x
Reference in New Issue
Block a user