diff --git a/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java new file mode 100644 index 000000000..801827388 --- /dev/null +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.chunkgenerator; + +import com.dfsek.terra.addons.chunkgenerator.generation.generators.DefaultChunkGenerator3D; +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Author; +import com.dfsek.terra.api.addon.annotations.Version; +import com.dfsek.terra.api.event.EventListener; +import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; + +@Addon("noise-chunk-generator-3d") +@Author("Terra") +@Version("1.0.0") +public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { + event.getPack().getCheckedRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new DefaultChunkGenerator3D(pack, main)); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java similarity index 93% rename from common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java index d55083238..140ce2d18 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/util/PaletteUtil.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.api.util; +package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/DefaultChunkGenerator3D.java similarity index 88% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/DefaultChunkGenerator3D.java index bf5497052..7d183bc6b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/DefaultChunkGenerator3D.java @@ -1,15 +1,13 @@ -package com.dfsek.terra.world.generation.generators; +package com.dfsek.terra.addons.chunkgenerator.generation.generators; +import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; +import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.base.Properties; import com.dfsek.terra.api.block.state.properties.enums.Direction; -import com.dfsek.terra.api.block.state.properties.enums.Half; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.PaletteUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; @@ -18,18 +16,13 @@ import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator; -import com.dfsek.terra.world.Carver; -import com.dfsek.terra.world.carving.NoiseCarver; -import com.dfsek.terra.world.generation.math.samplers.Sampler3D; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Random; public class DefaultChunkGenerator3D implements TerraChunkGenerator { @@ -37,13 +30,9 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { private final TerraPlugin main; private final List blockPopulators = new ArrayList<>(); - private final Carver carver; - public DefaultChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; - - carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); } @Override @@ -104,9 +93,6 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator { } } } - if(configPack.doBetaCarvers()) { - carver.carve(world, chunkX, chunkZ, chunk); - } return chunk; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SamplerCacheImpl.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SamplerCacheImpl.java index 01b1e68fd..7ce9cf90f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/SamplerCacheImpl.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SamplerCacheImpl.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.generation.math; +package com.dfsek.terra.addons.chunkgenerator.generation.math; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java index 257dbbd32..96ea6be8d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator2D.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java @@ -1,10 +1,11 @@ -package com.dfsek.terra.world.generation.math.interpolation; +package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.ChunkInterpolator; import net.jafama.FastMath; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java similarity index 96% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java index b7a94d51e..d9879eaed 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java @@ -1,10 +1,11 @@ -package com.dfsek.terra.world.generation.math.interpolation; +package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.generator.ChunkInterpolator; import net.jafama.FastMath; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java index b65efe531..bebd34b96 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ElevationInterpolator.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.generation.math.interpolation; +package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.Generator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java index bf002e8a4..37bc0eb76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.generation.math.interpolation; +package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; /** * Class for bilinear interpolation of values arranged on a unit square. diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java index c7a7c0275..ddedc713b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/Interpolator3.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.generation.math.interpolation; +package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; /** * Class for bilinear interpolation of values arranged on a unit square. diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java similarity index 80% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java rename to common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java index ea1113195..1a915cb6d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler3D.java +++ b/common/addons/chunk-generator/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.world.generation.math.samplers; +package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.Sampler; -import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator3D; -import com.dfsek.terra.world.generation.math.interpolation.ElevationInterpolator; +import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator3D; +import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; import net.jafama.FastMath; public class Sampler3D implements Sampler { diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index 9a856fe10..d842a799f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -8,6 +8,7 @@ import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder; +import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import java.util.Map; import java.util.Set; @@ -46,4 +47,6 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde boolean vanillaFlora(); RegistryFactory getRegistryFactory(); + + ChunkGeneratorProvider getGeneratorProvider(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java b/common/api/src/main/java/com/dfsek/terra/api/world/Carver.java similarity index 84% rename from common/implementation/src/main/java/com/dfsek/terra/world/Carver.java rename to common/api/src/main/java/com/dfsek/terra/api/world/Carver.java index c8d13998a..9697243d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/Carver.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/Carver.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world; +package com.dfsek.terra.api.world; import com.dfsek.terra.api.world.ChunkAccess; import com.dfsek.terra.api.world.World; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java index e68f79444..7f3e71443 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java @@ -3,5 +3,5 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.config.ConfigPack; public interface ChunkGeneratorProvider { - ChunkGenerator newInstance(ConfigPack pack); + TerraChunkGenerator newInstance(ConfigPack pack); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java similarity index 95% rename from common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java rename to common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java index a17757c9f..444dc5b6e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.world.generation.math.interpolation; +package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.world.biome.Generator; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java b/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java index ebead4666..aa537e5e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java @@ -5,8 +5,8 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.ChunkAccess; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.world.Carver; -import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator; +import com.dfsek.terra.api.world.Carver; +import com.dfsek.terra.api.world.generator.ChunkInterpolator; import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator3D; public class NoiseCarver implements Carver { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java b/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java deleted file mode 100644 index 8e0105127..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/world/generation/math/samplers/Sampler2D.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.world.generation.math.samplers; - -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.Sampler; -import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator2D; -import com.dfsek.terra.world.generation.math.interpolation.ElevationInterpolator; -import net.jafama.FastMath; - -public class Sampler2D implements Sampler { - private final ChunkInterpolator2D interpolator; - private final ElevationInterpolator elevationInterpolator; - - public Sampler2D(int x, int z, BiomeProvider provider, World world, int elevationSmooth) { - this.interpolator = new ChunkInterpolator2D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler().getNoise(coord)); - this.elevationInterpolator = new ElevationInterpolator(world, x, z, provider, elevationSmooth); - } - - @Override - public double sample(double x, double y, double z) { - return interpolator.getNoise(x, 0, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); - } - - @Override - public double sample(int x, int y, int z) { - return interpolator.getNoise(x, 0, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); - } -} 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 e953db16f..282400c48 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 @@ -10,7 +10,6 @@ import com.dfsek.terra.api.addon.annotations.Author; import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.command.CommandManager; -import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; @@ -42,6 +41,7 @@ import com.dfsek.terra.bukkit.util.PaperUtil; import com.dfsek.terra.bukkit.world.BukkitBiome; import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.commands.CommandUtil; +import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; @@ -51,7 +51,6 @@ import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.world.TerraWorldImpl; -import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; import io.papermc.lib.PaperLib; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -69,7 +68,7 @@ import java.util.Objects; public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { - private final Map generatorMap = new HashMap<>(); + private final Map generatorMap = new HashMap<>(); private final Map worldMap = new HashMap<>(); private final Map worlds = new HashMap<>(); @@ -127,16 +126,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { return "Bukkit"; } - public void setHandle(WorldHandle handle) { - getLogger().warning("|-------------------------------------------------------|"); - getLogger().warning("A third-party com.dfsek.terra.addon has injected a custom WorldHandle!"); - getLogger().warning("If you encounter issues, try *without* the com.dfsek.terra.addon before"); - getLogger().warning("reporting to Terra. Report issues with the com.dfsek.terra.addon to the"); - getLogger().warning("com.dfsek.terra.addon's maintainers!"); - getLogger().warning("|-------------------------------------------------------|"); - this.handle = handle; - } - @Override public DebugLogger getDebugLogger() { return debugLogger; @@ -258,7 +247,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { if(!registry.contains(id)) throw new IllegalArgumentException("No such config pack \"" + id + "\""); ConfigPack pack = registry.get(id); worlds.put(worldName, pack); - return new DefaultChunkGenerator3D(registry.get(id), this); + return pack.getGeneratorProvider().newInstance(pack); })); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index ac8aa02b9..0f2d66d17 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -11,7 +11,6 @@ import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; -import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.block.BlockState; @@ -62,7 +61,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener ); private final long seed; - private final DefaultChunkGenerator3D delegate; + private final TerraChunkGenerator delegate; private final TerraBiomeSource biomeSource; private final ConfigPack pack; @@ -72,7 +71,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener super(biomeSource, new StructuresConfig(false)); this.pack = configPack; - this.delegate = new DefaultChunkGenerator3D(pack, TerraFabricPlugin.getInstance()); + this.delegate = pack.getGeneratorProvider().newInstance(pack); delegate.getMain().logger().info("Loading world with config pack " + pack.getID()); this.biomeSource = biomeSource; diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/GenWrapper.java b/platforms/region/src/main/java/com/dfsek/terra/platform/GenWrapper.java index b4ec0a5c3..a093ebe95 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/GenWrapper.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/GenWrapper.java @@ -1,12 +1,12 @@ package com.dfsek.terra.platform; import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; public class GenWrapper implements ChunkGenerator { - private final DefaultChunkGenerator3D generator; + private final TerraChunkGenerator generator; - public GenWrapper(DefaultChunkGenerator3D generator) { + public GenWrapper(TerraChunkGenerator generator) { this.generator = generator; } diff --git a/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java b/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java index e193e07f5..2d2935876 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java +++ b/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java @@ -1,10 +1,10 @@ package com.dfsek.terra.region; import com.dfsek.terra.StandalonePlugin; +import com.dfsek.terra.api.world.generator.TerraChunkGenerator; import com.dfsek.terra.platform.DirectChunkData; import com.dfsek.terra.platform.DirectWorld; import com.dfsek.terra.platform.GenWrapper; -import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; import com.dfsek.terra.world.population.FloraPopulator; import com.dfsek.terra.world.population.OrePopulator; import com.dfsek.terra.world.population.StructurePopulator; @@ -22,7 +22,7 @@ public class Generator { StructurePopulator structurePopulator; TreePopulator treePopulator; OrePopulator orePopulator; - DefaultChunkGenerator3D generator; + TerraChunkGenerator generator; public Generator(long seed, StandalonePlugin plugin) { plugin.load(); @@ -30,7 +30,7 @@ public class Generator { structurePopulator = new StructurePopulator(plugin); treePopulator = new TreePopulator(plugin); orePopulator = new OrePopulator(plugin); - generator = new DefaultChunkGenerator3D(plugin.getConfigRegistry().get("DEFAULT"), plugin); + //generator = new DefaultChunkGenerator3D(plugin.getConfigRegistry().get("DEFAULT"), plugin); this.seed = seed; }