diff --git a/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java b/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java index 3b00f1898..570819a15 100644 --- a/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java +++ b/common/src/main/java/com/dfsek/terra/config/builder/GeneratorBuilder.java @@ -48,12 +48,16 @@ public class GeneratorBuilder { private double blendWeight; + private Map variables = new HashMap<>(); + public WorldGenerator build(long seed) { synchronized(gens) { return gens.computeIfAbsent(seed, k -> { NoiseSampler noise; NoiseSampler elevation; NoiseSampler carving; + Scope biomeScope = new Scope().withParent(varScope); + variables.forEach((id, val) -> biomeScope.create(id).setValue(val)); try { noise = new ExpressionSampler(noiseEquation, varScope, seed, noiseBuilderMap); elevation = elevationEquation == null ? new ConstantSampler(0) : new ExpressionSampler(elevationEquation, varScope, seed, noiseBuilderMap); @@ -66,6 +70,10 @@ public class GeneratorBuilder { } } + public void setVariables(Map variables) { + this.variables = variables; + } + public void setBlendWeight(double blendWeight) { this.blendWeight = blendWeight; } diff --git a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 080e3df97..c832c7d85 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -26,6 +26,7 @@ import parsii.eval.Parser; import parsii.eval.Scope; import parsii.tokenizer.ParseException; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -42,6 +43,11 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Default private String extend = null; + @Value("variables") + @Abstractable + @Default + private Map variables = new HashMap<>(); + @Value("carving.equation") @Abstractable @Default @@ -308,11 +314,18 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return blendStep; } + public Map getVariables() { + return variables; + } + @Override public boolean validate() throws ValidationException { color |= 0x1fe00000; // Alpha adjustment Parser tester = new Parser(); Scope testScope = new Scope().withParent(pack.getVarScope()); + + variables.forEach((id, val) -> testScope.create(id).setValue(val)); + testScope.create("x"); testScope.create("y"); testScope.create("z");