From 5e761c3e299fdb33b5187c6601caa404e7abe1e2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 19 Feb 2021 20:36:35 -0700 Subject: [PATCH] basic addon loading --- .../dfsek/terra/addons/addon/TerraAddon.java | 30 ++++++++++ .../dfsek/terra/addons/annotations/Addon.java | 12 ++++ .../terra/addons/annotations/Author.java | 12 ++++ .../terra/addons/annotations/Depends.java | 12 ++++ .../terra/addons/annotations/Version.java | 12 ++++ .../addons/annotations/inject/Inject.java | 11 ++++ .../addons/loading/AddonClassLoader.java | 60 +++++++++++++++++++ .../addons/loading/AddonLoadException.java | 11 ++++ .../com/dfsek/terra/api/core/TerraPlugin.java | 4 +- .../api/core/event/annotations/Global.java | 7 +++ .../math/paralithic/noise/NoiseFunction2.java | 2 +- .../script/functions/BiomeFunction.java | 4 +- .../script/functions/CheckFunction.java | 4 +- .../{ => api}/util/hash/HashIntrinsic.java | 2 +- .../util/hash/HashMapDoubleDouble.java | 2 +- .../terra/api/util/seeded/SourceSeeded.java | 2 +- .../terra/api/util/seeded/StageSeeded.java | 2 +- .../{util => api/util/world}/MaterialSet.java | 2 +- .../{util => api/util/world}/PaletteUtil.java | 2 +- .../util/world}/PopulationUtil.java | 2 +- .../{ => api/world}/biome/TerraBiome.java | 3 +- .../world}/biome/UserDefinedBiome.java | 3 +- .../api/world/biome/pipeline/BiomeHolder.java | 18 ++++++ .../world}/biome/pipeline/BiomePipeline.java | 6 +- .../biome/pipeline/TerraBiomeHolder.java | 10 ++-- .../biome/pipeline/expand/BiomeExpander.java | 7 +++ .../pipeline/expand/FractalExpander.java | 4 +- .../biome/pipeline/mutator/BiomeMutator.java | 6 +- .../pipeline/mutator/BorderListMutator.java | 4 +- .../biome/pipeline/mutator/BorderMutator.java | 4 +- .../pipeline/mutator/ReplaceListMutator.java | 4 +- .../pipeline/mutator/ReplaceMutator.java | 4 +- .../biome/pipeline/mutator/SmoothMutator.java | 4 +- .../biome/pipeline/source/BiomeSource.java | 7 +++ .../biome/pipeline/source/RandomSource.java | 4 +- .../biome/pipeline/stages/ExpanderStage.java | 6 +- .../biome/pipeline/stages/MutatorStage.java | 6 +- .../world/biome/pipeline/stages/Stage.java | 10 ++++ .../world}/biome/provider/BiomeProvider.java | 4 +- .../biome/provider/ImageBiomeProvider.java | 4 +- .../biome/provider/SingleBiomeProvider.java | 4 +- .../biome/provider/StandardBiomeProvider.java | 8 +-- .../api/world/tree/fractal/FractalTree.java | 2 +- .../api/world/tree/fractal/trees/Cactus.java | 2 +- .../world/tree/fractal/trees/IceSpike.java | 2 +- .../api/world/tree/fractal/trees/OakTree.java | 2 +- .../tree/fractal/trees/ShatteredPillar.java | 2 +- .../tree/fractal/trees/ShatteredTree.java | 2 +- .../fractal/trees/SmallShatteredPillar.java | 2 +- .../fractal/trees/SmallShatteredTree.java | 2 +- .../world/tree/fractal/trees/SpruceTree.java | 2 +- .../dfsek/terra/async/AsyncBiomeFinder.java | 4 +- .../dfsek/terra/async/AsyncFeatureFinder.java | 2 +- .../terra/async/AsyncStructureFinder.java | 4 +- .../terra/biome/pipeline/BiomeHolder.java | 18 ------ .../biome/pipeline/expand/BiomeExpander.java | 7 --- .../biome/pipeline/source/BiomeSource.java | 7 --- .../terra/biome/pipeline/stages/Stage.java | 10 ---- .../com/dfsek/terra/carving/CarverCache.java | 6 +- .../dfsek/terra/carving/CarverPalette.java | 2 +- .../terra/carving/UserDefinedCarver.java | 2 +- .../dfsek/terra/config/GenericLoaders.java | 10 ++-- .../terra/config/factories/BiomeFactory.java | 4 +- .../config/loaders/MaterialSetLoader.java | 2 +- .../com/dfsek/terra/config/loaders/Types.java | 2 +- .../biome/BiomeProviderBuilderLoader.java | 2 +- .../config/biome/SourceBuilderLoader.java | 4 +- .../config/biome/StageBuilderLoader.java | 4 +- .../source/BiomePipelineTemplate.java | 6 +- .../source/BiomeProviderTemplate.java | 2 +- .../source/ImageProviderTemplate.java | 4 +- .../source/SingleBiomeProviderTemplate.java | 6 +- .../biome/templates/stage/StageTemplate.java | 2 +- .../stage/expander/ExpanderStageTemplate.java | 6 +- .../mutator/BorderListMutatorTemplate.java | 6 +- .../stage/mutator/BorderMutatorTemplate.java | 6 +- .../stage/mutator/MutatorStageTemplate.java | 6 +- .../mutator/ReplaceListMutatorTemplate.java | 6 +- .../stage/mutator/ReplaceMutatorTemplate.java | 6 +- .../stage/mutator/SmoothMutatorTemplate.java | 4 +- .../loaders/palette/CarverPaletteLoader.java | 2 +- .../dfsek/terra/config/pack/ConfigPack.java | 4 +- .../config/pack/ConfigPackPostTemplate.java | 2 +- .../config/templates/CarverTemplate.java | 2 +- .../terra/config/templates/FloraTemplate.java | 2 +- .../terra/config/templates/OreTemplate.java | 2 +- .../terra/config/templates/TreeTemplate.java | 2 +- .../dfsek/terra/registry/AddonRegistry.java | 56 +++++++++++++++++ .../dfsek/terra/registry/ConfigRegistry.java | 2 +- .../dfsek/terra/registry/TerraRegistry.java | 5 ++ .../terra/registry/config/BiomeRegistry.java | 2 +- .../terra/registry/config/FloraRegistry.java | 2 +- .../com/dfsek/terra/world/TerraWorld.java | 4 +- .../generation/MasterChunkGenerator.java | 8 +-- .../terra/world/generation/math/Sampler.java | 2 +- .../interpolation/BiomeChunkInterpolator.java | 2 +- .../interpolation/ElevationInterpolator.java | 2 +- .../{ => world}/population/CavePopulator.java | 4 +- .../world/population/FloraPopulator.java | 6 +- .../terra/world/population/OrePopulator.java | 4 +- .../world/population/StructurePopulator.java | 4 +- .../terra/world/population/TreePopulator.java | 6 +- .../population/items/flora/ConstantFlora.java | 2 +- .../population/items/flora/TerraFlora.java | 2 +- .../items/ores/DeformedSphereOre.java | 2 +- .../world/population/items/ores/Ore.java | 2 +- .../population/items/ores/VanillaOre.java | 2 +- .../population/items/tree/TerraTree.java | 2 +- .../population/items/tree/TreeLayer.java | 2 +- .../src/test/java/biome/DistributionTest.java | 10 +++- common/src/test/java/biome/ImageTest.java | 6 +- common/src/test/java/event/EventTest.java | 10 +++- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 8 +++ .../command/command/biome/BiomeCommand.java | 4 +- .../command/biome/BiomeInfoCommand.java | 2 +- .../command/biome/BiomeLocateCommand.java | 2 +- .../structure/load/LoadFullCommand.java | 2 +- .../BukkitChunkGeneratorWrapper.java | 2 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 2 +- .../bukkit/src}/main/resources/lang/da.yml | 0 .../dfsek/terra/fabric/TerraFabricPlugin.java | 10 +++- .../dfsek/terra/fabric/world/FabricTree.java | 2 +- .../terra/fabric/world/TerraBiomeSource.java | 4 +- .../com/dfsek/terra/StandalonePlugin.java | 7 +++ 124 files changed, 483 insertions(+), 220 deletions(-) create mode 100644 common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/annotations/Author.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/annotations/Version.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/annotations/inject/Inject.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java create mode 100644 common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java create mode 100644 common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java rename common/src/main/java/com/dfsek/terra/{ => api}/util/hash/HashIntrinsic.java (99%) rename common/src/main/java/com/dfsek/terra/{ => api}/util/hash/HashMapDoubleDouble.java (99%) rename common/src/main/java/com/dfsek/terra/{util => api/util/world}/MaterialSet.java (94%) rename common/src/main/java/com/dfsek/terra/{util => api/util/world}/PaletteUtil.java (94%) rename common/src/main/java/com/dfsek/terra/{util => api/util/world}/PopulationUtil.java (91%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/TerraBiome.java (89%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/UserDefinedBiome.java (95%) create mode 100644 common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/BiomePipeline.java (91%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/TerraBiomeHolder.java (89%) create mode 100644 common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/expand/FractalExpander.java (81%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/mutator/BiomeMutator.java (75%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/mutator/BorderListMutator.java (94%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/mutator/BorderMutator.java (92%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/mutator/ReplaceListMutator.java (92%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/mutator/ReplaceMutator.java (88%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/mutator/SmoothMutator.java (90%) create mode 100644 common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/source/RandomSource.java (83%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/stages/ExpanderStage.java (68%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/pipeline/stages/MutatorStage.java (70%) create mode 100644 common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/provider/BiomeProvider.java (87%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/provider/ImageBiomeProvider.java (95%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/provider/SingleBiomeProvider.java (79%) rename common/src/main/java/com/dfsek/terra/{ => api/world}/biome/provider/StandardBiomeProvider.java (90%) delete mode 100644 common/src/main/java/com/dfsek/terra/biome/pipeline/BiomeHolder.java delete mode 100644 common/src/main/java/com/dfsek/terra/biome/pipeline/expand/BiomeExpander.java delete mode 100644 common/src/main/java/com/dfsek/terra/biome/pipeline/source/BiomeSource.java delete mode 100644 common/src/main/java/com/dfsek/terra/biome/pipeline/stages/Stage.java create mode 100644 common/src/main/java/com/dfsek/terra/registry/AddonRegistry.java rename common/src/main/java/com/dfsek/terra/{ => world}/population/CavePopulator.java (98%) rename {src => platforms/bukkit/src}/main/resources/lang/da.yml (100%) diff --git a/common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java b/common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java new file mode 100644 index 000000000..15a503b77 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.addon; + + +import com.dfsek.terra.addons.annotations.Addon; +import com.dfsek.terra.addons.annotations.Author; +import com.dfsek.terra.addons.annotations.Version; +import org.jetbrains.annotations.NotNull; + +public abstract class TerraAddon { + public final @NotNull String getVersion() { + Version version = getClass().getAnnotation(Version.class); + return version == null ? "0.1.0" : version.value(); + } + + public final @NotNull String getAuthor() { + Author author = getClass().getAnnotation(Author.class); + return author == null ? "Anon Y. Mous" : author.value(); + } + + public final @NotNull String getName() { + Addon addon = getClass().getAnnotation(Addon.class); + if(addon == null) throw new IllegalStateException("Addon annotation not present"); // This should never happen; the presence of this annotation is checked by the addon loader. + return addon.value(); + } + + /** + * Invoked immediately after an addon is loaded. + */ + public abstract void initialize(); +} diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java b/common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java new file mode 100644 index 000000000..aa0c3e2c1 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface Addon { + String value(); +} diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Author.java b/common/src/main/java/com/dfsek/terra/addons/annotations/Author.java new file mode 100644 index 000000000..4967706fa --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/annotations/Author.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface Author { + String value(); +} diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java b/common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java new file mode 100644 index 000000000..4e4e755f5 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface Depends { + String[] value(); +} diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Version.java b/common/src/main/java/com/dfsek/terra/addons/annotations/Version.java new file mode 100644 index 000000000..f4c08b936 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/annotations/Version.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface Version { + String value(); +} diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/inject/Inject.java b/common/src/main/java/com/dfsek/terra/addons/annotations/inject/Inject.java new file mode 100644 index 000000000..83552f4cc --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/annotations/inject/Inject.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.annotations.inject; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Inject { +} diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java b/common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java new file mode 100644 index 000000000..5cd20fd75 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java @@ -0,0 +1,60 @@ +package com.dfsek.terra.addons.loading; + +import com.dfsek.terra.addons.addon.TerraAddon; +import com.dfsek.terra.addons.annotations.Addon; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Set; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +public class AddonClassLoader extends URLClassLoader { + static { + ClassLoader.registerAsParallelCapable(); + } + + public AddonClassLoader(URL[] urls, ClassLoader parent) { + super(urls, parent); + } + + public AddonClassLoader(URL[] urls) { + super(urls); + } + + @SuppressWarnings("unchecked") + public static Set> fetchAddonClasses(File file) throws IOException { + JarFile jarFile = new JarFile(file); + Enumeration entries = jarFile.entries(); + + AddonClassLoader loader = new AddonClassLoader(new URL[] {file.toURI().toURL()}, AddonClassLoader.class.getClassLoader()); + + Set> set = new HashSet<>(); + while(entries.hasMoreElements()) { + JarEntry entry = entries.nextElement(); + + if(entry.isDirectory() || !entry.getName().endsWith(".class")) continue; + String className = entry.getName().substring(0, entry.getName().length() - 6).replace('/', '.'); + + try { + Class clazz = loader.loadClass(className); + + Addon addon = clazz.getAnnotation(Addon.class); + + if(addon == null) continue; + + if(!TerraAddon.class.isAssignableFrom(clazz)) throw new IllegalArgumentException("Addon class must extend TerraAddon."); + + set.add((Class) clazz); + } catch(ClassNotFoundException e) { + e.printStackTrace(); + } + } + + return set; + } +} diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java b/common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java new file mode 100644 index 000000000..45e8aa1b2 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.loading; + +public class AddonLoadException extends Exception { + public AddonLoadException(String message) { + super(message); + } + + public AddonLoadException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java b/common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java index 7fee3132f..7076afc2c 100644 --- a/common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java +++ b/common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.debug.DebugLogger; +import com.dfsek.terra.registry.AddonRegistry; import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; @@ -33,6 +34,8 @@ public interface TerraPlugin extends LoaderRegistrar { ConfigRegistry getRegistry(); + AddonRegistry getAddons(); + void reload(); ItemHandle getItemHandle(); @@ -41,7 +44,6 @@ public interface TerraPlugin extends LoaderRegistrar { String platformName(); - DebugLogger getDebugLogger(); EventManager getEventManager(); diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java b/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java new file mode 100644 index 000000000..afb523515 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.core.event.annotations; + +/** + * Specifies that an event handler is to handle all events. + */ +public @interface Global { +} diff --git a/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java b/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java index 3b51cdd48..f4a516375 100644 --- a/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java +++ b/common/src/main/java/com/dfsek/terra/api/math/paralithic/noise/NoiseFunction2.java @@ -1,7 +1,7 @@ package com.dfsek.terra.api.math.paralithic.noise; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.util.hash.HashMapDoubleDouble; +import com.dfsek.terra.api.util.hash.HashMapDoubleDouble; diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java index dd6a5bc0b..8e8640e98 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java @@ -10,8 +10,8 @@ import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.structure.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import net.jafama.FastMath; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index e82053b84..bc01fcd23 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -12,8 +12,8 @@ import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.structure.RotationUtil; import com.dfsek.terra.api.structures.tokenizer.Position; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.math.SamplerCache; diff --git a/common/src/main/java/com/dfsek/terra/util/hash/HashIntrinsic.java b/common/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java similarity index 99% rename from common/src/main/java/com/dfsek/terra/util/hash/HashIntrinsic.java rename to common/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java index 74166a7a8..638d8a66c 100644 --- a/common/src/main/java/com/dfsek/terra/util/hash/HashIntrinsic.java +++ b/common/src/main/java/com/dfsek/terra/api/util/hash/HashIntrinsic.java @@ -31,7 +31,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.dfsek.terra.util.hash; +package com.dfsek.terra.api.util.hash; import java.io.Serializable; diff --git a/common/src/main/java/com/dfsek/terra/util/hash/HashMapDoubleDouble.java b/common/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java similarity index 99% rename from common/src/main/java/com/dfsek/terra/util/hash/HashMapDoubleDouble.java rename to common/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java index 7ea6f735a..edad7aa32 100644 --- a/common/src/main/java/com/dfsek/terra/util/hash/HashMapDoubleDouble.java +++ b/common/src/main/java/com/dfsek/terra/api/util/hash/HashMapDoubleDouble.java @@ -31,7 +31,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.dfsek.terra.util.hash; +package com.dfsek.terra.api.util.hash; import java.io.Serializable; import java.util.NoSuchElementException; diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java index e2a9e0e3c..c64e4d17e 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java +++ b/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.seeded; -import com.dfsek.terra.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; public interface SourceSeeded extends SeededBuilder { } diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java index c9754c22f..093e54207 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java +++ b/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java @@ -1,6 +1,6 @@ package com.dfsek.terra.api.util.seeded; -import com.dfsek.terra.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.pipeline.stages.Stage; public interface StageSeeded extends SeededBuilder { } diff --git a/common/src/main/java/com/dfsek/terra/util/MaterialSet.java b/common/src/main/java/com/dfsek/terra/api/util/world/MaterialSet.java similarity index 94% rename from common/src/main/java/com/dfsek/terra/util/MaterialSet.java rename to common/src/main/java/com/dfsek/terra/api/util/world/MaterialSet.java index 455051d97..0e43ea827 100644 --- a/common/src/main/java/com/dfsek/terra/util/MaterialSet.java +++ b/common/src/main/java/com/dfsek/terra/api/util/world/MaterialSet.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.util; +package com.dfsek.terra.api.util.world; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.MaterialData; diff --git a/common/src/main/java/com/dfsek/terra/util/PaletteUtil.java b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java similarity index 94% rename from common/src/main/java/com/dfsek/terra/util/PaletteUtil.java rename to common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java index 77478effd..92e81aa57 100644 --- a/common/src/main/java/com/dfsek/terra/util/PaletteUtil.java +++ b/common/src/main/java/com/dfsek/terra/api/util/world/PaletteUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.util; +package com.dfsek.terra.api.util.world; import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.platform.block.BlockData; diff --git a/common/src/main/java/com/dfsek/terra/util/PopulationUtil.java b/common/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java similarity index 91% rename from common/src/main/java/com/dfsek/terra/util/PopulationUtil.java rename to common/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java index b260ae451..a1805d437 100644 --- a/common/src/main/java/com/dfsek/terra/util/PopulationUtil.java +++ b/common/src/main/java/com/dfsek/terra/api/util/world/PopulationUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.util; +package com.dfsek.terra.api.util.world; import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.platform.world.Chunk; diff --git a/common/src/main/java/com/dfsek/terra/biome/TerraBiome.java b/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java similarity index 89% rename from common/src/main/java/com/dfsek/terra/biome/TerraBiome.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 7bcb917de..1dcd5fdc7 100644 --- a/common/src/main/java/com/dfsek/terra/biome/TerraBiome.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -1,10 +1,9 @@ -package com.dfsek.terra.biome; +package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.world.biome.Generator; import java.util.Set; diff --git a/common/src/main/java/com/dfsek/terra/biome/UserDefinedBiome.java b/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java similarity index 95% rename from common/src/main/java/com/dfsek/terra/biome/UserDefinedBiome.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java index 99d768482..5f51ff5a7 100644 --- a/common/src/main/java/com/dfsek/terra/biome/UserDefinedBiome.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java @@ -1,9 +1,8 @@ -package com.dfsek.terra.biome; +package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.config.builder.GeneratorBuilder; import com.dfsek.terra.config.templates.BiomeTemplate; diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java new file mode 100644 index 000000000..46edff4c4 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomeHolder.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.api.world.biome.pipeline; + +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.expand.BiomeExpander; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; + +public interface BiomeHolder { + BiomeHolder expand(BiomeExpander expander); + + void mutate(BiomeMutator mutator); + + void fill(BiomeSource source); + + TerraBiome getBiome(int x, int z); + + TerraBiome getBiomeRaw(int x, int z); +} diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/BiomePipeline.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java similarity index 91% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/BiomePipeline.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java index a2bcb5df5..ed4211892 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/BiomePipeline.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/BiomePipeline.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.biome.pipeline; +package com.dfsek.terra.api.world.biome.pipeline; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.pipeline.stages.Stage; import java.util.List; import java.util.stream.Collectors; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/TerraBiomeHolder.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java similarity index 89% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/TerraBiomeHolder.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java index 9a44a8935..df07577c0 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/TerraBiomeHolder.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/TerraBiomeHolder.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.biome.pipeline; +package com.dfsek.terra.api.world.biome.pipeline; import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.expand.BiomeExpander; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.source.BiomeSource; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.expand.BiomeExpander; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource; public class TerraBiomeHolder implements BiomeHolder { private final Vector2 origin; diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java new file mode 100644 index 000000000..15082a0fe --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/BiomeExpander.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.biome.pipeline.expand; + +import com.dfsek.terra.api.world.biome.TerraBiome; + +public interface BiomeExpander { + TerraBiome getBetween(double x, double z, TerraBiome... others); +} diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/expand/FractalExpander.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java similarity index 81% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/expand/FractalExpander.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java index bba7b7931..a7d44be84 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/expand/FractalExpander.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/expand/FractalExpander.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.expand; +package com.dfsek.terra.api.world.biome.pipeline.expand; import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; public class FractalExpander implements BiomeExpander { private final NoiseSampler sampler; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BiomeMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java similarity index 75% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BiomeMutator.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java index 83cf9aa11..da70c3d9e 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BiomeMutator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BiomeMutator.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.pipeline.mutator; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; public interface BiomeMutator { TerraBiome mutate(ViewPoint viewPoint, double x, double z); diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BorderListMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java similarity index 94% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BorderListMutator.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java index cc5fdac47..5fcfc2e1a 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BorderListMutator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BorderMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java similarity index 92% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BorderMutator.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java index c5add13f0..15e7edcc9 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/BorderMutator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; public class BorderMutator implements BiomeMutator { private final String border; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/ReplaceListMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java similarity index 92% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/ReplaceListMutator.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java index 9a4e8de1e..ebd3ec5f2 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/ReplaceListMutator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/ReplaceMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java similarity index 88% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/ReplaceMutator.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java index 8cad6a777..b37657654 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/SmoothMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java similarity index 90% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/SmoothMutator.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java index 490f791d0..a3c679ea1 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/mutator/SmoothMutator.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/SmoothMutator.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.mutator; +package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.math.MathUtil; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import java.util.Objects; diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java new file mode 100644 index 000000000..81ab9c858 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/BiomeSource.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.biome.pipeline.source; + +import com.dfsek.terra.api.world.biome.TerraBiome; + +public interface BiomeSource { + TerraBiome getBiome(double x, double z); +} diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/source/RandomSource.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java similarity index 83% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/source/RandomSource.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java index e1a487e32..fa7b9fe01 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/source/RandomSource.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.biome.pipeline.source; +package com.dfsek.terra.api.world.biome.pipeline.source; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.noise.NoiseSampler; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; public class RandomSource implements BiomeSource { private final ProbabilityCollection biomes; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/ExpanderStage.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java similarity index 68% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/stages/ExpanderStage.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java index b8f26bf6c..fc0555e19 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/ExpanderStage.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/ExpanderStage.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.biome.pipeline.stages; +package com.dfsek.terra.api.world.biome.pipeline.stages; -import com.dfsek.terra.biome.pipeline.BiomeHolder; -import com.dfsek.terra.biome.pipeline.expand.BiomeExpander; +import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.pipeline.expand.BiomeExpander; public class ExpanderStage implements Stage { private final BiomeExpander expander; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/MutatorStage.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java similarity index 70% rename from common/src/main/java/com/dfsek/terra/biome/pipeline/stages/MutatorStage.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java index dab5b5f12..a9b060fd1 100644 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/MutatorStage.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/MutatorStage.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.biome.pipeline.stages; +package com.dfsek.terra.api.world.biome.pipeline.stages; -import com.dfsek.terra.biome.pipeline.BiomeHolder; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; public class MutatorStage implements Stage { private final BiomeMutator mutator; diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java new file mode 100644 index 000000000..a179da2eb --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/stages/Stage.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.world.biome.pipeline.stages; + +import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; + +public interface Stage { + boolean isExpansion(); + + BiomeHolder apply(BiomeHolder in); + +} diff --git a/common/src/main/java/com/dfsek/terra/biome/provider/BiomeProvider.java b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java similarity index 87% rename from common/src/main/java/com/dfsek/terra/biome/provider/BiomeProvider.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java index 9041edd85..c1f664314 100644 --- a/common/src/main/java/com/dfsek/terra/biome/provider/BiomeProvider.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/BiomeProvider.java @@ -1,9 +1,9 @@ -package com.dfsek.terra.biome.provider; +package com.dfsek.terra.api.world.biome.provider; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; public interface BiomeProvider { TerraBiome getBiome(int x, int z); diff --git a/common/src/main/java/com/dfsek/terra/biome/provider/ImageBiomeProvider.java b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java similarity index 95% rename from common/src/main/java/com/dfsek/terra/biome/provider/ImageBiomeProvider.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java index 2f2a6467e..5225d1432 100644 --- a/common/src/main/java/com/dfsek/terra/biome/provider/ImageBiomeProvider.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/ImageBiomeProvider.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.biome.provider; +package com.dfsek.terra.api.world.biome.provider; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.registry.TerraRegistry; import net.jafama.FastMath; diff --git a/common/src/main/java/com/dfsek/terra/biome/provider/SingleBiomeProvider.java b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java similarity index 79% rename from common/src/main/java/com/dfsek/terra/biome/provider/SingleBiomeProvider.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java index 1119788f6..6dc103cd6 100644 --- a/common/src/main/java/com/dfsek/terra/biome/provider/SingleBiomeProvider.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/SingleBiomeProvider.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.biome.provider; +package com.dfsek.terra.api.world.biome.provider; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; public class SingleBiomeProvider implements BiomeProvider, BiomeProvider.BiomeProviderBuilder { private final TerraBiome biome; diff --git a/common/src/main/java/com/dfsek/terra/biome/provider/StandardBiomeProvider.java b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java similarity index 90% rename from common/src/main/java/com/dfsek/terra/biome/provider/StandardBiomeProvider.java rename to common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java index f54c3c287..e53bd4749 100644 --- a/common/src/main/java/com/dfsek/terra/biome/provider/StandardBiomeProvider.java +++ b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.biome.provider; +package com.dfsek.terra.api.world.biome.provider; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.BiomeHolder; -import com.dfsek.terra.biome.pipeline.BiomePipeline; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.BiomeHolder; +import com.dfsek.terra.api.world.biome.pipeline.BiomePipeline; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java index 639fd7774..869ed9183 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.entity.Entity; import com.dfsek.terra.api.platform.entity.EntityType; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import java.util.Random; import java.util.function.Consumer; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java index d3b5fd463..359d59f1d 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java @@ -3,8 +3,8 @@ package com.dfsek.terra.api.world.tree.fractal.trees; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; -import com.dfsek.terra.util.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java index 5dbe76690..abbeb0f2b 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; import com.dfsek.terra.api.world.tree.fractal.TreeGeometry; -import com.dfsek.terra.util.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java index de8ad123b..a5502ee6a 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java @@ -4,9 +4,9 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; import com.dfsek.terra.api.world.tree.fractal.TreeGeometry; -import com.dfsek.terra.util.MaterialSet; import net.jafama.FastMath; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java index ed66b3d68..0bb915cd5 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java @@ -3,8 +3,8 @@ package com.dfsek.terra.api.world.tree.fractal.trees; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; -import com.dfsek.terra.util.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java index 0841d5e2f..2175df3c1 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; import com.dfsek.terra.api.world.tree.fractal.TreeGeometry; -import com.dfsek.terra.util.MaterialSet; import net.jafama.FastMath; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java index a06634e6d..a73c5dce9 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java @@ -3,8 +3,8 @@ package com.dfsek.terra.api.world.tree.fractal.trees; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; -import com.dfsek.terra.util.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java index c5094c61a..ce9fa2abf 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; import com.dfsek.terra.api.world.tree.fractal.TreeGeometry; -import com.dfsek.terra.util.MaterialSet; import net.jafama.FastMath; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java index 327c52706..eb51add0c 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java +++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java @@ -4,9 +4,9 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.fractal.FractalTree; import com.dfsek.terra.api.world.tree.fractal.TreeGeometry; -import com.dfsek.terra.util.MaterialSet; import net.jafama.FastMath; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java b/common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java index 3fd723abb..38b6662a3 100644 --- a/common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java +++ b/common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java @@ -3,8 +3,8 @@ package com.dfsek.terra.async; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; diff --git a/common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java b/common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java index 69869a861..b44afc711 100644 --- a/common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java +++ b/common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; diff --git a/common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java b/common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java index 89aa90344..4680da9fd 100644 --- a/common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java +++ b/common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java @@ -6,8 +6,8 @@ import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.world.population.items.TerraStructure; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/BiomeHolder.java b/common/src/main/java/com/dfsek/terra/biome/pipeline/BiomeHolder.java deleted file mode 100644 index 7e2fb6bfb..000000000 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/BiomeHolder.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.biome.pipeline; - -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.expand.BiomeExpander; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.source.BiomeSource; - -public interface BiomeHolder { - BiomeHolder expand(BiomeExpander expander); - - void mutate(BiomeMutator mutator); - - void fill(BiomeSource source); - - TerraBiome getBiome(int x, int z); - - TerraBiome getBiomeRaw(int x, int z); -} diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/expand/BiomeExpander.java b/common/src/main/java/com/dfsek/terra/biome/pipeline/expand/BiomeExpander.java deleted file mode 100644 index a3530ca70..000000000 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/expand/BiomeExpander.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.biome.pipeline.expand; - -import com.dfsek.terra.biome.TerraBiome; - -public interface BiomeExpander { - TerraBiome getBetween(double x, double z, TerraBiome... others); -} diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/source/BiomeSource.java b/common/src/main/java/com/dfsek/terra/biome/pipeline/source/BiomeSource.java deleted file mode 100644 index 80b0961c6..000000000 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/source/BiomeSource.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.biome.pipeline.source; - -import com.dfsek.terra.biome.TerraBiome; - -public interface BiomeSource { - TerraBiome getBiome(double x, double z); -} diff --git a/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/Stage.java b/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/Stage.java deleted file mode 100644 index 531313363..000000000 --- a/common/src/main/java/com/dfsek/terra/biome/pipeline/stages/Stage.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.biome.pipeline.stages; - -import com.dfsek.terra.biome.pipeline.BiomeHolder; - -public interface Stage { - boolean isExpansion(); - - BiomeHolder apply(BiomeHolder in); - -} diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/src/main/java/com/dfsek/terra/carving/CarverCache.java index 75a645aa0..fe379c53c 100644 --- a/common/src/main/java/com/dfsek/terra/carving/CarverCache.java +++ b/common/src/main/java/com/dfsek/terra/carving/CarverCache.java @@ -6,10 +6,10 @@ import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.carving.Worm; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java index 249c36957..937994d1d 100644 --- a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -3,7 +3,7 @@ package com.dfsek.terra.carving; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.MaterialData; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import java.util.Map; import java.util.TreeMap; diff --git a/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index 4c9a9a80a..e5fd230ab 100644 --- a/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -13,9 +13,9 @@ import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.carving.Carver; import com.dfsek.terra.api.world.carving.Worm; -import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; 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 52cdf965c..20549a829 100644 --- a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -10,12 +10,13 @@ import com.dfsek.terra.api.math.noise.samplers.ImageSampler; import com.dfsek.terra.api.math.noise.samplers.noise.CellularSampler; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; +import com.dfsek.terra.api.util.world.MaterialSet; +import com.dfsek.terra.api.world.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider; 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.biome.provider.BiomeProvider; -import com.dfsek.terra.biome.provider.ImageBiomeProvider; import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; @@ -44,7 +45,6 @@ import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.Normal import com.dfsek.terra.config.loaders.palette.CarverPaletteLoader; import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader; import com.dfsek.terra.config.loaders.palette.PaletteLayerLoader; -import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.flora.TerraFlora; import com.dfsek.terra.world.population.items.ores.Ore; 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 b4f09aa8c..f3e987b93 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 @@ -2,8 +2,8 @@ package com.dfsek.terra.config.factories; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.terra.api.core.TerraPlugin; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.config.builder.GeneratorBuilder; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.pack.ConfigPack; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index c06333917..4001a8589 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.platform.block.MaterialData; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import java.lang.reflect.Type; import java.util.List; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/src/main/java/com/dfsek/terra/config/loaders/Types.java index bb58ce950..206c6226a 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -3,10 +3,10 @@ package com.dfsek.terra.config.loaders; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.MaterialData; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.tree.Tree; -import com.dfsek.terra.biome.TerraBiome; import java.lang.reflect.Type; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java index d7f4d045f..1e45c5536 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/BiomeProviderBuilderLoader.java @@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.biome; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.config.loaders.config.biome.templates.source.BiomePipelineTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.source.ImageProviderTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.source.SingleBiomeProviderTemplate; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java index 03a8d5527..a7d2d61ed 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java @@ -6,8 +6,8 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.SourceSeeded; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.source.RandomSource; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.source.RandomSource; import com.dfsek.terra.config.loaders.Types; import java.lang.reflect.Type; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java index f173c1364..58c464fde 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/StageBuilderLoader.java @@ -4,8 +4,8 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.world.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.expander.ExpanderStageTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.BorderListMutatorTemplate; import com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator.BorderMutatorTemplate; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java index 46d810866..0e3195efb 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java @@ -5,9 +5,9 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.biome.pipeline.BiomePipeline; -import com.dfsek.terra.biome.provider.BiomeProvider; -import com.dfsek.terra.biome.provider.StandardBiomeProvider; +import com.dfsek.terra.api.world.biome.pipeline.BiomePipeline; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.StandardBiomeProvider; import com.dfsek.terra.registry.config.BiomeRegistry; import java.util.List; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomeProviderTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomeProviderTemplate.java index b0a65d85e..89b6d2b6c 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomeProviderTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomeProviderTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.registry.config.BiomeRegistry; public abstract class BiomeProviderTemplate implements ObjectTemplate, BiomeProvider.BiomeProviderBuilder { diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/ImageProviderTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/ImageProviderTemplate.java index e92379d7e..d9668b2ca 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/ImageProviderTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/ImageProviderTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.biome.provider.BiomeProvider; -import com.dfsek.terra.biome.provider.ImageBiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider; import com.dfsek.terra.registry.config.BiomeRegistry; import java.awt.image.BufferedImage; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SingleBiomeProviderTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SingleBiomeProviderTemplate.java index 811656cd4..4c7aa3279 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SingleBiomeProviderTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/SingleBiomeProviderTemplate.java @@ -1,9 +1,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; -import com.dfsek.terra.biome.provider.SingleBiomeProvider; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.SingleBiomeProvider; import com.dfsek.terra.registry.config.BiomeRegistry; public class SingleBiomeProviderTemplate extends BiomeProviderTemplate { diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java index 041185648..151eaedef 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/StageTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.SeededBuilder; import com.dfsek.terra.api.util.seeded.StageSeeded; -import com.dfsek.terra.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.pipeline.stages.Stage; public abstract class StageTemplate implements ObjectTemplate>, StageSeeded { @Value("noise") diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java index 0d25cdbc0..fb396ddbc 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/expander/ExpanderStageTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.expander; -import com.dfsek.terra.biome.pipeline.expand.FractalExpander; -import com.dfsek.terra.biome.pipeline.stages.ExpanderStage; -import com.dfsek.terra.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.pipeline.expand.FractalExpander; +import com.dfsek.terra.api.world.biome.pipeline.stages.ExpanderStage; +import com.dfsek.terra.api.world.biome.pipeline.stages.Stage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.StageTemplate; public class ExpanderStageTemplate extends StageTemplate { diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java index 3a10d7b47..b7eb95219 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java @@ -2,9 +2,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.ProbabilityCollection; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.mutator.BorderListMutator; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderListMutator; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java index 094c68dd6..6b06e8bcf 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java @@ -2,9 +2,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.ProbabilityCollection; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.mutator.BorderMutator; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator; @SuppressWarnings("unused") public class BorderMutatorTemplate extends MutatorStageTemplate { diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java index 47ea30afd..84283ffcc 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/MutatorStageTemplate.java @@ -1,8 +1,8 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.biome.pipeline.stages.Stage; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; +import com.dfsek.terra.api.world.biome.pipeline.stages.Stage; import com.dfsek.terra.config.loaders.config.biome.templates.stage.StageTemplate; public abstract class MutatorStageTemplate extends StageTemplate { diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java index 9ac41f078..52bfdf946 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java @@ -2,9 +2,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.ProbabilityCollection; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.mutator.ReplaceListMutator; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceListMutator; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java index 9239d4ddd..379b08137 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java @@ -2,9 +2,9 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.ProbabilityCollection; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.mutator.ReplaceMutator; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator; @SuppressWarnings("unused") public class ReplaceMutatorTemplate extends MutatorStageTemplate { diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java index c01d2dbd1..a5c27c54a 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/SmoothMutatorTemplate.java @@ -1,7 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; -import com.dfsek.terra.biome.pipeline.mutator.BiomeMutator; -import com.dfsek.terra.biome.pipeline.mutator.SmoothMutator; +import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator; +import com.dfsek.terra.api.world.biome.pipeline.mutator.SmoothMutator; public class SmoothMutatorTemplate extends MutatorStageTemplate { @Override diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index ed5bd12fb..26f12725e 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -6,9 +6,9 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.carving.CarverPalette; import com.dfsek.terra.config.loaders.Types; -import com.dfsek.terra.util.MaterialSet; import java.lang.reflect.Type; import java.util.List; diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java index d426c6748..7f36e01b6 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java @@ -13,11 +13,11 @@ import com.dfsek.terra.api.core.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.seeded.NoiseSeeded; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.tree.Tree; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.exception.FileMissingException; import com.dfsek.terra.config.factories.BiomeFactory; diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index 985740a1a..dd24def46 100644 --- a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; public class ConfigPackPostTemplate implements ConfigTemplate { @Value("biomes") diff --git a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java index 4f9bf1b12..b196852a1 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java @@ -5,8 +5,8 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.platform.block.MaterialData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.carving.CarverPalette; -import com.dfsek.terra.util.MaterialSet; import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java index 4ca624764..3b676bee8 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java @@ -3,8 +3,8 @@ package com.dfsek.terra.config.templates; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.world.population.items.flora.TerraFlora; import java.util.List; diff --git a/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index 9311baedf..7e56bab83 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.platform.block.BlockData; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.world.population.items.ores.Ore; @SuppressWarnings({"unused", "FieldMayBeFinal"}) diff --git a/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index 33702c5a4..07db47a1c 100644 --- a/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.structures.script.StructureScript; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; @SuppressWarnings({"unused", "FieldMayBeFinal"}) public class TreeTemplate extends AbstractableTemplate { diff --git a/common/src/main/java/com/dfsek/terra/registry/AddonRegistry.java b/common/src/main/java/com/dfsek/terra/registry/AddonRegistry.java new file mode 100644 index 000000000..4cbb26636 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/registry/AddonRegistry.java @@ -0,0 +1,56 @@ +package com.dfsek.terra.registry; + +import com.dfsek.terra.addons.addon.TerraAddon; +import com.dfsek.terra.addons.loading.AddonClassLoader; +import com.dfsek.terra.addons.loading.AddonLoadException; +import com.dfsek.terra.api.core.TerraPlugin; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Set; + +public class AddonRegistry extends TerraRegistry { + public boolean loadAll(TerraPlugin main) { + boolean valid = true; + File addonsFolder = new File(main.getDataFolder(), "addons"); + addonsFolder.mkdirs(); + for(File jar : addonsFolder.listFiles(file -> file.getName().endsWith(".jar"))) { + try { + main.getLogger().info("Loading Addon(s) from: " + jar.getName()); + load(jar, main); + } catch(IOException | AddonLoadException e) { + e.printStackTrace(); + valid = false; + } + } + return valid; + } + + public void load(File file, TerraPlugin main) throws AddonLoadException, IOException { + Set> addonClasses = AddonClassLoader.fetchAddonClasses(file); + + for(Class addonClass : addonClasses) { + Constructor constructor; + try { + constructor = addonClass.getConstructor(); + } catch(NoSuchMethodException e) { + throw new AddonLoadException("Addon class has no valid constructor: " + addonClass.getCanonicalName(), e); + } + TerraAddon addon; + try { + addon = constructor.newInstance(); + } catch(InstantiationException | IllegalAccessException | InvocationTargetException e) { + throw new AddonLoadException("Failed to instantiate addon: " + addonClass.getCanonicalName(), e); + } + try { + addChecked(addon.getName(), addon); + } catch(IllegalArgumentException e) { + throw new AddonLoadException("Duplicate addon ID; addon with ID " + addon.getName() + " is already loaded."); + } + main.getLogger().info("Loaded addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); + addon.initialize(); + } + } +} diff --git a/common/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java b/common/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java index 4f2dd1dd9..8532cf535 100644 --- a/common/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java @@ -29,7 +29,7 @@ public class ConfigRegistry extends TerraRegistry { valid = false; } } - for(File zip : packsFolder.listFiles(file -> file.getName().endsWith(".zip") || file.getName().endsWith(".jar") || file.getName().endsWith(".com.dfsek.terra"))) { + for(File zip : packsFolder.listFiles(file -> file.getName().endsWith(".zip") || file.getName().endsWith(".terra"))) { try { main.getDebugLogger().info("Loading ZIP archive: " + zip.getName()); load(new ZipFile(zip), main); diff --git a/common/src/main/java/com/dfsek/terra/registry/TerraRegistry.java b/common/src/main/java/com/dfsek/terra/registry/TerraRegistry.java index 5b25ca67d..71d9026b0 100644 --- a/common/src/main/java/com/dfsek/terra/registry/TerraRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/TerraRegistry.java @@ -36,6 +36,11 @@ public abstract class TerraRegistry implements TypeLoader { return exists; } + public void addChecked(String name, T value) { + if(objects.containsKey(name)) throw new IllegalArgumentException("Value is already defined in registry."); + objects.put(name, value); + } + /** * Check if the registry contains an object. * diff --git a/common/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java index 06aad4412..42a093961 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/BiomeRegistry.java @@ -2,7 +2,7 @@ package com.dfsek.terra.registry.config; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.registry.TerraRegistry; import java.lang.reflect.Type; diff --git a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java index e62f88b08..147e56a26 100644 --- a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java +++ b/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java @@ -3,9 +3,9 @@ package com.dfsek.terra.registry.config; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.MaterialData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.registry.TerraRegistry; -import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.world.population.items.flora.ConstantFlora; import java.util.Arrays; diff --git a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/src/main/java/com/dfsek/terra/world/TerraWorld.java index e9442141a..6a607008d 100644 --- a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java +++ b/common/src/main/java/com/dfsek/terra/world/TerraWorld.java @@ -7,9 +7,9 @@ import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.profiler.WorldProfiler; import com.dfsek.terra.world.generation.math.Sampler; diff --git a/common/src/main/java/com/dfsek/terra/world/generation/MasterChunkGenerator.java b/common/src/main/java/com/dfsek/terra/world/generation/MasterChunkGenerator.java index 4f74ccdb4..e51131e7c 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/MasterChunkGenerator.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/MasterChunkGenerator.java @@ -13,16 +13,16 @@ import com.dfsek.terra.api.platform.block.data.Waterlogged; import com.dfsek.terra.api.platform.world.BiomeGrid; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.generator.ChunkGenerator; +import com.dfsek.terra.api.util.world.PaletteUtil; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.SinglePalette; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.profiler.ProfileFuture; -import com.dfsek.terra.util.PaletteUtil; import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.carving.NoiseCarver; diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/Sampler.java b/common/src/main/java/com/dfsek/terra/world/generation/math/Sampler.java index 41de6b12d..2f2beb585 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/math/Sampler.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/math/Sampler.java @@ -1,7 +1,7 @@ package com.dfsek.terra.world.generation.math; import com.dfsek.terra.api.platform.world.World; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.world.generation.math.interpolation.BiomeChunkInterpolator; import com.dfsek.terra.world.generation.math.interpolation.ElevationInterpolator; import net.jafama.FastMath; diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/BiomeChunkInterpolator.java b/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/BiomeChunkInterpolator.java index fdb8fe31d..2561d9311 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/BiomeChunkInterpolator.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/BiomeChunkInterpolator.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import net.jafama.FastMath; import java.util.HashMap; diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java b/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java index 5e2d05910..330cafdc8 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java @@ -2,7 +2,7 @@ package com.dfsek.terra.world.generation.math.interpolation; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.world.generation.WorldGenerator; public class ElevationInterpolator { diff --git a/common/src/main/java/com/dfsek/terra/population/CavePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java similarity index 98% rename from common/src/main/java/com/dfsek/terra/population/CavePopulator.java rename to common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java index 720918abe..929d41626 100644 --- a/common/src/main/java/com/dfsek/terra/population/CavePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.population; +package com.dfsek.terra.world.population; import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; @@ -8,12 +8,12 @@ import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.CarverTemplate; import com.dfsek.terra.profiler.ProfileFuture; -import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.world.TerraWorld; import org.jetbrains.annotations.NotNull; diff --git a/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java index c1318f92b..4aeca61c2 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java @@ -4,11 +4,11 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.util.world.PopulationUtil; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.profiler.ProfileFuture; -import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.flora.FloraLayer; import org.jetbrains.annotations.NotNull; diff --git a/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index f4a60e2fc..1fdc5c961 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -6,9 +6,9 @@ import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.profiler.ProfileFuture; import com.dfsek.terra.world.TerraWorld; diff --git a/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index a266de3dd..d19fc1fa0 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -7,9 +7,9 @@ import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.profiler.ProfileFuture; import com.dfsek.terra.world.TerraWorld; diff --git a/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java index c88476971..1b14c80bd 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java +++ b/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java @@ -4,11 +4,11 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.World; +import com.dfsek.terra.api.util.world.PopulationUtil; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.api.world.generation.TerraBlockPopulator; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; import com.dfsek.terra.profiler.ProfileFuture; -import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.population.items.tree.TreeLayer; import net.jafama.FastMath; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java index 45669bc36..0559f61dd 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java @@ -7,8 +7,8 @@ import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.flora.Flora; -import com.dfsek.terra.util.MaterialSet; import java.util.List; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 4bb60eae1..c542e06b4 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -13,9 +13,9 @@ import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.palette.Palette; -import com.dfsek.terra.util.MaterialSet; import net.jafama.FastMath; import java.util.ArrayList; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java index 4396f8028..22c6bb193 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java @@ -8,7 +8,7 @@ import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java index 231b625a9..1115ce3c7 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java index 5c19f5246..a1b9b3b65 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.world.Chunk; -import com.dfsek.terra.util.MaterialSet; +import com.dfsek.terra.api.util.world.MaterialSet; import net.jafama.FastMath; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 7b24a9eb4..a0abe79aa 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.structure.Rotation; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.Tree; -import com.dfsek.terra.util.MaterialSet; import java.util.Random; diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index 461b633be..71bb5b077 100644 --- a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -7,8 +7,8 @@ import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.world.Chunk; +import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.world.tree.Tree; -import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { diff --git a/common/src/test/java/biome/DistributionTest.java b/common/src/test/java/biome/DistributionTest.java index 6ffe4da82..464c93a33 100644 --- a/common/src/test/java/biome/DistributionTest.java +++ b/common/src/test/java/biome/DistributionTest.java @@ -18,8 +18,8 @@ import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.fileloaders.FolderLoader; @@ -34,6 +34,7 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.debug.DebugLogger; +import com.dfsek.terra.registry.AddonRegistry; import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.registry.config.BiomeRegistry; import com.dfsek.terra.registry.config.NoiseRegistry; @@ -102,6 +103,11 @@ public class DistributionTest { return null; } + @Override + public AddonRegistry getAddons() { + return null; + } + @Override public void reload() { diff --git a/common/src/test/java/biome/ImageTest.java b/common/src/test/java/biome/ImageTest.java index 916a68c00..bf6a9460f 100644 --- a/common/src/test/java/biome/ImageTest.java +++ b/common/src/test/java/biome/ImageTest.java @@ -11,9 +11,9 @@ import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.platform.world.Biome; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.world.biome.Generator; -import com.dfsek.terra.biome.TerraBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; -import com.dfsek.terra.biome.provider.ImageBiomeProvider; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider; import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.templates.AbstractableTemplate; diff --git a/common/src/test/java/event/EventTest.java b/common/src/test/java/event/EventTest.java index 00f16f1ad..49299dc1a 100644 --- a/common/src/test/java/event/EventTest.java +++ b/common/src/test/java/event/EventTest.java @@ -2,17 +2,18 @@ package event; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.core.TerraPlugin; -import com.dfsek.terra.api.core.event.annotations.Priority; -import com.dfsek.terra.api.core.event.events.Event; import com.dfsek.terra.api.core.event.EventListener; import com.dfsek.terra.api.core.event.EventManager; import com.dfsek.terra.api.core.event.TerraEventManager; +import com.dfsek.terra.api.core.event.annotations.Priority; +import com.dfsek.terra.api.core.event.events.Event; import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.debug.DebugLogger; +import com.dfsek.terra.registry.AddonRegistry; import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; import org.junit.jupiter.api.Test; @@ -70,6 +71,11 @@ public class EventTest { return null; } + @Override + public AddonRegistry getAddons() { + return null; + } + @Override public void reload() { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 5e2a75f4a..02c7af250 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -27,6 +27,7 @@ import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.debug.DebugLogger; +import com.dfsek.terra.registry.AddonRegistry; import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.generation.MasterChunkGenerator; @@ -55,6 +56,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { private WorldHandle handle = new BukkitWorldHandle(); private final GenericLoaders genericLoaders = new GenericLoaders(this); private DebugLogger debugLogger; + private final AddonRegistry addonRegistry = new AddonRegistry(); private final EventManager eventManager = new TerraEventManager(this); @@ -136,6 +138,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { LangUtil.load(config.getLanguage(), this); // Load language. debugLogger.setDebug(isDebug()); + addonRegistry.loadAll(this); registry.loadAll(this); // Load all config packs. PluginCommand c = Objects.requireNonNull(getCommand("terra")); @@ -245,6 +248,11 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { genericLoaders.register(registry); } + @Override + public AddonRegistry getAddons() { + return addonRegistry; + } + public enum Version { V1_13(13), diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java index 254550157..216897347 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java @@ -1,7 +1,7 @@ package com.dfsek.terra.bukkit.command.command.biome; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.bukkit.command.WorldCommand; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.config.lang.LangUtil; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java index 636907691..c3faf300c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit.command.command.biome; -import com.dfsek.terra.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.command.WorldCommand; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java index 17d1abf59..07b07e451 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.command.command.biome; import com.dfsek.terra.api.math.vector.Vector3; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.async.AsyncBiomeFinder; -import com.dfsek.terra.biome.TerraBiome; import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.command.WorldCommand; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/load/LoadFullCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/load/LoadFullCommand.java index 0bbf7969a..33ab614a6 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/load/LoadFullCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/load/LoadFullCommand.java @@ -4,10 +4,10 @@ import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.structure.Rotation; import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.bukkit.command.DebugCommand; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitChunk; -import com.dfsek.terra.util.PopulationUtil; import com.dfsek.terra.world.TerraWorld; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index b8bb83839..81e305834 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -9,10 +9,10 @@ import com.dfsek.terra.bukkit.population.PopulationManager; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitBiomeGrid; import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.population.CavePopulator; import com.dfsek.terra.profiler.DataType; import com.dfsek.terra.profiler.Measurement; import com.dfsek.terra.world.TerraWorld; +import com.dfsek.terra.world.population.CavePopulator; import com.dfsek.terra.world.population.FloraPopulator; import com.dfsek.terra.world.population.OrePopulator; import com.dfsek.terra.world.population.StructurePopulator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java index db12c9c18..ecf87d1e9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java @@ -4,8 +4,8 @@ import com.dfsek.terra.api.core.TerraPlugin; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.handle.WorldHandle; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.Tree; -import com.dfsek.terra.util.MaterialSet; import org.bukkit.TreeType; import java.util.Random; diff --git a/src/main/resources/lang/da.yml b/platforms/bukkit/src/main/resources/lang/da.yml similarity index 100% rename from src/main/resources/lang/da.yml rename to platforms/bukkit/src/main/resources/lang/da.yml diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 822902e40..0f768541e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -12,7 +12,7 @@ import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.transform.MapTransform; import com.dfsek.terra.api.transform.NotNullValidator; import com.dfsek.terra.api.transform.Transformer; -import com.dfsek.terra.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.lang.LangUtil; @@ -26,6 +26,7 @@ import com.dfsek.terra.fabric.world.FabricWorldHandle; import com.dfsek.terra.fabric.world.TerraBiomeSource; import com.dfsek.terra.fabric.world.features.PopulatorFeature; import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper; +import com.dfsek.terra.registry.AddonRegistry; import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; import net.fabricmc.api.EnvType; @@ -85,6 +86,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { private final ItemHandle itemHandle = new FabricItemHandle(); private final WorldHandle worldHandle = new FabricWorldHandle(); private final ConfigRegistry registry = new ConfigRegistry(); + + private final AddonRegistry addonRegistry = new AddonRegistry(); private File config; private static final Transformer> TREE_TRANSFORMER = new Transformer.Builder>() .addTransform(TerraFabricPlugin::getFeature) @@ -162,6 +165,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { return registry; } + @Override + public AddonRegistry getAddons() { + return addonRegistry; + } + @Override public void reload() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java index 603202480..b5bbabccc 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java @@ -2,11 +2,11 @@ package com.dfsek.terra.fabric.world; import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.platform.block.MaterialData; +import com.dfsek.terra.api.util.world.MaterialSet; import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator; import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess; -import com.dfsek.terra.util.MaterialSet; import net.minecraft.util.math.BlockPos; import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java index 8cc0dee3d..f73c0f16d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java @@ -1,7 +1,7 @@ package com.dfsek.terra.fabric.world; -import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.biome.provider.BiomeProvider; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; +import com.dfsek.terra.api.world.biome.provider.BiomeProvider; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.mojang.serialization.Codec; diff --git a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java index c933025c0..93b46810e 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -17,6 +17,7 @@ import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.debug.DebugLogger; import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawWorldHandle; +import com.dfsek.terra.registry.AddonRegistry; import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.world.TerraWorld; @@ -26,6 +27,7 @@ import java.util.logging.Logger; public class StandalonePlugin implements TerraPlugin { private final ConfigRegistry registry = new ConfigRegistry(); + private final AddonRegistry addonRegistry = new AddonRegistry(); private final PluginConfig config = new PluginConfig(); private final RawWorldHandle worldHandle = new RawWorldHandle(); private final EventManager eventManager = new TerraEventManager(this); @@ -79,6 +81,11 @@ public class StandalonePlugin implements TerraPlugin { return registry; } + @Override + public AddonRegistry getAddons() { + return addonRegistry; + } + @Override public void reload() { throw new UnsupportedOperationException();