diff --git a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 1e8cda3de..076a26a70 100644 --- a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -14,6 +14,7 @@ import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; import com.dfsek.terra.config.loaders.RangeLoader; @@ -45,6 +46,8 @@ import com.dfsek.terra.world.population.items.ores.OreConfig; import com.dfsek.terra.world.population.items.ores.OreHolder; import com.dfsek.terra.world.population.items.tree.TreeLayer; +import java.util.LinkedHashMap; + public class GenericLoaders implements LoaderRegistrar { private final TerraPlugin main; @@ -79,6 +82,7 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(BorderMutatorTemplate.class, BorderMutatorTemplate::new) .registerLoader(BorderListMutatorTemplate.class, BorderListMutatorTemplate::new) .registerLoader(FunctionTemplate.class, FunctionTemplate::new) + .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()) .registerLoader(ImageSampler.Channel.class, (t, object, cf) -> ImageSampler.Channel.valueOf((String) object)) .registerLoader(ExpanderStage.Type.class, (t, object, cf) -> ExpanderStage.Type.valueOf((String) object)) .registerLoader(MutatorStage.Type.class, (t, object, cf) -> MutatorStage.Type.valueOf((String) object)) diff --git a/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java index 61460c2f4..4273d5fec 100644 --- a/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java +++ b/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java @@ -9,7 +9,7 @@ import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; import parsii.eval.Scope; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; public class BiomeFactory implements TerraFactory { @@ -27,7 +27,7 @@ public class BiomeFactory implements TerraFactory { generatorBuilder.setCarvingEquation(template.getCarvingEquation()); generatorBuilder.setNoiseBuilderMap(pack.getTemplate().getNoiseBuilderMap()); - Map functions = new HashMap<>(pack.getTemplate().getFunctions()); + Map functions = new LinkedHashMap<>(pack.getTemplate().getFunctions()); // linked map to preserve order. functions.putAll(template.getFunctions()); generatorBuilder.setFunctionTemplateMap(functions); diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java new file mode 100644 index 000000000..25eee5845 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.config.loaders; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.LinkedHashMap; +import java.util.Map; + +public class LinkedHashMapLoader implements TypeLoader> { + @Override + public LinkedHashMap load(Type t, Object c, ConfigLoader loader) throws LoadException { + Map config = (Map) c; + LinkedHashMap map = new LinkedHashMap<>(); + if(t instanceof ParameterizedType) { + ParameterizedType pType = (ParameterizedType) t; + Type key = pType.getActualTypeArguments()[0]; + Type value = pType.getActualTypeArguments()[1]; + for(Map.Entry entry : config.entrySet()) { + map.put(loader.loadType(key, entry.getKey()), loader.loadType(value, entry.getValue())); + } + } else throw new LoadException("Unable to load config"); + + return map; + } +} diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index 1ca7ae5e8..cb16612cc 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -8,6 +8,7 @@ import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; @SuppressWarnings({"unused", "FieldMayBeFinal"}) @@ -24,7 +25,7 @@ public class ConfigPackTemplate implements ConfigTemplate { @Value("functions") @Default - private Map functions = new HashMap<>(); + private LinkedHashMap functions = new LinkedHashMap<>(); @Value("structures.locatable") @Default @@ -34,22 +35,6 @@ public class ConfigPackTemplate implements ConfigTemplate { @Default private int elevationBlend = 4; - @Value("erode.enable") - @Default - private boolean erode = false; - - @Value("erode.frequency") - @Default - private double erodeFreq = 0.001D; - - @Value("erode.threshold") - @Default - private double erodeThresh = 0.0015D; - - @Value("erode.octaves") - @Default - private int erodeOctaves = 5; - @Value("vanilla.mobs") @Default private boolean vanillaMobs = true; @@ -129,22 +114,6 @@ public class ConfigPackTemplate implements ConfigTemplate { return variables; } - public boolean isErode() { - return erode; - } - - public double getErodeFreq() { - return erodeFreq; - } - - public double getErodeThresh() { - return erodeThresh; - } - - public int getErodeOctaves() { - return erodeOctaves; - } - public int getElevationBlend() { return elevationBlend; } 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 29cbfb193..2898a318e 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 @@ -32,6 +32,7 @@ import parsii.eval.Variable; import parsii.tokenizer.ParseException; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -57,7 +58,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("functions") @Default @Abstractable - private Map functions = new HashMap<>(); + private LinkedHashMap functions = new LinkedHashMap<>(); @Value("carving.equation") @Abstractable @@ -342,7 +343,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions - Map testFunctions = new HashMap<>(pack.getTemplate().getFunctions()); + Map testFunctions = new LinkedHashMap<>(pack.getTemplate().getFunctions()); testFunctions.putAll(functions); for(Map.Entry entry : testFunctions.entrySet()) { String id = entry.getKey(); diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index d1762383e..9ed1f8976 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -97,8 +97,8 @@ val testWithPaper = task(name = "testWithPaper") { "-XX:G1RSetUpdatingPauseTimePercent=5", "-XX:SurvivorRatio=32", "-XX:+PerfDisableSharedMem", "-XX:MaxTenuringThreshold=1", "-Dusing.aikars.flags=https://mcflags.emc.gs", "-Daikars.new.flags=true", "-DIReallyKnowWhatIAmDoingISwear") - maxHeapSize = "2G" - minHeapSize = "2G" + maxHeapSize = "4G" + minHeapSize = "4G" //args = listOf("nogui") workingDir = file("${testDir}/") classpath = files("${testDir}/paper.jar")